diff --git a/.github/Dockerfile b/.github/Dockerfile new file mode 100644 index 000000000..d628a1af5 --- /dev/null +++ b/.github/Dockerfile @@ -0,0 +1,26 @@ +FROM ubuntu:18.04 + +# Add repos +RUN sudo apt update +RUN sudo apt install software-properties-common +RUN add-apt-repository ppa:avsm/ppa + +RUN sudo apt update +RUN sudo apt install -y clang libssl-dev ninja-build wget make curl opam + +# Install OCaml +RUN opam init -y --disable-sandboxing +RUN eval $(opam config env) +RUN opam install -y dune core menhir + +# Install CMAKE +RUN wget https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1.tar.gz +RUN tar -xf cmake-3.23.1.tar.gz +RUN cd cmake-3.23.1 +RUN ./configure +RUN make +RUN make install + +# Install Rust +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \ + sh -s -- --default-toolchain nightly -y diff --git a/.github/continuous-integration.sh b/.github/continuous-integration.sh index 8a25baf5e..58a7f4fdb 100755 --- a/.github/continuous-integration.sh +++ b/.github/continuous-integration.sh @@ -58,8 +58,8 @@ function run-mlir-tests { run-step ninja -C $ARC_MLIR_BUILD/llvm-build/ check-arc-mlir } -function run-runtime-tests { - cd arc-runtime +function run-lang-tests { + cd arc-lang run-step arc-cargo "$@" } @@ -123,8 +123,8 @@ case $1 in ;; cargo) - # We assume this is a arc-runtime cargo command line + # We assume this is a arc-sys cargo command line shift - run-runtime-tests "$@" + run-sys-tests "$@" ;; esac diff --git a/.github/workflows/arc-mlir-broken-links.yml b/.github/workflows/arc-mlir-broken-links.yml index 32910510e..7074f9c1f 100644 --- a/.github/workflows/arc-mlir-broken-links.yml +++ b/.github/workflows/arc-mlir-broken-links.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Checkout source - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Update submodule run: git submodule update --force --init --recursive diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 6c02d4ba3..523b22d7e 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -15,11 +15,11 @@ env: jobs: build-deploy: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Checkout source - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Update apt index run: sudo apt-get update @@ -29,44 +29,66 @@ jobs: - name: Install Cargo nightly uses: actions-rs/toolchain@v1 with: - toolchain: nightly + toolchain: stable override: true - - name: Cache arc-preprocessor - id: cache-arc-preprocessor - uses: actions/cache@v2 + - name: Cache mdbook-arc-lang + id: cache-mdbook-arc-lang + uses: actions/cache@v3 with: - path: arc-docs/arc-preprocessor/target - key: ${{ runner.os }}-cargo-${{ hashFiles('arc-docs/arc-preprocessor/**') }} + path: ~/.cargo/bin/mdbook-arc-lang + key: ${{ runner.os }}-${{ hashFiles('arc-lang/crates/book/mdbook-arc-lang/**') }} + + - name: Cache mdbook-grammar + id: cache-mdbook-grammar + uses: actions/cache@v3 + with: + path: ~/.cargo/bin/mdbook-grammar + key: ${{ runner.os }}-${{ hashFiles('arc-lang/crates/book/mdbook-grammar/**') }} + + - name: Cache mdbook-exec + id: cache-mdbook-exec + uses: actions/cache@v3 + with: + path: ~/.cargo/bin/mdbook-exec + key: ${{ runner.os }}-${{ hashFiles('arc-lang/crates/book/mdbook-exec/**') }} - name: Cache mdbook-bib id: cache-mdbook-bib - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.cargo/bin/mdbook-bib - key: ${{ runner.os }}-cargo-${{ env.MDBOOK_BIB_VERSION }} + key: ${{ runner.os }}-${{ env.MDBOOK_BIB_VERSION }} - name: Cache mdbook-linkcheck id: cache-mdbook-linkcheck - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.cargo/bin/mdbook-linkcheck - key: ${{ runner.os }}-cargo-${{ env.MDBOOK_LINKCHECK_VERSION }} + key: ${{ runner.os }}-${{ env.MDBOOK_LINKCHECK_VERSION }} - name: Cache zola id: cache-zola - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.cargo/bin/zola - key: ${{ runner.os }}-cargo-${{ env.ZOLA_VERSION }} + key: ${{ runner.os }}-${{ env.ZOLA_VERSION }} - - name: Build arc-preprocessor - if: steps.cache-arc-preprocessor.outputs.cache-hit != 'true' - run: cargo build --manifest-path arc-docs/arc-preprocessor/Cargo.toml + - name: Build mdbook-arc-lang + if: steps.cache-mdbook-arc-lang.outputs.cache-hit != 'true' + run: cargo install --path arc-lang/crates/book/mdbook-arc-lang + + - name: Build mdbook-grammar + if: steps.cache-mdbook-grammar.outputs.cache-hit != 'true' + run: cargo install --path arc-lang/crates/book/mdbook-grammar + + - name: Build mdbook-exec + if: steps.cache-mdbook-exec.outputs.cache-hit != 'true' + run: cargo install --path arc-lang/crates/book/mdbook-exec - name: Build mdbook-bib if: steps.cache-mdbook-bib.outputs.cache-hit != 'true' - run: cargo install mdbook-bib --version=${{ env.MDBOOK_BIB_VERSION }} + run: cargo install mdbook-bib --version=${{ env.MDBOOK_BIB_VERSION }} --features="log/max_level_warn" - name: Build mdbook-linkcheck if: steps.cache-mdbook-linkcheck.outputs.cache-hit != 'true' @@ -74,46 +96,26 @@ jobs: - name: Build zola if: steps.cache-zola.outputs.cache-hit != 'true' - run: | - git clone https://github.com/getzola/zola.git - git -C zola checkout ad6c83412391dd748d4a9d8f3a0568687e73a447 - cargo install --path=zola --version=${{ env.ZOLA_VERSION }} zola - - # ---- arc-report ---- - - - name: Install LaTeX dependencies - run: sudo apt-get install texlive-xetex latexmk texlive-bibtex-extra biber - - - name: Build arc-report - run: make -C arc-report - - # ---- arc-docs ---- - - - name: Setup mdbook - uses: peaceiris/actions-mdbook@v1 - with: - mdbook-version: '0.4.15' - - - name: Build arc-docs - run: make -C arc-docs build + run: cargo install --git https://github.com/getzola/zola.git \ + --rev ad6c83412391dd748d4a9d8f3a0568687e73a447 \ + --version=${{ env.ZOLA_VERSION }} - # ---- arc-website ---- + # ---- website ---- - - name: Move artifacts to arc-website + - name: Move book to website run: | - mkdir arc-website/static - mv arc-report/target/main.pdf arc-website/static/Arc-Report.pdf - mv arc-docs/target/html arc-website/static/docs + mkdir -p arc-lang/crates/website/zola/static + mv arc-lang/target/mdbook/target/html arc-lang/crates/website/zola/static/book - - name: Update arc-website theme submodule + - name: Update website theme submodule run: | - git submodule update --init arc-website/themes/adidoks - mkdir -p arc-website/templates - cp arc-website/themes/adidoks/templates/blog/page.html \ - arc-website/templates/blog.html + git submodule update --init arc-lang/crates/website/zola/themes/adidoks + mkdir -p arc-lang/crates/website/zola/templates + cp arc-lang/crates/website/zola/themes/adidoks/templates/blog/page.html \ + arc-lang/crates/website/zola/templates/blog.html - - name: Build arc-website - run: make -C arc-website build + - name: Build website + run: cargo run --manifest-path arc-lang/Cargo.toml --package=website - name: Deploy to gh-pages uses: peaceiris/actions-gh-pages@v3 @@ -123,5 +125,5 @@ jobs: github.ref == 'refs/heads/master' with: deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} - publish_dir: arc-website/target + publish_dir: arc-lang/target/website force_orphan: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6d13bcc9e..ad44b73af 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: # target: x86_64-apple-darwin steps: - name: Checkout source - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: submodules: 'recursive' @@ -44,7 +44,7 @@ jobs: mv README.md "$package" mv arc-mlir/build/llvm-build/bin/{arc,arc-lang,arc-mlir} "$package/bin" - mv {arc-runtime,arc-lang/stdlib} "$package/share" + mv {arc-lang/stdlib} "$package/share" tar cvf "$package.tar" "$package" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 725a9f613..6a158a04b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,8 +5,6 @@ on: paths: - "arc-lang/**" - "arc-mlir/**" - - "arc-runtime/**" - - "arc-python/**" - "build" - ".github/workflows/test.yml" branches: @@ -25,7 +23,7 @@ jobs: # Checkout branch which we want to test - name: Checkout source - uses: actions/checkout@v2 + uses: actions/checkout@v3 # Update LLVM dependency - name: Update submodule @@ -41,29 +39,14 @@ jobs: env: ARC_MLIR_BUILD: ${{ format('{0}/build', runner.temp) }} - - name: Pre-build arc-runtime - run: ./.github/continuous-integration.sh cargo test - env: - ARC_MLIR_BUILD: ${{ format('{0}/build', runner.temp) }} - - name: Run MLIR tests run: ./.github/continuous-integration.sh run-mlir-tests env: ARC_MLIR_BUILD: ${{ format('{0}/build', runner.temp) }} - - name: "Run arc-runtime test: clippy" - run: ./.github/continuous-integration.sh cargo clippy - env: - ARC_MLIR_BUILD: ${{ format('{0}/build', runner.temp) }} - - name: "Ccache/Sccache statistics" run: ./.github/continuous-integration.sh check-ccache -# - name: "Run arc-runtime test: fmt -- -v --check" -# run: ./.github/continuous-integration.sh cargo fmt -- -v --check -# env: -# ARC_MLIR_BUILD: ${{ format('{0}/build', runner.temp) }} - - name: Check for dirty tree run: ./check-for-dirty-tree diff --git a/.gitignore b/.gitignore index 51900d951..922652e9f 100644 --- a/.gitignore +++ b/.gitignore @@ -163,3 +163,9 @@ book/ # zola static/ + +# JavaScript +node_modules/ + +arc-lang/examples/input/csv +arc-lang/examples/input/jpg diff --git a/.gitmodules b/.gitmodules index 3b14c27ef..1601a64e0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,6 +7,6 @@ [submodule "arc-mlir/corrosion"] path = arc-mlir/src/corrosion url = https://github.com/AndrewGaspar/corrosion.git -[submodule "arc-website/themes/adidoks"] - path = arc-website/themes/adidoks - url = https://github.com/aaranxu/adidoks.git +[submodule "arc-lang/crates/website/themes/juice"] + path = arc-lang/crates/website/themes/juice + url = https://github.com/huhu/juice.git diff --git a/README.md b/README.md index 9d192728e..0f66769d1 100644 --- a/README.md +++ b/README.md @@ -11,47 +11,23 @@ OCaml (and dune), Rust (and cargo), and C++ (and CMake and Ninja). ## Examples -A basic streaming word-count application can be written in functional-style as follows: -``` -val wordcounts = lines - .flatmap(_.split(" ")) - .keyby(_) - .window( - length = 10min, - stride = 3min - ) - .count() -``` - -The same code can also be written using a more declarative, relational-style, syntax. This concept is borrowed from [Morel](https://github.com/julianhyde/morel) and applied to streaming data. +A streaming word-count application can be implemented in Arc-Lang as follows. ``` -val wordcounts = - from - line in lines, - word in line.split(" ") - keyby word - window - length = 10min - stride = 3min - reduce count - identity 1; +def main() = + from line: String in source(topic: "text"), + word in line.split(" ") { + group word + window count as w { + length 10min + step 3min + compute count + } + select {word, w.count} + into sink(topic: "wordcount") + } ``` -## Feature highlights - -* Statically typed with global type inference. -* Parametric polymorphism (generics and rows) and ad-hoc polymorphism (type classes). -* Mix of functional syntax, imperative control-flow/mutation, and relational operators. -* Algebraic data types. -* First-class data streams. -* Complex event processing using tasks. -* Window-based computation. -* Low-level compilation and distributed execution. -* Command-line interface for data ingestion. - -Note: All features have not yet been implemented :) - ## Installation ```bash @@ -71,13 +47,7 @@ git submodule update --init --recursive * [`arc-lang`](https://github.com/cda-group/arc/tree/master/arc-lang) - A compiler for Arc-Lang. * [`arc-mlir`](https://github.com/cda-group/arc/tree/master/arc-mlir) - An optimizer for Arc-Lang. -* [`arc-runtime`](https://github.com/cda-group/arc/tree/master/arc-runtime) - A local runtime which supports the execution of Arc-Lang programs. -* [`arc-python`](https://github.com/cda-group/arc/tree/master/arc-python) - A Python library for writing Arc-Lang applications. - -## Related Projects - -* [`arcon`](https://github.com/cda-group/arcon) - A distributed runtime which will support execution of Arc-Lang. -* [`kompact`](https://github.com/kompics/kompact) - A component-actor middleware which Arc-Runtime and Arcon are both implemented in. +* [`arc-sys`](https://github.com/cda-group/arc/tree/master/arc-sys) - A distributed system for executing Arc-Lang programs. ## Other diff --git a/arc-docs/.gitignore b/arc-docs/.gitignore deleted file mode 100644 index 2f7896d1d..000000000 --- a/arc-docs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target/ diff --git a/arc-docs/Makefile b/arc-docs/Makefile deleted file mode 100644 index 3c36d173c..000000000 --- a/arc-docs/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: - cargo doc --document-private-items --no-deps --target-dir=src/target --manifest-path=../arc-runtime/Cargo.toml - cargo doc --document-private-items --no-deps --target-dir=src/target --manifest-path=../arc-runtime/macros/Cargo.toml - mdbook build - -build: - mdbook build diff --git a/arc-docs/arc-preprocessor/Cargo.lock b/arc-docs/arc-preprocessor/Cargo.lock deleted file mode 100644 index ef473a8f1..000000000 --- a/arc-docs/arc-preprocessor/Cargo.lock +++ /dev/null @@ -1,1881 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "aho-corasick" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" -dependencies = [ - "memchr", -] - -[[package]] -name = "ammonia" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee7d6eb157f337c5cedc95ddf17f0cbc36d36eb7763c8e0d1c1aeb3722f6279" -dependencies = [ - "html5ever", - "lazy_static", - "maplit", - "markup5ever_rcdom", - "matches", - "tendril", - "url", -] - -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "anyhow" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" - -[[package]] -name = "arc-preprocessor" -version = "0.1.0" -dependencies = [ - "anyhow", - "clap 2.33.3", - "mdbook", - "regex", - "serde_json", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "autocfg" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - -[[package]] -name = "base64" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - -[[package]] -name = "bitflags" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array 0.12.4", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array 0.14.4", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - -[[package]] -name = "bstr" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a40b47ad93e1a5404e6c18dec46b628214fee441c70f4ab5d6942142cc268a3d" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", -] - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" -dependencies = [ - "libc", - "num-integer", - "num-traits", - "time", - "winapi 0.3.9", -] - -[[package]] -name = "clap" -version = "2.33.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" -dependencies = [ - "ansi_term", - "atty", - "bitflags", - "strsim 0.8.0", - "textwrap 0.11.0", - "unicode-width", - "vec_map", -] - -[[package]] -name = "clap" -version = "3.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" -dependencies = [ - "atty", - "bitflags", - "clap_lex", - "indexmap", - "once_cell", - "strsim 0.10.0", - "termcolor", - "textwrap 0.15.1", -] - -[[package]] -name = "clap_complete" -version = "3.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f7a2e0a962c45ce25afce14220bc24f9dade0a1787f185cecf96bfba7847cd8" -dependencies = [ - "clap 3.2.22", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] - -[[package]] -name = "cpuid-bool" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" - -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array 0.12.4", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array 0.14.4", -] - -[[package]] -name = "elasticlunr-rs" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94d9c8df0fe6879ca12e7633fdfe467c503722cc981fc463703472d2b876448" -dependencies = [ - "regex", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] -name = "env_logger" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "filetime" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall", - "winapi 0.3.9", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "form_urlencoded" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" -dependencies = [ - "matches", - "percent-encoding", -] - -[[package]] -name = "fsevent" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6" -dependencies = [ - "bitflags", - "fsevent-sys", -] - -[[package]] -name = "fsevent-sys" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f41b048a94555da0f42f1d632e2e19510084fb8e303b0daa2816e733fb3644a0" -dependencies = [ - "libc", -] - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -dependencies = [ - "bitflags", - "fuchsia-zircon-sys", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - -[[package]] -name = "futf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b" -dependencies = [ - "mac", - "new_debug_unreachable", -] - -[[package]] -name = "futures-channel" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fc8cd39e3dbf865f7340dce6a2d401d24fd37c6fe6c4f0ee0de8bfca2252d27" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629316e42fe7c2a0b9a65b47d159ceaa5453ab14e8f0a3c5eedbb8cd55b4a445" - -[[package]] -name = "futures-macro" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b" -dependencies = [ - "proc-macro-hack", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "996c6442437b62d21a32cd9906f9c41e7dc1e19a9579843fad948696769305af" - -[[package]] -name = "futures-task" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" - -[[package]] -name = "futures-util" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" -dependencies = [ - "futures-core", - "futures-macro", - "futures-sink", - "futures-task", - "pin-project-lite", - "pin-utils", - "proc-macro-hack", - "proc-macro-nested", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" -dependencies = [ - "typenum", -] - -[[package]] -name = "generic-array" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.10.2+wasi-snapshot-preview1", -] - -[[package]] -name = "gitignore" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78aa90e4620c1498ac434c06ba6e521b525794bbdacf085d490cc794b4a2f9a4" -dependencies = [ - "glob", -] - -[[package]] -name = "glob" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" - -[[package]] -name = "h2" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd819562fcebdac5afc5c113c3ec36f902840b70fd4fc458799c8ce4607ae55" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "handlebars" -version = "4.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167fa173496c9eadd8749cca6f8339ac88e248f3ad2442791d0b743318a94fc0" -dependencies = [ - "log", - "pest", - "pest_derive", - "quick-error", - "serde", - "serde_json", -] - -[[package]] -name = "hashbrown" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" - -[[package]] -name = "headers" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b7591fb62902706ae8e7aaff416b1b0fa2c0fd0878b46dc13baa3712d8a855" -dependencies = [ - "base64", - "bitflags", - "bytes", - "headers-core", - "http", - "mime", - "sha-1 0.9.4", - "time", -] - -[[package]] -name = "headers-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" -dependencies = [ - "http", -] - -[[package]] -name = "hermit-abi" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" -dependencies = [ - "libc", -] - -[[package]] -name = "html5ever" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafcf38a1a36118242d29b92e1b08ef84e67e4a5ed06e0a80be20e6a32bfed6b" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "http" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1ce40d6fc9764887c2fdc7305c3dcc429ba11ff981c1509416afd5697e4437" - -[[package]] -name = "httpdate" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "hyper" -version = "0.14.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b61cf2d1aebcf6e6352c97b81dc2244ca29194be1b276f5d8ad5c6330fffb11" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "idna" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "inotify" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4816c66d2c8ae673df83366c18341538f234a26d65a9ecea5c348b453ac1d02f" -dependencies = [ - "bitflags", - "inotify-sys", - "libc", -] - -[[package]] -name = "inotify-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" -dependencies = [ - "libc", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "itoa" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" - -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "libc" -version = "0.2.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98a04dce437184842841303488f70d0188c5f51437d2a834dc097eafa909a01" - -[[package]] -name = "log" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "markup5ever" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" -dependencies = [ - "log", - "phf", - "phf_codegen", - "string_cache", - "string_cache_codegen", - "tendril", -] - -[[package]] -name = "markup5ever_rcdom" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f015da43bcd8d4f144559a3423f4591d69b8ce0652c905374da7205df336ae2b" -dependencies = [ - "html5ever", - "markup5ever", - "tendril", - "xml5ever", -] - -[[package]] -name = "matches" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" - -[[package]] -name = "mdbook" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23f3e133c6d515528745ffd3b9f0c7d975ae039f0b6abb099f2168daa2afb4f9" -dependencies = [ - "ammonia", - "anyhow", - "chrono", - "clap 3.2.22", - "clap_complete", - "elasticlunr-rs", - "env_logger", - "futures-util", - "gitignore", - "handlebars", - "lazy_static", - "log", - "memchr", - "notify", - "opener", - "pulldown-cmark", - "regex", - "serde", - "serde_json", - "shlex", - "tempfile", - "tokio", - "toml", - "topological-sort", - "warp", -] - -[[package]] -name = "memchr" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" - -[[package]] -name = "mime" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" - -[[package]] -name = "mime_guess" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "mio" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" -dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log", - "miow 0.2.2", - "net2", - "slab", - "winapi 0.2.8", -] - -[[package]] -name = "mio" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" -dependencies = [ - "libc", - "log", - "miow 0.3.7", - "ntapi", - "winapi 0.3.9", -] - -[[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -dependencies = [ - "lazycell", - "log", - "mio 0.6.23", - "slab", -] - -[[package]] -name = "miow" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "net2" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - -[[package]] -name = "notify" -version = "4.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2599080e87c9bd051ddb11b10074f4da7b1223298df65d4c2ec5bcf309af1533" -dependencies = [ - "bitflags", - "filetime", - "fsevent", - "fsevent-sys", - "inotify", - "libc", - "mio 0.6.23", - "mio-extras", - "walkdir", - "winapi 0.3.9", -] - -[[package]] -name = "ntapi" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "once_cell" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "opener" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea3ebcd72a54701f56345f16785a6d3ac2df7e986d273eb4395c0b01db17952" -dependencies = [ - "bstr", - "winapi 0.3.9", -] - -[[package]] -name = "os_str_bytes" -version = "6.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" - -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - -[[package]] -name = "pest" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" -dependencies = [ - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" -dependencies = [ - "maplit", - "pest", - "sha-1 0.8.2", -] - -[[package]] -name = "phf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" -dependencies = [ - "phf_shared", -] - -[[package]] -name = "phf_codegen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" -dependencies = [ - "phf_generator", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" -dependencies = [ - "phf_shared", - "rand 0.7.3", -] - -[[package]] -name = "phf_shared" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "ppv-lite86" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "proc-macro-hack" -version = "0.5.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" - -[[package]] -name = "proc-macro-nested" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" - -[[package]] -name = "proc-macro2" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "pulldown-cmark" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34f197a544b0c9ab3ae46c359a7ec9cbbb5c7bf97054266fecb7ead794a181d6" -dependencies = [ - "bitflags", - "memchr", - "unicase", -] - -[[package]] -name = "quick-error" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ac73b1112776fc109b2e61909bc46c7e1bf0d7f690ffb1676553acce16d5cda" - -[[package]] -name = "quote" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", - "rand_pcg", -] - -[[package]] -name = "rand" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" -dependencies = [ - "libc", - "rand_chacha 0.3.0", - "rand_core 0.6.2", - "rand_hc 0.3.0", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.2", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" -dependencies = [ - "getrandom 0.2.2", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_hc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" -dependencies = [ - "rand_core 0.6.2", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "redox_syscall" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8270314b5ccceb518e7e578952f0b72b88222d02e8f77f5ecf7abbb673539041" -dependencies = [ - "bitflags", -] - -[[package]] -name = "regex" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" - -[[package]] -name = "regex-syntax" -version = "0.6.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ryu" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scoped-tls" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" - -[[package]] -name = "serde" -version = "1.0.125" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.125" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha-1" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -dependencies = [ - "block-buffer 0.7.3", - "digest 0.8.1", - "fake-simd", - "opaque-debug 0.2.3", -] - -[[package]] -name = "sha-1" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfebf75d25bd900fd1e7d11501efab59bc846dbc76196839663e6637bba9f25f" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpuid-bool", - "digest 0.9.0", - "opaque-debug 0.3.0", -] - -[[package]] -name = "shlex" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a568c8f2cd051a4d283bd6eb0343ac214c1b0f1ac19f93e1175b2dee38c73d" - -[[package]] -name = "siphasher" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbce6d4507c7e4a3962091436e56e95290cb71fa302d0d270e32130b75fbff27" - -[[package]] -name = "slab" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" - -[[package]] -name = "socket2" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" -dependencies = [ - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "string_cache" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb1139b5353f96e429e1a5e19fbaf663bddedaa06d1dbd49f82e352601209a" -dependencies = [ - "lazy_static", - "new_debug_unreachable", - "phf_shared", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f24c8e5e19d22a726626f1a5e16fe15b132dcf21d10177fa5a45ce7962996b97" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", -] - -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fe99c6bd8b1cc636890bcc071842de909d902c81ac7dab53ba33c421ab8ffb" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "tempfile" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "rand 0.8.3", - "redox_syscall", - "remove_dir_all", - "winapi 0.3.9", -] - -[[package]] -name = "tendril" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ef557cb397a4f0a5a3a628f06515f78563f2209e64d47055d9dc6052bf5e33" -dependencies = [ - "futf", - "mac", - "utf-8", -] - -[[package]] -name = "termcolor" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "textwrap" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" - -[[package]] -name = "thiserror" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "time" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" -dependencies = [ - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "tinyvec" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" - -[[package]] -name = "tokio" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e992e41e0d2fb9f755b37446f20900f64446ef54874f40a60c78f021ac6144" -dependencies = [ - "autocfg", - "bytes", - "libc", - "memchr", - "mio 0.7.14", - "num_cpus", - "pin-project-lite", - "tokio-macros", - "winapi 0.3.9", -] - -[[package]] -name = "tokio-macros" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9efc1aba077437943f7515666aa2b882dfabfbfdf89c819ea75a8d6e9eaba5e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-stream" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511de3f85caf1c98983545490c3d09685fa8eb634e57eec22bb4db271f46cbd8" -dependencies = [ - "futures-util", - "log", - "pin-project", - "tokio", - "tungstenite", -] - -[[package]] -name = "tokio-util" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" -dependencies = [ - "serde", -] - -[[package]] -name = "topological-sort" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa7c7f42dea4b1b99439786f5633aeb9c14c1b53f75e282803c2ec2ad545873c" - -[[package]] -name = "tower-service" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" - -[[package]] -name = "tracing" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01ebdc2bb4498ab1ab5f5b73c5803825e60199229ccba0698170e3be0e7f959f" -dependencies = [ - "cfg-if 1.0.0", - "log", - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "try-lock" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" - -[[package]] -name = "tungstenite" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b2d8558abd2e276b0a8df5c05a2ec762609344191e5fd23e292c910e9165b5" -dependencies = [ - "base64", - "byteorder", - "bytes", - "http", - "httparse", - "log", - "rand 0.8.3", - "sha-1 0.9.4", - "thiserror", - "url", - "utf-8", -] - -[[package]] -name = "typenum" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" - -[[package]] -name = "ucd-trie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" - -[[package]] -name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" -dependencies = [ - "matches", -] - -[[package]] -name = "unicode-normalization" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-width" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" - -[[package]] -name = "url" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" -dependencies = [ - "form_urlencoded", - "idna", - "matches", - "percent-encoding", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] -name = "version_check" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" - -[[package]] -name = "walkdir" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" -dependencies = [ - "same-file", - "winapi 0.3.9", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[package]] -name = "warp" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cef4e1e9114a4b7f1ac799f16ce71c14de5778500c5450ec6b7b920c55b587e" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "headers", - "http", - "hyper", - "log", - "mime", - "mime_guess", - "percent-encoding", - "pin-project", - "scoped-tls", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-stream", - "tokio-tungstenite", - "tokio-util", - "tower-service", - "tracing", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - -[[package]] -name = "xml5ever" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b1b52e6e8614d4a58b8e70cf51ec0cc21b256ad8206708bcff8139b5bbd6a59" -dependencies = [ - "log", - "mac", - "markup5ever", - "time", -] diff --git a/arc-docs/arc-preprocessor/Cargo.toml b/arc-docs/arc-preprocessor/Cargo.toml deleted file mode 100644 index 339d9fa02..000000000 --- a/arc-docs/arc-preprocessor/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "arc-preprocessor" -version = "0.1.0" -authors = ["Klas Segeljakt "] -edition = "2018" - -[dependencies] -regex = "1.5.4" -mdbook = "0.4.21" -serde_json = "1.0.64" -anyhow = "1.0.40" -clap = "2.33.3" diff --git a/arc-docs/arc-preprocessor/src/main.rs b/arc-docs/arc-preprocessor/src/main.rs deleted file mode 100644 index e63a7b172..000000000 --- a/arc-docs/arc-preprocessor/src/main.rs +++ /dev/null @@ -1,191 +0,0 @@ -use clap::{App, Arg, ArgMatches, SubCommand}; -use mdbook::book::Book; -use mdbook::errors::Error; -use mdbook::preprocess::{CmdPreprocessor, Preprocessor, PreprocessorContext}; -use std::io; -use std::process; - -pub fn make_app() -> App<'static, 'static> { - App::new("arc-preprocessor") - .about("A mdbook preprocessor for arc") - .subcommand( - SubCommand::with_name("supports") - .arg(Arg::with_name("renderer").required(true)) - .about("Check whether a renderer is supported by this preprocessor"), - ) -} - -fn main() { - let matches = make_app().get_matches(); - - let preprocessor = ArcLang::new(); - - if let Some(sub_args) = matches.subcommand_matches("supports") { - handle_supports(&preprocessor, sub_args); - } else if let Err(e) = handle_preprocessing(&preprocessor) { - eprintln!("{}", e); - process::exit(1); - } -} - -fn handle_preprocessing(pre: &dyn Preprocessor) -> Result<(), Error> { - let (ctx, book) = CmdPreprocessor::parse_input(io::stdin())?; - - if ctx.mdbook_version != mdbook::MDBOOK_VERSION { - eprintln!( - "Warning: The {} plugin was built against version {} of mdbook, \ - but we're being called from version {}", - pre.name(), - mdbook::MDBOOK_VERSION, - ctx.mdbook_version - ); - } - - let processed_book = pre.run(&ctx, book)?; - serde_json::to_writer(io::stdout(), &processed_book)?; - - Ok(()) -} - -fn handle_supports(pre: &dyn Preprocessor, sub_args: &ArgMatches) -> ! { - let renderer = sub_args.value_of("renderer").expect("Required argument"); - let supported = pre.supports_renderer(&renderer); - - if supported { - process::exit(0); - } else { - process::exit(1); - } -} - -pub struct ArcLang; - -impl ArcLang { - pub fn new() -> ArcLang { - ArcLang - } -} - -const KEYWORDS: &[&str] = &[ - "and", "or", "xor", "band", "bor", "bxor", "is", "not", "in", "class", "instance", "def", - "task", "on", "receive", "val", "var", "fun", "mod", "extern", "enum", "type", "match", "loop", - "for", "while", "if", "else", "return", "break", "continue", "use", "as", "from", "group", - "window", "compute", "every", "order", "yield", "where", "desc", "of", "reduce", "after", - "join", -]; - -impl Preprocessor for ArcLang { - fn name(&self) -> &str { - "arc-preprocessor" - } - - fn run(&self, _: &PreprocessorContext, mut book: Book) -> Result { - preprocess_exec(&mut book); - preprocess_grammar(&mut book); - preprocess_snippet(&mut book); - - Ok(book) - } - - fn supports_renderer(&self, renderer: &str) -> bool { - renderer != "not-supported" - } -} - -/// Expand `{{exec }}` into the output of executing `` using bash. -fn preprocess_exec(book: &mut Book) { - let exec_regex = regex::Regex::new(r"\{\{#exec (.*?)\}\}").unwrap(); - book.for_each_mut(|item| { - if let mdbook::BookItem::Chapter(ch) = item { - ch.content = exec_regex - .replace_all(&ch.content, |caps: ®ex::Captures<'_>| { - let s = caps.get(1).unwrap().as_str(); - let s = std::process::Command::new("/bin/sh") - .arg("-c") - .arg(s) - .output() - .unwrap(); - let s = s.stdout; - let s = std::str::from_utf8(s.as_ref()).unwrap(); - format!("{}", s) - }) - .into_owned(); - } - }); -} - -/// Adds syntax highlighting and links to `grammar` code blocks. -fn preprocess_grammar(book: &mut Book) { - let grammar_regex = regex::Regex::new(r"(?s)```grammar\n(.*?)```").unwrap(); - let head_regex = regex::Regex::new(r"([A-Z][A-Za-z]*)( ::=.*)").unwrap(); - let keyword_regex = regex::Regex::new(r#""([^ ]+?)""#).unwrap(); - let keyword_subst = r"${1}"; - let nonterm_regex = regex::Regex::new(r"\[([A-Z][A-Za-z]+)\]").unwrap(); - let nonterm_subst = r#"${1}"#; - let subterm_regex = regex::Regex::new(r"\[\[([A-Z][A-Za-z]+)\]\]").unwrap(); - let comment_regex = regex::Regex::new(r"( *(?:\||::=).*)#[^{](.*)").unwrap(); - let comment_subst = r#"$1${2}"#; - book.for_each_mut(|item| { - if let mdbook::BookItem::Chapter(ch) = item { - let path = ch.path.as_ref().unwrap(); - let name = path.file_stem().unwrap().to_str().unwrap(); - ch.content = grammar_regex - .replace_all(&ch.content, |caps: ®ex::Captures<'_>| { - let subterm_subst = format!(r#"${{1}}"#, name); - let head_subst = - format!(r#"${{1}}$2"#, name); - let s = caps.get(1).unwrap().as_str(); - let s = keyword_regex.replace_all(&s, keyword_subst); - let s = comment_regex.replace_all(&s, comment_subst); - let s = subterm_regex.replace_all(&s, subterm_subst); - let s = nonterm_regex.replace_all(&s, nonterm_subst); - let s = head_regex.replace_all(&s, head_subst); - let s = s.trim(); - format!("
{}
", s) - }) - .into_owned(); - } - }); -} - -/// Adds syntax highlighting to `arc-lang` code blocks. -fn preprocess_snippet(book: &mut Book) { - let grammar_regex = regex::Regex::new(r"(?s)```arc-lang(-todo)?\n(.*?)```").unwrap(); - let comment_regex = regex::Regex::new(r"#[^{].*").unwrap(); - let comment_subst = r#"${0}"#; - let keyword_regex = regex::Regex::new(&format!( - r"(^|\n|[^[:alnum:]_])({})($|\n|[^[:alnum:]_])", - KEYWORDS.join("|"), - )) - .unwrap(); - let keyword_subst = r"${1}${2}${3}"; - let numeric_regex = regex::Regex::new( - r"([^a-zA-Z0-9])([0-9]+((\.[0-9]+)|%|ns|us|ms|s|m|h|d|w|((-[0-9]+-[0-9]+T[0-9]+)?:[0-9]+:[0-9]+))?)", - ) - .unwrap(); - let numeric_subst = r#"${1}${2}"#; - let textual_regex = regex::Regex::new(r##"("[^"]+")|'[^']'"##).unwrap(); - let textual_subst = r#"${0}"#; - book.for_each_mut(|item| { - if let mdbook::BookItem::Chapter(ch) = item { - ch.content = grammar_regex - .replace_all(&ch.content, |caps: ®ex::Captures<'_>| { - let s = caps.get(2).unwrap().as_str(); - let s = keyword_regex.replace_all(&s, keyword_subst); - let s = textual_regex.replace_all(&s, textual_subst); - let s = numeric_regex.replace_all(&s, numeric_subst); - let s = comment_regex.replace_all(&s, comment_subst); - let s = s.trim(); - if caps.get(1).is_some() { - format!( - r#"
{}
"#, - s - ) - } else { - format!("
{}
", s) - } - }) - .into_owned(); - } - }); -} diff --git a/arc-docs/book.toml b/arc-docs/book.toml deleted file mode 100644 index 289c2d3c4..000000000 --- a/arc-docs/book.toml +++ /dev/null @@ -1,50 +0,0 @@ -[book] -authors = ["Klas Segeljakt", "Frej Drejhammar"] -description = "Arc-Lang documentation." -language = "en" -multilingual = false -src = "src" -title = "Arc-Lang" - -[build] -build-dir = "target" -create-missing = true - -[preprocessor.arc-preprocessor] -command = "./arc-preprocessor/target/debug/arc-preprocessor" -renderer = ["html"] -after = ["links"] - -[preprocessor.bib] -title = "References" -bibliography = "references.bib" - -[preprocess.index] - -[preprocess.links] - -[output.html] -theme = "theme" -no-section-label = true -git_repository_url = "www.github.com/cda-group/arc" -git_repository_icon = "fa-github" -mathjax-support = true -curly-quotes = false - -[output.html.playpen] -editable = false -copy-js = false - -[output.html.search] -enable = true - -[output.linkcheck] -follow-web-links = false -warning-policy = "error" - -[output.html.fold] -enable = false -level = 0 - -[output.html.print] -enable = true diff --git a/arc-docs/fonts/Fira_Code_v6.2/README.txt b/arc-docs/fonts/Fira_Code_v6.2/README.txt deleted file mode 100644 index d5ae1b16c..000000000 --- a/arc-docs/fonts/Fira_Code_v6.2/README.txt +++ /dev/null @@ -1,563 +0,0 @@ -Installing -========== - -Windows -------- - -In the ttf folder, double-click each font file, click “Install font”; to install all at once, select all files, right-click, and choose “Install” - -OR - -Use https://chocolatey.org: - - choco install firacode - - -macOS ------ - -In the downloaded TTF folder: - -1. Select all font files -2. Right click and select `Open` (alternatively `Open With Font Book`) -3. Select "Install Font" - -OR - -Use http://brew.sh: - - `brew tap homebrew/cask-fonts` - `brew install font-fira-code` - - -Ubuntu Zesty (17.04), Debian Stretch (9) or newer -------------------------------------------------- - -1. Make sure that the `universe` (for Ubuntu) or `contrib` (for Debian) repository is enabled (see https://askubuntu.com/questions/148638/how-do-i-enable-the-universe-repository or https://wiki.debian.org/SourcesList#Component) -2. Install `fonts-firacode` package either by executing `sudo apt install fonts-firacode` in the terminal or via GUI tool (like “Software Center”) - - -Arch Linux ----------- - -Fira Code package is available in the official repository: https://www.archlinux.org/packages/community/any/ttf-fira-code/. - -Variant of Fira Code package is available in the AUR: https://aur.archlinux.org/packages/otf-fira-code-git/. - - -Gentoo ------- - - emerge -av media-fonts/fira-code - - -Fedora ------- - -To install, perform the following commands: - - dnf install fira-code-fonts - - -Solus ------ - -Fira Code package is available in the official repository: `font-firacode-ttf` and `font-firacode-otf`. -They can be installed by running: - - sudo eopkg install font-firacode-ttf font-firacode-otf - - -Void linux ----------- - - xbps-install font-firacode - - -Linux Manual Installation -------------------------- - -With most desktop-oriented distributions, double-clicking each font file in the ttf folder and selecting “Install font” should be enough. If it isn’t, create and run `download_and_install.sh` script: - - #!/usr/bin/env bash - - fonts_dir="${HOME}/.local/share/fonts" - if [ ! -d "${fonts_dir}" ]; then - echo "mkdir -p $fonts_dir" - mkdir -p "${fonts_dir}" - else - echo "Found fonts dir $fonts_dir" - fi - - for type in Bold Light Medium Regular Retina; do - file_path="${HOME}/.local/share/fonts/FiraCode-${type}.ttf" - file_url="https://github.com/tonsky/FiraCode/blob/master/distr/ttf/FiraCode-${type}.ttf?raw=true" - if [ ! -e "${file_path}" ]; then - echo "wget -O $file_path $file_url" - wget -O "${file_path}" "${file_url}" - else - echo "Found existing file $file_path" - fi; - done - - echo "fc-cache -f" - fc-cache -f - -More details: https://github.com/tonsky/FiraCode/issues/4 - - -FreeBSD -------- - -Using pkg(8): - - pkg install firacode - -OR - -Using ports: - - cd /usr/ports/x11-fonts/firacode && make install clean - - -Enabling ligatures -================== - -Atom ----- - -To change your font to Fira Code, open Atom's preferences (`cmd + ,` on a Mac, `ctrl + ,` on PC), make sure the "Settings" tab is selected, or the "Editor" in Atom 1.10+, and scroll down to "Editor Settings". In the "Font Family" field, enter `Fira Code`. - -If you wish to specify a font weight, for example, Light, use `Fira Code Light` as a font name (Windows) or `FiraCode-Light` (macOS). - -Ligatures are enabled by default in Atom 1.9 and above. - - -VS Code -------- - -To open the settings editor, first from the File menu choose Preferences, Settings or use keyboard shortcut `Ctrl + ,` (Windows) or `Cmd + ,` (macOS). - -To enable FiraCode in the settings editor, under "Commonly Used", expand the "Text Editor" settings and then click on "Font". In the "Font Family" input box type `Fira Code`, replacing any content. Tick the check box "Enables/Disables font ligatures" under "Font Ligatures" to enable the special ligatures. - -If you wish to specify a font weight, for example, Light, use `Fira Code Light` as a font name (Windows) or `FiraCode-Light` (macOS). - - -IntelliJ products ------------------ - -1. Enable in Settings → Editor → Font → Enable Font Ligatures -2. Select `Fira Code` as "Primary font" under Settings → Editor → Font - -Additionally, if a Color Scheme is selected: - -3. Enable in Settings → Editor → Color Scheme → Color Scheme Font → Enable Font Ligatures -4. Select Fira Code as "Primary font" under Settings → Editor → Color Scheme → Color Scheme Font - - -BBEdit, TextWrangler --------------------- - -Run in your terminal: - - defaults write com.barebones.bbedit "EnableFontLigatures_Fira Code" -bool YES - -Source: https://www.barebones.com/support/bbedit/ExpertPreferences.html - - -Brackets --------- - -1. From the `View` menu choose `Themes....` -2. Paste `'Fira Code'`, at the beginning of `Font Family` - - -Emacs ------ - -There are a few options when it comes down to using ligatures in -Emacs. They are listed in order of preferred to less-preferred. Pick one! - -1. Using composition mode in Emacs Mac port - -If you're using the latest Mac port of Emacs (https://bitbucket.org/mituharu/emacs-mac by Mitsuharu Yamamoto) for macOS, you can use: - - (mac-auto-operator-composition-mode) - -This is generally the easiest solution, but can only be used on macOS. - -2. Using prettify-symbols - -These instructions are pieced together by https://github.com/Triavanicus, taking some pieces from https://github.com/minad/hasklig-mode. - -This method requires you to install the Fira Code Symbol font, made by https://github.com/siegebell: -https://github.com/tonsky/FiraCode/issues/211#issuecomment-239058632 - - (defun fira-code-mode--make-alist (list) - "Generate prettify-symbols alist from LIST." - (let ((idx -1)) - (mapcar - (lambda (s) - (setq idx (1+ idx)) - (let* ((code (+ #Xe100 idx)) - (width (string-width s)) - (prefix ()) - (suffix '(?\s (Br . Br))) - (n 1)) - (while (< n width) - (setq prefix (append prefix '(?\s (Br . Bl)))) - (setq n (1+ n))) - (cons s (append prefix suffix (list (decode-char 'ucs code)))))) - list))) - - (defconst fira-code-mode--ligatures - '("www" "**" "***" "**/" "*>" "*/" "\\\\" "\\\\\\" - "{-" "[]" "::" ":::" ":=" "!!" "!=" "!==" "-}" - "--" "---" "-->" "->" "->>" "-<" "-<<" "-~" - "#{" "#[" "##" "###" "####" "#(" "#?" "#_" "#_(" - ".-" ".=" ".." "..<" "..." "?=" "??" ";;" "/*" - "/**" "/=" "/==" "/>" "//" "///" "&&" "||" "||=" - "|=" "|>" "^=" "$>" "++" "+++" "+>" "=:=" "==" - "===" "==>" "=>" "=>>" "<=" "=<<" "=/=" ">-" ">=" - ">=>" ">>" ">>-" ">>=" ">>>" "<*" "<*>" "<|" "<|>" - "<$" "<$>" "\\)" #Xe113) - ("[^-]\\(->\\)" #Xe114) - ("\\(->>\\)" #Xe115) - ("\\(-<\\)" #Xe116) - ("\\(-<<\\)" #Xe117) - ("\\(-~\\)" #Xe118) - ("\\(#{\\)" #Xe119) - ("\\(#\\[\\)" #Xe11a) - ("\\(##\\)" #Xe11b) - ("\\(###\\)" #Xe11c) - ("\\(####\\)" #Xe11d) - ("\\(#(\\)" #Xe11e) - ("\\(#\\?\\)" #Xe11f) - ("\\(#_\\)" #Xe120) - ("\\(#_(\\)" #Xe121) - ("\\(\\.-\\)" #Xe122) - ("\\(\\.=\\)" #Xe123) - ("\\(\\.\\.\\)" #Xe124) - ("\\(\\.\\.<\\)" #Xe125) - ("\\(\\.\\.\\.\\)" #Xe126) - ("\\(\\?=\\)" #Xe127) - ("\\(\\?\\?\\)" #Xe128) - ("\\(;;\\)" #Xe129) - ("\\(/\\*\\)" #Xe12a) - ("\\(/\\*\\*\\)" #Xe12b) - ("\\(/=\\)" #Xe12c) - ("\\(/==\\)" #Xe12d) - ("\\(/>\\)" #Xe12e) - ("\\(//\\)" #Xe12f) - ("\\(///\\)" #Xe130) - ("\\(&&\\)" #Xe131) - ("\\(||\\)" #Xe132) - ("\\(||=\\)" #Xe133) - ("[^|]\\(|=\\)" #Xe134) - ("\\(|>\\)" #Xe135) - ("\\(\\^=\\)" #Xe136) - ("\\(\\$>\\)" #Xe137) - ("\\(\\+\\+\\)" #Xe138) - ("\\(\\+\\+\\+\\)" #Xe139) - ("\\(\\+>\\)" #Xe13a) - ("\\(=:=\\)" #Xe13b) - ("[^!/]\\(==\\)[^>]" #Xe13c) - ("\\(===\\)" #Xe13d) - ("\\(==>\\)" #Xe13e) - ("[^=]\\(=>\\)" #Xe13f) - ("\\(=>>\\)" #Xe140) - ("\\(<=\\)" #Xe141) - ("\\(=<<\\)" #Xe142) - ("\\(=/=\\)" #Xe143) - ("\\(>-\\)" #Xe144) - ("\\(>=\\)" #Xe145) - ("\\(>=>\\)" #Xe146) - ("[^-=]\\(>>\\)" #Xe147) - ("\\(>>-\\)" #Xe148) - ("\\(>>=\\)" #Xe149) - ("\\(>>>\\)" #Xe14a) - ("\\(<\\*\\)" #Xe14b) - ("\\(<\\*>\\)" #Xe14c) - ("\\(<|\\)" #Xe14d) - ("\\(<|>\\)" #Xe14e) - ("\\(<\\$\\)" #Xe14f) - ("\\(<\\$>\\)" #Xe150) - ("\\( Settings - -Add before "ignored_packages": - - "font_face": "Fira Code", - "font_options": ["subpixel_antialias"], - -If you want enable antialias, add in font_options: "gray_antialias" - - -Visual Studio -------------- - -1. Launch Visual Studio (2015 or later). -2. Launch the Options dialog by opening the "Tools" menu and selecting "Options". -3. In the Options dialog, under the "Environment" category, you'll find "Fonts and Colors". Click on that. You'll see a combo-box on the right hand side of the dialog labelled "Font". Select "Fira Code" from that combo-box. -4. Click "OK" to dismiss. -5. Restart Visual Studio. - -Now, most FiraCode ligatures will work. A notable exception is the hyphen-based ligatures (e.g. the C++ dereference '->'). See https://github.com/tonsky/FiraCode/issues/422 for details. - - -Troubleshooting -=============== - -See https://github.com/tonsky/FiraCode/wiki/Troubleshooting diff --git a/arc-docs/fonts/Fira_Code_v6.2/SIL Open Font License.txt b/arc-docs/fonts/Fira_Code_v6.2/SIL Open Font License.txt deleted file mode 100644 index 8ed844059..000000000 --- a/arc-docs/fonts/Fira_Code_v6.2/SIL Open Font License.txt +++ /dev/null @@ -1,55 +0,0 @@ -Copyright (C) Authors of original metafont fonts: -Donald Ervin Knuth (cm, concrete fonts) -1995, 1996, 1997 J"org Knappen, 1990, 1992 Norbert Schwarz (ec fonts) -1992-2006 A.Khodulev, O.Lapko, A.Berdnikov, V.Volovich (lh fonts) -1997-2005 Claudio Beccari (cb greek fonts) -2002 FUKUI Rei (tipa fonts) -2003-2005 Han The Thanh (Vietnamese fonts) -1996-2005 Walter Schmidt (cmbright fonts) - -Copyright (C) 2003-2009, Andrey V. Panov (panov@canopus.iacp.dvo.ru), -with Reserved Font Family Name "Computer Modern Unicode fonts". - - - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the copyright statement(s). - -"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. - -5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/arc-docs/fonts/Fira_Code_v6.2/fira_code.css b/arc-docs/fonts/Fira_Code_v6.2/fira_code.css deleted file mode 100644 index c3a8e21cb..000000000 --- a/arc-docs/fonts/Fira_Code_v6.2/fira_code.css +++ /dev/null @@ -1,42 +0,0 @@ -@font-face { - font-family: 'Fira Code'; - src: url('woff2/FiraCode-Light.woff2') format('woff2'); - font-weight: 300; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code'; - src: url('woff2/FiraCode-Regular.woff2') format('woff2'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code'; - src: url('woff2/FiraCode-Medium.woff2') format('woff2'); - font-weight: 500; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code'; - src: url('woff2/FiraCode-SemiBold.woff2') format('woff2'); - font-weight: 600; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code'; - src: url('woff2/FiraCode-Bold.woff2') format('woff2'); - font-weight: 700; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code VF'; - src: url('woff2/FiraCode-VF.woff2') format('woff2-variations'); - /* font-weight requires a range: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide#Using_a_variable_font_font-face_changes */ - font-weight: 300 700; - font-style: normal; -} diff --git a/arc-docs/fonts/Fira_Code_v6.2/specimen.html b/arc-docs/fonts/Fira_Code_v6.2/specimen.html deleted file mode 100644 index 6dce70b9b..000000000 --- a/arc-docs/fonts/Fira_Code_v6.2/specimen.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - Fira Code Specimen - - - - - - -
# Fira Code Light - -take = (n, [x, ...xs]:list) --> - | n <= 0 => [] - | empty list => [] - | otherwise => [x] ++ take n-1, xs - -last3 = reverse >> take 3 >> reverse
- - -
# Fira Code Regular - -take = (n, [x, ...xs]:list) --> - | n <= 0 => [] - | empty list => [] - | otherwise => [x] ++ take n-1, xs - -last3 = reverse >> take 3 >> reverse
- - -
# Fira Code Medium - -take = (n, [x, ...xs]:list) --> - | n <= 0 => [] - | empty list => [] - | otherwise => [x] ++ take n-1, xs - -last3 = reverse >> take 3 >> reverse
- - -
# Fira Code SemiBold - -take = (n, [x, ...xs]:list) --> - | n <= 0 => [] - | empty list => [] - | otherwise => [x] ++ take n-1, xs - -last3 = reverse >> take 3 >> reverse
- - -
# Fira Code Bold - -take = (n, [x, ...xs]:list) --> - | n <= 0 => [] - | empty list => [] - | otherwise => [x] ++ take n-1, xs - -last3 = reverse >> take 3 >> reverse
- -
# Fira Code Variable - - 400 - -take = (n, [x, ...xs]:list) --> - | n <= 0 => [] - | empty list => [] - | otherwise => [x] ++ take n-1, xs - -last3 = reverse >> take 3 >> reverse
diff --git a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Bold.woff2 b/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Bold.woff2 deleted file mode 100644 index 349dc36a5..000000000 Binary files a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Bold.woff2 and /dev/null differ diff --git a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Light.woff2 b/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Light.woff2 deleted file mode 100644 index eeaa30363..000000000 Binary files a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Light.woff2 and /dev/null differ diff --git a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Medium.woff2 b/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Medium.woff2 deleted file mode 100644 index 7f1d77090..000000000 Binary files a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Medium.woff2 and /dev/null differ diff --git a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Regular.woff2 b/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Regular.woff2 deleted file mode 100644 index f8b63fb01..000000000 Binary files a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-Regular.woff2 and /dev/null differ diff --git a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-SemiBold.woff2 b/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-SemiBold.woff2 deleted file mode 100644 index ccbefc884..000000000 Binary files a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-SemiBold.woff2 and /dev/null differ diff --git a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-VF.woff2 b/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-VF.woff2 deleted file mode 100644 index e755a9dc7..000000000 Binary files a/arc-docs/fonts/Fira_Code_v6.2/woff2/FiraCode-VF.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/SIL Open Font License.txt b/arc-docs/fonts/computer-modern/SIL Open Font License.txt deleted file mode 100644 index 8ed844059..000000000 --- a/arc-docs/fonts/computer-modern/SIL Open Font License.txt +++ /dev/null @@ -1,55 +0,0 @@ -Copyright (C) Authors of original metafont fonts: -Donald Ervin Knuth (cm, concrete fonts) -1995, 1996, 1997 J"org Knappen, 1990, 1992 Norbert Schwarz (ec fonts) -1992-2006 A.Khodulev, O.Lapko, A.Berdnikov, V.Volovich (lh fonts) -1997-2005 Claudio Beccari (cb greek fonts) -2002 FUKUI Rei (tipa fonts) -2003-2005 Han The Thanh (Vietnamese fonts) -1996-2005 Walter Schmidt (cmbright fonts) - -Copyright (C) 2003-2009, Andrey V. Panov (panov@canopus.iacp.dvo.ru), -with Reserved Font Family Name "Computer Modern Unicode fonts". - - - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the copyright statement(s). - -"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. - -5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/arc-docs/fonts/computer-modern/cmunbi.woff2 b/arc-docs/fonts/computer-modern/cmunbi.woff2 deleted file mode 100644 index 1e075f8f8..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunbi.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunbl.woff2 b/arc-docs/fonts/computer-modern/cmunbl.woff2 deleted file mode 100644 index 9602dae48..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunbl.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunbmo.woff2 b/arc-docs/fonts/computer-modern/cmunbmo.woff2 deleted file mode 100644 index 01771f162..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunbmo.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunbmr.woff2 b/arc-docs/fonts/computer-modern/cmunbmr.woff2 deleted file mode 100644 index df6d9646d..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunbmr.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunbso.woff2 b/arc-docs/fonts/computer-modern/cmunbso.woff2 deleted file mode 100644 index c207cc2ed..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunbso.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunbsr.woff2 b/arc-docs/fonts/computer-modern/cmunbsr.woff2 deleted file mode 100644 index 463880828..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunbsr.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunbtl.woff2 b/arc-docs/fonts/computer-modern/cmunbtl.woff2 deleted file mode 100644 index 2701ea463..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunbtl.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunbto.woff2 b/arc-docs/fonts/computer-modern/cmunbto.woff2 deleted file mode 100644 index a15d70735..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunbto.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunbx.woff2 b/arc-docs/fonts/computer-modern/cmunbx.woff2 deleted file mode 100644 index 85af1883e..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunbx.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunci.woff2 b/arc-docs/fonts/computer-modern/cmunci.woff2 deleted file mode 100644 index aa5b68fa7..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunci.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunit.woff2 b/arc-docs/fonts/computer-modern/cmunit.woff2 deleted file mode 100644 index dc5bd655c..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunit.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunobi.woff2 b/arc-docs/fonts/computer-modern/cmunobi.woff2 deleted file mode 100644 index 413f7714d..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunobi.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunobx.woff2 b/arc-docs/fonts/computer-modern/cmunobx.woff2 deleted file mode 100644 index 5113f4b4e..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunobx.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunorm.woff2 b/arc-docs/fonts/computer-modern/cmunorm.woff2 deleted file mode 100644 index 9434289d4..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunorm.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunoti.woff2 b/arc-docs/fonts/computer-modern/cmunoti.woff2 deleted file mode 100644 index 80fcf632f..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunoti.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunrm.woff2 b/arc-docs/fonts/computer-modern/cmunrm.woff2 deleted file mode 100644 index 87cb90c40..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunrm.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunsi.woff2 b/arc-docs/fonts/computer-modern/cmunsi.woff2 deleted file mode 100644 index d16293426..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunsi.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunsl.woff2 b/arc-docs/fonts/computer-modern/cmunsl.woff2 deleted file mode 100644 index e93095ddd..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunsl.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunso.woff2 b/arc-docs/fonts/computer-modern/cmunso.woff2 deleted file mode 100644 index b835f0250..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunso.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunss.woff2 b/arc-docs/fonts/computer-modern/cmunss.woff2 deleted file mode 100644 index 13e75bb9c..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunss.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunssdc.woff2 b/arc-docs/fonts/computer-modern/cmunssdc.woff2 deleted file mode 100644 index 0469b2011..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunssdc.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunsx.woff2 b/arc-docs/fonts/computer-modern/cmunsx.woff2 deleted file mode 100644 index fbb13f762..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunsx.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmuntb.woff2 b/arc-docs/fonts/computer-modern/cmuntb.woff2 deleted file mode 100644 index 9b95f5f42..000000000 Binary files a/arc-docs/fonts/computer-modern/cmuntb.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunti.woff2 b/arc-docs/fonts/computer-modern/cmunti.woff2 deleted file mode 100644 index 27aee607c..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunti.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmuntt.woff2 b/arc-docs/fonts/computer-modern/cmuntt.woff2 deleted file mode 100644 index 71deefc0b..000000000 Binary files a/arc-docs/fonts/computer-modern/cmuntt.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmuntx.woff2 b/arc-docs/fonts/computer-modern/cmuntx.woff2 deleted file mode 100644 index ba547dea7..000000000 Binary files a/arc-docs/fonts/computer-modern/cmuntx.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunui.woff2 b/arc-docs/fonts/computer-modern/cmunui.woff2 deleted file mode 100644 index 0273dc91b..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunui.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunvi.woff2 b/arc-docs/fonts/computer-modern/cmunvi.woff2 deleted file mode 100644 index 0c2b0f277..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunvi.woff2 and /dev/null differ diff --git a/arc-docs/fonts/computer-modern/cmunvt.woff2 b/arc-docs/fonts/computer-modern/cmunvt.woff2 deleted file mode 100644 index 5d7a2808d..000000000 Binary files a/arc-docs/fonts/computer-modern/cmunvt.woff2 and /dev/null differ diff --git a/arc-docs/src/SUMMARY.md b/arc-docs/src/SUMMARY.md deleted file mode 100644 index 0b683e3d0..000000000 --- a/arc-docs/src/SUMMARY.md +++ /dev/null @@ -1,56 +0,0 @@ -# Summary - -- [Introduction](introduction.md) -- [Getting Started](getting-started.md) -- [Tour of Arc-Lang](tour/mod.md) - - [Basics](tour/basics.md) - - [Tasks and Channels](tour/tasks.md) - - [Queries](tour/queries.md) -- [Examples](examples/mod.md) - - [Word Count](examples/word-count.md) - - [TF-IDF](examples/tf-idf.md) - - [Sensor Data Aggregation](examples/sensor-data-aggregation.md) -- [Command Line Interface](command-line-interface.md) -- [Arc-Lang Reference](arc-lang/mod.md) - - [Programs](arc-lang/Program.md) - - [Names](arc-lang/Name.md) - - [Paths](arc-lang/Path.md) - - [Values](arc-lang/Value.md) - - [Types](arc-lang/Type.md) - - [Blocks](arc-lang/Block.md) - - [Statements](arc-lang/Stmt.md) - - [Expressions](arc-lang/Expr.md) - - [Patterns](arc-lang/Pattern.md) - - [Items](arc-lang/Item.md) - - [Globals](arc-lang/Global.md) - - [Functions](arc-lang/Def.md) - - [Tasks](arc-lang/Task.md) - - [Type Aliases](arc-lang/TypeAlias.md) - - [Type Classes](arc-lang/TypeClass.md) - - [Type Class Instances](arc-lang/Instance.md) - - [Extern Functions](arc-lang/ExternDef.md) - - [Extern Types](arc-lang/ExternType.md) - - [Uses](arc-lang/Use.md) - - [Enums](arc-lang/Enum.md) - - [Modules](arc-lang/Module.md) - - [Parameters](arc-lang/Params.md) - - [Generics](arc-lang/Generics.md) - - [Assignments](arc-lang/Assign.md) - - [Annotations](arc-lang/Annots.md) -- [Development](dev/mod.md) - - [Continuous Integration](dev/ci.md) - - [Arc-MLIR Reference](dev/arc-mlir/mod.md) - - [Programs](dev/arc-mlir/Program.md) - - [Names](dev/arc-mlir/Name.md) - - [Operations](dev/arc-mlir/Operation.md) - - [Types](dev/arc-mlir/Type.md) - - [Values](dev/arc-mlir/Value.md) - - [Blocks](dev/arc-mlir/Block.md) - - [Items](dev/arc-mlir/Item.md) - - [Functions](dev/arc-mlir/Func.md) - - [Parameters](dev/arc-mlir/Params.md) - - [Arc-Runtime Reference](dev/arc-runtime/mod.md) - - [Execution Model](dev/arc-runtime/execution-model.md) - - [Data Model](dev/arc-runtime/data-model.md) -- [History](history/mod.md) - - [Tasks](history/tasks.md) diff --git a/arc-docs/src/arc-lang/Annots.md b/arc-docs/src/arc-lang/Annots.md deleted file mode 100644 index adc4ef1f5..000000000 --- a/arc-docs/src/arc-lang/Annots.md +++ /dev/null @@ -1,15 +0,0 @@ -# Annotations - -Annotations can optionally be attached to items. - -```grammar -Annots ::= "@{" [[Annot]]","* "}" - -Annot ::= [Name] ":" [Value] -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/stdlib/stdlib.arc:unit}} -``` diff --git a/arc-docs/src/arc-lang/Assign.md b/arc-docs/src/arc-lang/Assign.md deleted file mode 100644 index d52cc0921..000000000 --- a/arc-docs/src/arc-lang/Assign.md +++ /dev/null @@ -1,15 +0,0 @@ -# Assignments - -Variables can be assigned as mutable with `var` and immutable with `val`. - -```grammar -Assign ::= - | "val" [Pattern] (":" [Type])? "=" [Expr] ";" - | "var" [Pattern] (":" [Type])? "=" [Expr] ";" -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/examples/assign.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Block.md b/arc-docs/src/arc-lang/Block.md deleted file mode 100644 index e755c7e63..000000000 --- a/arc-docs/src/arc-lang/Block.md +++ /dev/null @@ -1,13 +0,0 @@ -# Blocks - -A **block** is a sequence of statements optionally terminated by an expression which the block evaluates into. If no expression is specified, then the block evaluates into unit. - -```grammar -Block ::= "{" [Stmt]* [Expr]? "}" -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/examples/blocks.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Body.md b/arc-docs/src/arc-lang/Body.md deleted file mode 100644 index 4a77c42aa..000000000 --- a/arc-docs/src/arc-lang/Body.md +++ /dev/null @@ -1,15 +0,0 @@ -# Body - -The body of a function or task can be written either inline using `=` syntax or directly as a block. - -``` -Body ::= - | "=" [Expr] ";" - | [Block] -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/examples/body.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Def.md b/arc-docs/src/arc-lang/Def.md deleted file mode 100644 index 44830810e..000000000 --- a/arc-docs/src/arc-lang/Def.md +++ /dev/null @@ -1,27 +0,0 @@ -# Functions - -Functions are written with the `def` keyword. - -```grammar -Def ::= "def" [Name] [Generics]? [Params] ":" [Type] [Body] -``` - -## Examples - -### Functional functions - -```arc-lang -{{#include ../../../arc-lang/examples/fib-functional.arc:example}} -``` - -### Imperative functions - -```arc-lang -{{#include ../../../arc-lang/examples/fib-imperative.arc:example}} -``` - -### Declare-after-use - -```arc-lang -{{#include ../../../arc-lang/examples/even-odd.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Enum.md b/arc-docs/src/arc-lang/Enum.md deleted file mode 100644 index 9bfce346d..000000000 --- a/arc-docs/src/arc-lang/Enum.md +++ /dev/null @@ -1,15 +0,0 @@ -# Enums - -An **enum** is a nominal type which is a disjoint set (tagged union) of values. Each item of the disjoint set is referred to as a **variant**. - -```grammar -Enum ::= "enum" [Name] [Generics]? "{" [[Variant]]","* "}" - -Variant ::= [Name] "(" [Type] ")" -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/examples/shapes.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Expr.md b/arc-docs/src/arc-lang/Expr.md deleted file mode 100644 index 65c21bcf0..000000000 --- a/arc-docs/src/arc-lang/Expr.md +++ /dev/null @@ -1,160 +0,0 @@ -# Expressions - -An **expression** is syntactic construct which can be evaluated into a **value**. - -```grammar -Expr ::= - | [Name] # Variable reference - | [Path] # Item reference - | [Value] # Value literal - | "(" [[BinOp]] ")" # Binary operator reference - | "_" # Placeholder - | [[Query]] # Query expression - | [[Constructor]] # Constructor expression - | [[Operation]] # Operation expression - | [[ControlFlow]] # Control flow expression - | [[DataFlow]] # Dataflow expression - -Constructor ::= - | "#{" ([Name] ":" [Expr])","* "}" # Record-construction - | "(" [Expr]","+ ")" # Tuple-construction - | "[" [Expr]","* "]" # Array-construction - | [Expr]? ".." ("="? [Expr])? # Range-construction - | "fun" [Params] (":" [Type])? "=" [Expr] # Lambda-function construction - | "task" [Params]? ":" [Params] "=" [Expr] # Lambda-task construction - | [Path] "(" [Expr] ")" # Enum-variant construction - -Operation ::= - | [Expr] [[BinOp]] [Expr] # Binary operation - | [Expr] [[UnOp]] # Unary operator - | [Expr] "(" [Expr]","* ")" # Function call - | [Expr] "." [Name] # Field projection - | [Expr] "." [0-9]+ # Index projection - | [Expr] "as" [Type] # Type cast - | [Expr] "in" [Expr] # Contains - | [Expr] "not" "in" [Expr] # Does not contain - -UnOp ::= - | "-" # Arithmetic negation - | "not" # Logical negation - -BinOp ::= - | "+" | "-" | "*" | "/" | "**" | "%" # Arithmetic - | "==" | "!=" | "<" | ">" | "<=" | ">=" # Equality and comparison - | "and" | "or" | "xor" | "band" | "bor" | "bxor" # Logical and bitwise - -ControlFlow ::= - | "if" [Expr] [Block] ("else" [Block])? # If-else-expression - | "match" [Expr] "{" ([Pattern] ("if" [Expr])? "=>" [Expr])","+ "}" # Match-expression - | "for" [Pattern] "in" [Expr] "{" [Expr] "}" # For-loop - | "while" [Expr] [Block] # While-loop - | "loop" [Block] # Infinite loop - | "break" | "continue" | "return" [Expr]? # Jumps - | "try" [Expr] "catch" ([Pattern] "=>" [Expr])","+ ("finally" [Expr])? # Exceptions - | "[" [Expr] "for" [Pattern] "in" [Expr] ("if" [Expr])* "]" # Comprehension - -DataFlow ::= - | "receive" [Expr] # Selective receive - | "on" "{" ([Pattern] "in" [Expr] "=>" [Expr])","+ "}" # Non-selective receive - | [Expr] "!" [Expr] # Emit event - -Query ::= "from" ([Pattern] "in" [Expr])","+ [[QueryStmt]]+ - -QueryStmt ::= - | "yield" [Expr] # Select - | "where" [Expr] # Filter - | "join" [Expr] ("on" [Expr])? # Join - | "keyby" (([Name] "=")? [Expr])","* # Partition - | "compute" ([Name] "=")? [Expr] ("of" [Expr])? # Aggregation - | "sort" [Expr] "desc"? # Sort - | "window" [Expr] ("every" [Expr])? ("at" [Expr])? # Sliding or tumbling window -``` - -## Operators - -Operators are defined as follows, with precedence from highest to lowest: - -| Operator | Arity | Affix | Associativity | Overloadable? | -| ---------------------------------------------- | ----- | ----- | ------------- | ------------ | -| `return` `break` | Unary | Prefix* | | No | -| `fun` `task` `on` | Unary | Prefix | | No | -| `=` `!` `+=` `-=` `%=` `*=` `/=` `**=` | Binary | Infix | None | No | -| `in` `not in` | Binary | Infix | Left | No | -| `..` `..=` | Binary | Infix | None | No | -| `and` `or` `xor` `bor` `band` `bxor` | Binary | Infix | Left | Yes | -| `==` `!=` | Binary | Infix | None | No | -| `<` `>` `<=` `>=` | Binary | Infix | None | No | -| `-` `+` `%` | Binary | Infix | Left | Yes | -| `*` `/` | Binary | Infix | Left | Yes | -| `**` | Binary | Infix | Right | Yes | -| `not` `-` | Unary | Prefix | | Yes | -| `as` | Binary | Infix | Left | No | -| `(exprs)` `[exprs]` | Unary | Postfix | | No | -| `.index` `.name` `.name(exprs)` `.name[exprs]` | Unary | Postfix | | No | -| Primary expressions | Nullary | | | No | - -(*) Operand is optional. - -## Builtin Functions - -The builtin functions of Arc-Lang are listed here. - -```arc-lang -{{#exec grep -F 'extern def' ../arc-lang/stdlib/stdlib.arc}} -``` - -## Examples - -### Basic function calls - -```arc-lang -{{#include ../../../arc-lang/examples/basic.arc:example}} -``` - -### Lambda functions - -```arc-lang -{{#include ../../../arc-lang/examples/lambda.arc:example}} -``` - -### Binary operators - -```arc-lang -{{#include ../../../arc-lang/examples/binops.arc:example}} -``` - -### Comprehensions - -```arc-lang -{{#include ../../../arc-lang/examples/comprehensions.arc:example}} -``` - -### Placeholders - -```arc-lang -{{#include ../../../arc-lang/examples/placeholder.arc:example}} -``` - -### Binary operator lifting - -```arc-lang -{{#include ../../../arc-lang/examples/binopref.arc:example}} -``` - -### String interpolation - -```arc-lang -{{#include ../../../arc-lang/examples/interpolate.arc:example}} -``` - -### Query (with explicit variables) - -```arc-lang -{{#include ../../../arc-lang/examples/query.arc:explicit}} -``` - -### Query (with implicit variables) - -```arc-lang -{{#include ../../../arc-lang/examples/query.arc:implicit}} -``` diff --git a/arc-docs/src/arc-lang/ExternDef.md b/arc-docs/src/arc-lang/ExternDef.md deleted file mode 100644 index bd39da50c..000000000 --- a/arc-docs/src/arc-lang/ExternDef.md +++ /dev/null @@ -1,13 +0,0 @@ -# Extern Functions - -An **extern function** is a function-declaration whose implementation is defined externally, outside of Arc-Lang, inside Rust. - -```grammar -ExternDef ::= "extern" "def" [Name] [Generics]? "(" [Type]","* ")" ":" [Type] ";" -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/stdlib/stdlib.arc:string}} -``` diff --git a/arc-docs/src/arc-lang/ExternType.md b/arc-docs/src/arc-lang/ExternType.md deleted file mode 100644 index e0fa219bd..000000000 --- a/arc-docs/src/arc-lang/ExternType.md +++ /dev/null @@ -1,15 +0,0 @@ -# Extern types - -An **extern type** is an abstract data type with methods whose implementations are defined in Rust. - -```grammar -ExternType ::= "extern" "type" [Name] [Generics]? ";" -``` - -## Example - -The following code shows how to define an extern type `String` in arc-lang. - -```arc-lang -{{#include ../../../arc-lang/stdlib/stdlib.arc:array}} -``` diff --git a/arc-docs/src/arc-lang/Generics.md b/arc-docs/src/arc-lang/Generics.md deleted file mode 100644 index f5b22312a..000000000 --- a/arc-docs/src/arc-lang/Generics.md +++ /dev/null @@ -1,25 +0,0 @@ -# Generics - -Items can be parameterised by generic types. Generics can in addition be bounded by type class constraints. - -```grammar -Generics ::= "[" [[Generic]]","+ "]" - -Generic ::= [Name] [[Bounds]]? - -Bounds ::= ":" [Path]"&"+ -``` - -## Examples - -### Explicit generic function - -```arc-lang -{{#include ../../../arc-lang/examples/generic-function.arc:example}} -``` - -### Inferred generic function - -```arc-lang -{{#include ../../../arc-lang/examples/inferred.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Global.md b/arc-docs/src/arc-lang/Global.md deleted file mode 100644 index a4c32dd2f..000000000 --- a/arc-docs/src/arc-lang/Global.md +++ /dev/null @@ -1,15 +0,0 @@ -# Globals - -A **global** is an *immutable* variable which can be referenced by-path. - -```grammar -Global ::= "val" [Name] "=" [Value] ";" -``` - -## Example - -The following code initializes two global variables, one by a literal, and another by calling a function. - -```arc-lang -{{#include ../../../arc-lang/examples/global.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Instance.md b/arc-docs/src/arc-lang/Instance.md deleted file mode 100644 index ec28a946a..000000000 --- a/arc-docs/src/arc-lang/Instance.md +++ /dev/null @@ -1,13 +0,0 @@ -# Type Class Instances - -Type class instances are written with the `instance` keyword. - -```grammar -TypeClass ::= "class" [Name] [Generics]? "{" [Def]","+ "}" -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/examples/type-class.arc:instance}} -``` diff --git a/arc-docs/src/arc-lang/Item.md b/arc-docs/src/arc-lang/Item.md deleted file mode 100644 index 5ed3983e4..000000000 --- a/arc-docs/src/arc-lang/Item.md +++ /dev/null @@ -1,16 +0,0 @@ -# Items - -An **item** is a named top-level definition which can be referenced by path. The ordering of how items are defined in the source code insignificant. Items can be prefixed by annotations for configuration. - -```grammar -Item ::= - | [Annots]? [Global] # Global immutable value - | [Annots]? [Def] # Function definition - | [Annots]? [Task] # Task definition - | [Annots]? [TypeAlias] # Type alias - | [Annots]? [ExternDef] # Extern function declaration - | [Annots]? [ExternType] # Extern type declaration - | [Annots]? [Enum] # Disjoint union - | [Annots]? [Use] # Import - | [Annots]? [Module] # Module -``` diff --git a/arc-docs/src/arc-lang/Module.md b/arc-docs/src/arc-lang/Module.md deleted file mode 100644 index f7a87207d..000000000 --- a/arc-docs/src/arc-lang/Module.md +++ /dev/null @@ -1,27 +0,0 @@ -# Modules - -A **module** is a named unit of encapsulation which may contain items and other modules. - -```grammar -Module ::= "mod" [Name] "{" [Item]* "}" -``` - -Modules form a hierarchy through nesting. This hierarchy is in addition tied to the file system hierarchy (similar to Rust): - -```text -my-project/ - src/ - main.arc # :: (root module) - foo/ - mod.arc # ::foo - bar/ - mod.arc # ::foo::bar - baz/ - mod.arc # ::foo::baz -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/examples/modules.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Name.md b/arc-docs/src/arc-lang/Name.md deleted file mode 100644 index ed40fcad5..000000000 --- a/arc-docs/src/arc-lang/Name.md +++ /dev/null @@ -1,13 +0,0 @@ -# Names - -A **name** is a symbolic identifier which can be assigned to a **variable** or **item**. - -```grammar -Name ::= [a-zA-Z_][a-zA-Z_0-9]* -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/examples/names.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Params.md b/arc-docs/src/arc-lang/Params.md deleted file mode 100644 index 8c2ca7d8d..000000000 --- a/arc-docs/src/arc-lang/Params.md +++ /dev/null @@ -1,15 +0,0 @@ -# Parameters - -Parameters are used in function and task definitions. In general, they do not need to be type annotated. - -```grammar -Params ::= "(" [Param]","+ ")" - -Param ::= [Pattern] (":" [Type] )? -``` - -### Examples - -```arc-lang -{{#include ../../../arc-lang/examples/params.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Path.md b/arc-docs/src/arc-lang/Path.md deleted file mode 100644 index 006f5b7bf..000000000 --- a/arc-docs/src/arc-lang/Path.md +++ /dev/null @@ -1,20 +0,0 @@ -# Paths - -A **path** is a list of names which point to an **item** in the module hierarchy. - -```grammar -Path ::= "::"? [Name]"::"* [Name] -``` - -Paths can be both *relative* and *absolute*. Absolute paths are absolute with respect to the root of the module hierarchy. Relative paths are relative with respect to the current namespace. - -```arc-lang -mod1::mod2::MyItem # Relative path -::mod1::mod2::MyItem # Absolute path -``` - -### Examples - -```arc-lang -{{#include ../../../arc-lang/examples/paths.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Pattern.md b/arc-docs/src/arc-lang/Pattern.md deleted file mode 100644 index 6bb62db2c..000000000 --- a/arc-docs/src/arc-lang/Pattern.md +++ /dev/null @@ -1,40 +0,0 @@ -# Patterns - -A **pattern** is a syntactic construct for deconstructing a **value** and binding its parts to variables. - -```grammar -Pattern ::= - | [Name] # Variable binding - | [Value] # Value comparison - | "{" ([Name] (":" [Pattern])?)","+ "}" # Record deconstruction - | "(" [Pattern]","+ ")" # Tuple deconstruction - | [Pattern]? ".." ("="? [Pattern])? # Range deconstruction - | [Path] "(" [Pattern] ")" # Variant deconstruction - | [Pattern] "or" [Pattern] # Alternation -``` - -## Examples - -### Tuples - -```arc-lang -{{#include ../../../arc-lang/examples/tuple-patterns.arc:example}} -``` - -### Records - -```arc-lang -{{#include ../../../arc-lang/examples/record-patterns.arc:example}} -``` - -### Enums - -```arc-lang -{{#include ../../../arc-lang/examples/enum-patterns.arc:example}} -``` - -### Enums - -```arc-lang -{{#include ../../../arc-lang/examples/vector-patterns.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Program.md b/arc-docs/src/arc-lang/Program.md deleted file mode 100644 index d5b7503aa..000000000 --- a/arc-docs/src/arc-lang/Program.md +++ /dev/null @@ -1,15 +0,0 @@ -# Programs - -An Arc-Lang program is a sequence of items. Programs start their execution from a main function. - -```grammar -Program ::= [Item]* -``` - -Source files are suffixed with the `.arc` file extension. - -### Examples - -```arc-lang -{{#include ../../../arc-lang/examples/program.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Query.md b/arc-docs/src/arc-lang/Query.md deleted file mode 100644 index 3140b87f7..000000000 --- a/arc-docs/src/arc-lang/Query.md +++ /dev/null @@ -1,11 +0,0 @@ -# Queries - -Queries can be formulated over data streams using the `from` keyword, followed by a list of statements. - -``` -Query ::= - -``` - -### Examples - diff --git a/arc-docs/src/arc-lang/Stmt.md b/arc-docs/src/arc-lang/Stmt.md deleted file mode 100644 index 169521132..000000000 --- a/arc-docs/src/arc-lang/Stmt.md +++ /dev/null @@ -1,10 +0,0 @@ -# Statements - -A **statement** is either a variable assignment or an expression whose result is ignored. - -```grammar -Stmt ::= - | ";" - | [Expr] ";" - | [Assign] -``` diff --git a/arc-docs/src/arc-lang/Task.md b/arc-docs/src/arc-lang/Task.md deleted file mode 100644 index dd2c44d96..000000000 --- a/arc-docs/src/arc-lang/Task.md +++ /dev/null @@ -1,29 +0,0 @@ -# Tasks - -A **task** is an asynchronous function which can suspend its execution to wait for events. The `receive`, `on`, and `!` expressions can (for now) only be used inside tasks. - -```grammar -Task ::= "task" [Name] [Generics]? [Params] ":" [Params] [Block] -``` - -## Examples - -### Basic task - -```arc-lang -{{#include ../../../arc-lang/examples/task-identity.arc:example}} -``` - -### Lambda tasks - -```arc-lang -{{#include ../../../arc-lang/examples/task-lambda.arc:example}} -``` - -### Multi-Input Tasks - -```arc-lang -{{#include ../../../arc-lang/examples/task-merge.arc:example}} -``` - -### Multi-Output Tasks diff --git a/arc-docs/src/arc-lang/Type.md b/arc-docs/src/arc-lang/Type.md deleted file mode 100644 index bd6803415..000000000 --- a/arc-docs/src/arc-lang/Type.md +++ /dev/null @@ -1,32 +0,0 @@ -# Types - -All expressions in arc-lang have a statically inferred type which indicates what set of values they evaluate into. Types of items and variables can be inferred, and thus do not need to be annotated unless desired. - -```grammar -Type ::= - | "#{" ([Name] ":" [Type])","+ "}" # Record-type - | "(" [Type]","+ ")" # Tuple-type - | "fun" "(" [Type]","+ ")" ":" [Type] # Function-type - | [Type]? ".." ("="? [Type])? # Range-type - | [Path] ("[" [Type]","* "]")? # Item-type (with optional type parameters) -``` - -## Examples - -Some examples of different types: - -```arc-lang -{{#include ../../../arc-lang/examples/types.arc:record}} -{{#include ../../../arc-lang/examples/types.arc:tuple}} -{{#include ../../../arc-lang/examples/types.arc:function}} -{{#include ../../../arc-lang/examples/types.arc:inclusive_range}} -{{#include ../../../arc-lang/examples/types.arc:exclusive_range}} -``` - -# Standard types - -The following types are provided in the [standard library](https://github.com/cda-group/arc/blob/master/arc-lang/stdlib/stdlib.arc) of Arc-Lang: - -```arc-lang -{{#exec grep -F 'extern type' ../arc-lang/stdlib/stdlib.arc}} -``` diff --git a/arc-docs/src/arc-lang/TypeAlias.md b/arc-docs/src/arc-lang/TypeAlias.md deleted file mode 100644 index cc9f91ac9..000000000 --- a/arc-docs/src/arc-lang/TypeAlias.md +++ /dev/null @@ -1,15 +0,0 @@ -# Type Aliases - -A **type alias** is a purely cosmetic alias of a type. - -```grammar -TypeAlias ::= "type" [Name] [Generics]? "=" [Type] ";" -``` - -## Example - -The following code defines type aliases for representing lines on a two-dimensional plane, and a function for calculating the length of a line. - -```arc-lang -{{#include ../../../arc-lang/examples/type-alias.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/TypeClass.md b/arc-docs/src/arc-lang/TypeClass.md deleted file mode 100644 index 8db7e1a0a..000000000 --- a/arc-docs/src/arc-lang/TypeClass.md +++ /dev/null @@ -1,15 +0,0 @@ -# Type Classes - -Type classes are written with the `class` keyword. - -```grammar -TypeClass ::= "class" [Name] [Generics]? "{" [[Decl]]","+ "}" - -Decl ::= "def" [Name] [Generics]? "(" [Type]","+ ")" -``` - -## Examples - -```arc-lang -{{#include ../../../arc-lang/examples/type-class.arc:class}} -``` diff --git a/arc-docs/src/arc-lang/Use.md b/arc-docs/src/arc-lang/Use.md deleted file mode 100644 index 290cd0b50..000000000 --- a/arc-docs/src/arc-lang/Use.md +++ /dev/null @@ -1,16 +0,0 @@ -# Uses - -A **use**-item imports a name into the current namespace and optionally aliases it. - - -```grammar -Use ::= "use" [Path] ("as" [Name])?; -``` - -## Examples - -The following code creates a `Person`-type and an alias and use it as a `Human`. - -```arc-lang -{{#include ../../../arc-lang/examples/uses.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/Value.md b/arc-docs/src/arc-lang/Value.md deleted file mode 100644 index dc94399f0..000000000 --- a/arc-docs/src/arc-lang/Value.md +++ /dev/null @@ -1,47 +0,0 @@ -# Values - -A **value** is the result of evaluating an **expression**. - -```grammar -Value ::= - | "#{" ([Name] ":" [Value])","+ "}" # Record-value - | "(" [Value]","+ ")" # Tuple-value - | "fun" "(" ([Pattern] ":" [Type])","+ ")" ":" [Expr] # Lambda-value - | [Value]? ".." ("="? [Value])? # Range-value - | [Path] # Item-value - | [Path] "(" [Value] ")" # Enum-value - | [Literal] - -Literal ::= - | "true" | "false" # Literal boolean - | "unit" # Literal unit - | "'"[^"'"]"'" # Literal character - | """[^"""]*""" # Literal string - | ["1"-"9"]["0"-"9"]* # Literal integer - | ["1"-"9"]["0"-"9"]*"."["0"-"9"]* # Literal floating point - | [[DateTime]] - | [[Duration]] - -DateTime ::= - | ["0"-"9"]+"-"["0"-"9"]+"-"["0"-"9"]+ # Date - | ["0"-"9"]+"-"["0"-"9"]+"-"["0"-"9"]+"T"["0"-"9"]+":"["0"-"9"]+":"["0"-"9"]+ # Date + Time - | ["0"-"9"]+"-"["0"-"9"]+"-"["0"-"9"]+"T"["0"-"9"]+":"["0"-"9"]+":"["0"-"9"]+("+"|"-")["0"-"9"]+":"["0"-"9"]+ # Date + Time + Zone - -Duration ::= - | ["0"-"9"]+"ns" # Nanosecond - | ["0"-"9"]+"us" # Microsecond - | ["0"-"9"]+"ms" # Millisecond - | ["0"-"9"]+"s" # Second - | ["0"-"9"]+"m" # Minute - | ["0"-"9"]+"h" # Hour - | ["0"-"9"]+"d" # Day - | ["0"-"9"]+"w" # Week -``` - -## Examples - -Some examples of different values: - -```arc-lang -{{#include ../../../arc-lang/examples/values.arc:example}} -``` diff --git a/arc-docs/src/arc-lang/mod.md b/arc-docs/src/arc-lang/mod.md deleted file mode 100644 index a96ae0404..000000000 --- a/arc-docs/src/arc-lang/mod.md +++ /dev/null @@ -1,26 +0,0 @@ -# Language Reference - -The core concepts of Arc are: - -* [**Names**](Name.md) -* [**Paths**](Path.md) -* [**Values**](Value.md) -* [**Types**](Type.md) -* [**Expressions**](Expr.md) -* [**Patterns**](Pattern.md) -* [**Items**](Item.md) - -In the following sections, we will explain each concept by presenting its syntax and discussing its semantics through examples. Syntax will be explained using a Regex-based variation of the BNF grammar where: - -* `+` and `*` denote repetition. -* `?` is for optional rules. -* `(` `)` indicates grouping. -* `|` is for alternation. -* `[` `]` for is character-alternation (e.g., `abc`). -* `-` is for ranges (e.g., `a-zA-Z`). -* `.` is for matching any character. -* `\` is for escaping characters. -* Non-terminals are written as uppercase (e.g., `Expr`). -* Terminals are written in blue text (e.g., ) - -Some code examples do not yet compile. These are highlighted with an orange background. diff --git a/arc-docs/src/command-line-interface.md b/arc-docs/src/command-line-interface.md deleted file mode 100644 index 93c42785f..000000000 --- a/arc-docs/src/command-line-interface.md +++ /dev/null @@ -1 +0,0 @@ -# Command Line Interface diff --git a/arc-docs/src/dev/arc-mlir/Block.md b/arc-docs/src/dev/arc-mlir/Block.md deleted file mode 100644 index fa45aae6f..000000000 --- a/arc-docs/src/dev/arc-mlir/Block.md +++ /dev/null @@ -1,7 +0,0 @@ -# Blocks - -A **block** is a sequence of operations. - -```grammar -Block ::= "{" [Operation]* "}" -``` diff --git a/arc-docs/src/dev/arc-mlir/Func.md b/arc-docs/src/dev/arc-mlir/Func.md deleted file mode 100644 index 65e9dc2fd..000000000 --- a/arc-docs/src/dev/arc-mlir/Func.md +++ /dev/null @@ -1,5 +0,0 @@ -# Functions - -```grammar -Func ::= "func" [Path] "(" [Params] ")" "->" [Type] [Block] -``` diff --git a/arc-docs/src/dev/arc-mlir/Item.md b/arc-docs/src/dev/arc-mlir/Item.md deleted file mode 100644 index 2eaf2f79d..000000000 --- a/arc-docs/src/dev/arc-mlir/Item.md +++ /dev/null @@ -1,6 +0,0 @@ -# Items - -```grammar -Item ::= - | [Func] -``` diff --git a/arc-docs/src/dev/arc-mlir/Name.md b/arc-docs/src/dev/arc-mlir/Name.md deleted file mode 100644 index eb710ac00..000000000 --- a/arc-docs/src/dev/arc-mlir/Name.md +++ /dev/null @@ -1,7 +0,0 @@ -# Names - -A **name** is a symbolic identifier which can be assigned to a **variable** or **item**. - -```grammar -Name ::= [a-zA-Z_][a-zA-Z_0-9]* -``` diff --git a/arc-docs/src/dev/arc-mlir/Operation.md b/arc-docs/src/dev/arc-mlir/Operation.md deleted file mode 100644 index e104c40b3..000000000 --- a/arc-docs/src/dev/arc-mlir/Operation.md +++ /dev/null @@ -1,80 +0,0 @@ -# Operations - -This section describes the operations of Arc-MLIR. - -```grammar -Operation ::= - | [[Arc]] - | [[Std]] - | [[Deprecated]] - -Arc ::= - | "arc.keep" "(" [Value] ")" ":" "(" [Type] ")" "->" "()" - | "arc.tan" [Value] ":" [Type] - | "arc.acos" [Value] ":" [Type] - | "arc.asin" [Value] ":" [Type] - | "arc.cosh" [Value] ":" [Type] - | "arc.sinh" [Value] ":" [Type] - | "arc.erf" [Value] ":" [Type] - | "arc.make_struct" "(" [Value]","* ":" [Type]","* ")" ":" [Type] - | "arc.make_enum" [Value] "(" [Value] ":" [Type] ")" ":" [Type] - | "arc.if" "(" [Value] ")" "(" [Block]"," [Block] ")" - | "arc.loop.break" "(" [Value]","+ ")" ":" "(" [Type]","+ ")" "->" "()" - | "arc.adt_constant" [[String]] ":" [Type] - | "arc.constant" [Literal] ":" [Type] - | "arc.cmpi" [[Cmp]]"," [Value]"," [Value] ":" [Type] - | "arc.receive" "(" [Value] ")" ":" "(" [Type] ")" "->" [Type] - | "arc.select" [Value]"," [Value]"," [Value] ":" [Type] - | "arc.send" "(" [Value]"," [Value] ")" "->" "()" - | "arc.enum_access" [[String]] "in" "(" [Value] ":" [Type] ")" ":" [Type] - | "arc.enum_check" "(" [Value] ":" [Type] ")" "is" [[String]] ":" [Type] - | "arc.struct_access" "(" [Value] ")" "{" "field" "=" [[String]] "}" ":" "(" [Type] ")" "->" [Type] - | "arc.addi" [Value]"," [Value] ":" [Type] - | "arc.and" [Value]"," [Value] ":" [Type] - | "arc.divi" [Value]"," [Value] ":" [Type] - | "arc.or" [Value]"," [Value] ":" [Type] - | "arc.muli" [Value]"," [Value] ":" [Type] - | "arc.subi" [Value]"," [Value] ":" [Type] - | "arc.remi" [Value]"," [Value] ":" [Type] - | "arc.xor" [Value]"," [Value] ":" [Type] - | "arc.panic" "()" ("msg" "=" [[String]])? : "()" "->" "()" - -Std ::= - | "call" [Path] "(" [Value]","+ ")" ":" "(" [Type]","+ ")" "->" [Type] - | "call_indirect" [Value] "(" [Value]","+ ")" ":" "(" [Type]","+ ")" "->" [Type] - | "return" "(" [Value] ")" ":" "(" [Type] ")" "->" "()" - -Deprecated ::= # Deprecated and unused operations - | "arc.emit" "(" [Value]"," [Value] ")" "->" "(" [Type]"," [Type] ")" "->" "()" - | "arc.make_vector" "(" [Value]","* ")" ":" ([Type]","*) "->" [Type] - | "arc.make_tuple" "(" [Value]","* ")" ":" "(" [Type]","* ")" "->" [Type] - | "arc.make_tensor" "(" [Value]","* ")" ":" "(" [Type]","* ")" - | "arc.index_tuple" "(" [Value] ")" "{" "index" "=" [[Int]] "}" ":" "(" [Type] ")" "->" [Type] - | "arc.make_appender" "()" ":" "()" -> [Type] - | "arc.merge" "(" [Value]"," [Value] ")" ":" "(" [Type]","* ")" "->" [Type] - | "arc.result" "(" [Value] ")" ":" "(" [Type]","* ")" "->" [Type] - | "arc.appender_push" "(" [Value]"," [Value] ")" ":" "(" [Type]"," [Type] ")" "->" "()" - | "arc.appender_fold" "(" [Value]"," [Value] ")" ":" "(" [Type]"," [Type] ")" "->" [Type] - | "arc.map_contains" "(" [Value]"," [Value] ")" ":" "(" [Type]"," [Type] ")" "->" [Type] - | "arc.map_get" "(" [Value]"," [Value] ")" ":" "(" [Type]"," [Type] ")" "->" [Type] - | "arc.map_insert" "(" [Value]"," [Value]"," [Value] ")" ":" "(" [Type]"," [Type]"," [Type] ")" "->" [Type] - | "arc.map_remove" "(" [Value]"," [Value] ")" ":" "(" [Type]"," [Type] ")" "->" [Type] - | "arc.value_write" "(" [Value]"," [Value] ")" ":" "(" [Type]"," [Type] ")" "->" [Type] - | "arc.value_read" "(" [Value] ")" ":" "(" [Type] ")" "->" [Type] - -Int ::= ["1"-"9"]["0"-"9"]*"."["0"-"9"]* - -String ::= """[^"""]*""" - -Literal ::= - | Int - | String - -Cmp ::= "eq" | "ne" | "lt" | "le" | "gt" | "ge" -``` - -## Builtin functions - -```arc-lang -{{#exec grep -h -o 'func [^{]*' ../arc-lang/stdlib/stdlib.mlir}} -``` diff --git a/arc-docs/src/dev/arc-mlir/Params.md b/arc-docs/src/dev/arc-mlir/Params.md deleted file mode 100644 index f4a30cadd..000000000 --- a/arc-docs/src/dev/arc-mlir/Params.md +++ /dev/null @@ -1,7 +0,0 @@ -# Parameters - -```grammar -Params ::= [[Param]]","* - -Param ::= [Value] ":" [Type] -``` diff --git a/arc-docs/src/dev/arc-mlir/Program.md b/arc-docs/src/dev/arc-mlir/Program.md deleted file mode 100644 index 0a00c8021..000000000 --- a/arc-docs/src/dev/arc-mlir/Program.md +++ /dev/null @@ -1,5 +0,0 @@ -# Programs - -```grammar -Program ::= "mod" [Path] "{" [Item]","* "}" -``` diff --git a/arc-docs/src/dev/arc-mlir/Type.md b/arc-docs/src/dev/arc-mlir/Type.md deleted file mode 100644 index cc215a6db..000000000 --- a/arc-docs/src/dev/arc-mlir/Type.md +++ /dev/null @@ -1,21 +0,0 @@ -# Types - -Unlike Arc-Lang, Arc-MLIR has no nominal types. - -```grammar -Type ::= - | "!arc.struct" "<" ([Name] ":" [Type])","* ">" - | "!arc.enum" "<" ([Name] ":" [Type])","* ">" - | "!arc.adt" "<" [String] ">" - | "!arc.stream" "<" [Type] ">" - | "f32" | "f64" | "i32" | "i64" | "si32" | "si64" - | "()" - | [[Deprecated]] - -Deprecated ::= # Deprecated and unused types - | "!arc.arcon.value" "<" [Type] ">" - | "!arc.arcon.appender" "<" [Type] ">" - | "!arc.arcon.map" "<" [Type]"," [Type] ">" - -String ::= """[^"""]*""" -``` diff --git a/arc-docs/src/dev/arc-mlir/Value.md b/arc-docs/src/dev/arc-mlir/Value.md deleted file mode 100644 index 8d8cca3a9..000000000 --- a/arc-docs/src/dev/arc-mlir/Value.md +++ /dev/null @@ -1,5 +0,0 @@ -# Values - -```grammar -Value ::= "%" [Name] -``` diff --git a/arc-docs/src/dev/arc-mlir/mod.md b/arc-docs/src/dev/arc-mlir/mod.md deleted file mode 100644 index fceaf1272..000000000 --- a/arc-docs/src/dev/arc-mlir/mod.md +++ /dev/null @@ -1,3 +0,0 @@ -# Language Reference - -This section gives a definition of Arc-MLIR's grammar. diff --git a/arc-docs/src/dev/arc-runtime/data-model.md b/arc-docs/src/dev/arc-runtime/data-model.md deleted file mode 100644 index cdaf25e09..000000000 --- a/arc-docs/src/dev/arc-runtime/data-model.md +++ /dev/null @@ -1,26 +0,0 @@ -# Data Model - -Values in Arc-Lang appear -Values in Arc-Lang are separated into semantic categories. - -## Copying Semantics - -All values in Arc-Lang can be sent over channels - -Those which are fixed-size and - -* Fixed-size vs dynamic-size -* Interior Mutability vs -* QoL: Debug, Clone -* Sharable vs Sendable -* Garbage collection -Values in Arc-Lang appear to the programmer as -Every value in Arc-Runtime Arc-Runtime has two kinds of values - -Now: -* Writing a lot about tasks and channels in Arc-Lang -* Writing about other parts: arc-runtime, language integrated queries -* Reading Martin Klepmann's book to find applications - * Edge vs Cloud - * Fault-tolerance - * Meeting with students diff --git a/arc-docs/src/dev/arc-runtime/execution-model.md b/arc-docs/src/dev/arc-runtime/execution-model.md deleted file mode 100644 index 9658fe4c1..000000000 --- a/arc-docs/src/dev/arc-runtime/execution-model.md +++ /dev/null @@ -1,3 +0,0 @@ -# Execution Model - -Arc-Runtime is implemented on top of the [Kompact](https://github.com/kompics/kompact) framework. To understand how Arc-Runtime executes, diff --git a/arc-docs/src/dev/arc-runtime/mod.md b/arc-docs/src/dev/arc-runtime/mod.md deleted file mode 100644 index e4a138f23..000000000 --- a/arc-docs/src/dev/arc-runtime/mod.md +++ /dev/null @@ -1,7 +0,0 @@ -# Arc-Runtime Reference - -Arc-Runtime is a runtime library, for executing Arc-Lang programs, which focuses on flexibility, portability, native performance, and scalability. Its API provides lower-level abstractions than Arc-Lang that are more general but less safe. Programs written directly in Arc-Runtime can for example deadlock if the programmer is not careful, while Arc-Lang's parser and type system prevents such behavior. Arc-MLIR and Arc-Runtime share different responsibilities in making Arc-Lang programs execute efficiently. - -Arc-MLIR supports ahead-of-time standard compiler optimisations as well as logical and physical optimisations of streaming-relational operators. However, Arc-MLIR makes no assumptions of where programs will execute and what the input data will be. That is, all Arc-MLIR optimisations are based on the source code itself. - -Arc-Runtime supports runtime optimisations which might rely on information that is only known during execution. Streaming programs are expected to run for an indefinite duration and must therefore be able to adapt to changes in their environment. Among its responsibilities, Arc-Runtime must therefore be able to take care of specialisation, scheduling, and scaling decisions. diff --git a/arc-docs/src/dev/ci.md b/arc-docs/src/dev/ci.md deleted file mode 100644 index 2eaa7d14e..000000000 --- a/arc-docs/src/dev/ci.md +++ /dev/null @@ -1,93 +0,0 @@ -Below are instructions for setting up a custom runner, running in a Docker container, for GitHub actions. - -```bash -# Setup docker - -docker pull ubuntu:18.04 -docker run -i -t ubuntu:18.04 /bin/bash - -# Setup user - -passwd # change root password -adduser arc-runner sudo -su -l arc-runner - -# Install apt dependencies - -sudo add-apt-repository ppa:git-core/ppa -y -sudo apt update && apt upgrade -y -sudo apt install -y git vim curl z3 libz3-dev curl libssl-dev gcc pkg-config make ninja-build python zip openjdk-8-jdk software-properties-common texlive-xetex latexmk gettext ccache - -# Install Rust - -curl https://sh.rustup.rs -sSf | sh -source $HOME/.cargo/env -echo 'source $HOME/.cargo/env' >> ~/.bashrc -rustup toolchain add nightly -rustup target add wasm32-unknown-unknown -rustup default nightly -cargo install mdbook -cargo install sccache - -# Install Cmake - -cd ~/ -curl -L https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1.tar.gz --output cmake.tar.gz -tar -xf cmake.tar.gz -cd cmake-3.18.1/ -./bootstrap -make -make install - -# Install LLVM - -curl -L https://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz --output llvm.tar.xz -tar -xf llvm.tar.xz -mv clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04 llvm -cd llvm -export PATH=~/llvm/bin:$PATH -export LD_LIBRARY_PATH=~/llvm/lib:$LD_LIBRARY_PATH -echo 'export PATH=~/llvm/bin:$PATH' >> ~/.bashrc -echo 'export LD_LIBRARY_PATH=~/llvm/lib:$LD_LIBRARY_PATH' >> ~/.bashrc - -# Install OCaml - -sudo bash -c "sh <(curl -fsSL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)" -opam init # Make sure to disable sandboxing -eval $(opam env) -opam switch create 4.13.1 -eval $(opam env) -opam install core -opam install dune -opam install menhir - -# Install GitHub Actions Runner - -# Follow this tutorial (Which generates a unique token): -# https://github.com/cda-group/arc/settings/actions/runners/new?arch=x64&os=linux - -# Setup Runner - -./run.sh & -disown - -# To exit the container: - -# [OPTIONAL] Check that everything builds - -cd ~ -git clone https://github.com/cda-group/arc -cd ~/arc -git checkout mlir -git submodule update --init --recursive - -# Check if arc-lang builds - -cd ~/arc/arc-lang -cargo check --all-features --tests --bins --examples --benches - -# Check if arc-mlir builds - -cd ~/arc/arc-mlir/ -./arc-mlir-build -``` diff --git a/arc-docs/src/dev/mod.md b/arc-docs/src/dev/mod.md deleted file mode 100644 index 459110d34..000000000 --- a/arc-docs/src/dev/mod.md +++ /dev/null @@ -1 +0,0 @@ -# Development diff --git a/arc-docs/src/examples/mod.md b/arc-docs/src/examples/mod.md deleted file mode 100644 index 1c0a34766..000000000 --- a/arc-docs/src/examples/mod.md +++ /dev/null @@ -1,3 +0,0 @@ -# Examples - -In this section we describe examples of how to use Arc-Lang. diff --git a/arc-docs/src/examples/oltp.md b/arc-docs/src/examples/oltp.md deleted file mode 100644 index adfb941ef..000000000 --- a/arc-docs/src/examples/oltp.md +++ /dev/null @@ -1 +0,0 @@ -# OLTP diff --git a/arc-docs/src/examples/pulse-detection.md b/arc-docs/src/examples/pulse-detection.md deleted file mode 100644 index 689b6843b..000000000 --- a/arc-docs/src/examples/pulse-detection.md +++ /dev/null @@ -1,79 +0,0 @@ -# [Pulse Detection](https://dl.acm.org/doi/pdf/10.1145/3428251) (Not yet fully supported) - -> Arterial Blood Pressure (ABP) pulse detection [O’Rourke 1971; Zong et al. 2003] is a complex streaming computation, and is difficult to express with existing languages for stream processing. The use of a streaming query language for medical monitoring applications has been considered in [Abbas et al. 2018, 2019]. - -> The ABP signal is collected from the MIT-BIH Polysomnographic database [Ichimaru and Moody 1999]. The signal measurements are of `type VT = {val: V, ts: T}`, where `val` is the value of the signal and `ts` is the timestamp. The signal is uniformly sampled at a frequency of `250Hz`. (...) The ABP waveform contains rich information about the cardiovascular system (e.g., heart rate, systolic, mean, and diastolic arterial pressures). Reliable ABP pulse detection is crucial for extracting this information. -> First, the algorithm preprocesses the signal stream using a low-pass **IIR** filter and a slope sum function (**SSF**), and then it performs the detection of the pulse onset. - -> The low-pass filter **IIR** suppresses high frequency noise, and is defined by `𝑦(𝑛)=2𝑦(𝑛−1)−𝑦(𝑛−2)+𝑥(𝑛)−2𝑥(𝑛−5)+𝑥(𝑛−10)`. The **SSF** is defined by `𝑧(𝑛)=Σ0≤𝑖≤31𝑚𝑎𝑥(0,𝑑(𝑛−𝑖))`, where `𝑑(𝑛)=𝑦(𝑛)−𝑦(𝑛−1)`. It enhances the up-slope of the ABP pulse and restrains the remainder of the pressure waveform. The query `getVTP : Q(VT, VTP)` annotates each item `{val, ts}` of the input stream with an additional component `pval`, which is the result of the preprocessing. The `type VTP = {val: V, ts: T, pval: V}` extends `VT` with this additional component. These preprocessed values have a phase shift of `20ms` (`5` samples), which is introduced by low-pass filtering. - -> The detection of ABP onset is described by the following rules: -> * **R1**. In intervals where the SSF value exceeds a threshold `Thred` (i.e. a tentative pulse), the algorithm selects the *first* and the *maximum* SSF values. -> * **R2**. The pulse detection is accepted only if the *difference* between the first and the maximum SSF values exceeds `100`. -> * **R3**. When the pulse is accepted, the algorithm chooses the first sample that crosses the threshold as the onset point. The detected onset is adjusted by `20ms` (`5` samples) to compensate for the phase shift of low-pass filtering. -> * **R4**. After an onset is detected, to avoid double detection of the same pulse, the detection falls silent for `300ms`. - - -## Implementation (arc-lang) - -```arc-lang -type V = i32; -type T = time; -type VT = {val: V, ts: T}; -type VTP = {val: V, ts: T, pval: V}; - -fun query(stream: ~VT, Thred: V) -> ~PTV { - val lowPass = IIR({−1,2}, {1,0,0,0,0,−2,0,0,0,0,1}); - val diff = SWindow(2, 1, fun(x): x[1] - x[0]); - val sum = SWindow(32, 1, Reduce(fun(x, y): if y > 0 { x + y } else { x })) - val ssf = diff |> sum; - val preProc = Map(fun(x): x.val) |> lowPass |> ssf; - val getVTP = Zip(fun(x, y): {x.val, x.ts, y}) (stream, preProc); - - # R1 - val pulse = TakeWhen(fun(x): x.pval > Thred, fun(x): x.pval < Thred); - val select = Reduce(fun(x): (x, x), ()) - - # TODO - -} -``` - -## Implementation ([StreamQL](https://dl.acm.org/doi/pdf/10.1145/3428251)) - -```text -# Pre-process the signal -lowPass = IIR({−1,2}, {1,0,0,0,0,−2,0,0,0,0,1}) - -diff = sWindow(2, 1, (x, y) -> y − x) - -sum = sWindow(32, 1, reduce((x, y) -> (y > 0) ? (x + y) : x)) - -ssf = diff ≫ sum - -preProc = map(x -> x.val) ≫ lowPass ≫ ssf - -getVTP = annotate(preProc, (x, y) -> ⟨x.val, x.ts, y⟩) - -# select signal interval containing a peak (R1) -pulse = takeWhen(x -> x.pval > Thred, x -> x.pval < Thred) - -# select the first element in interval as the onset sample -# find the measurement with the maximum preprocessed value, -# and store them as a pair ⟨first, max⟩ -select = reduce(x -> ⟨x, x⟩, - ( ⟨f, m⟩, x) -> ⟨f, (x.pval > m.pval) ? x : m⟩) - -# examine the detected pulse (R2) and project the onset -getOnset = filterMap( ⟨f, m⟩ -> m.pval − f.pval > 100, ⟨f, m⟩ -> f) - -detect1 = getVTP ≫ pulse ≫ select ≫ check ≫ getOnset - -rft = skip(75) # after detecting the ABP onset, apply R4 - -detectAll = seq(detect1, iter(rft ≫ detect1)) - -subShift = map(x -> x.ts − 5) # compensate for phase shift - -ABPDetection = detectAll ≫ subShift -``` diff --git a/arc-docs/src/examples/sensor-data-aggregation.md b/arc-docs/src/examples/sensor-data-aggregation.md deleted file mode 100644 index e2160a4ca..000000000 --- a/arc-docs/src/examples/sensor-data-aggregation.md +++ /dev/null @@ -1 +0,0 @@ -# Sensor Data Aggregation diff --git a/arc-docs/src/examples/tf-idf.md b/arc-docs/src/examples/tf-idf.md deleted file mode 100644 index 7bc32fa64..000000000 --- a/arc-docs/src/examples/tf-idf.md +++ /dev/null @@ -1,15 +0,0 @@ -# TF-IDF - -The formula that is used to compute tf-idf is defined as follows: - -* `tf-idf(t, d) = tf(t, d) * idf(t)` - * `t` is a term - * `d` is a document in a document set - * `idf(t) = log [n/df(t)] + 1` is the inverse document frequency - * `n` is the total number of documents in the document set - * `df(t)` is the document frequency of `t` - * i.e., number of documents containing the term `t` - * `tf(t, d)` is the term frequency of `t` in `d` - * i.e., number of occurrences of the term `t` within the document `d` - * `1` is added so that terms which occur in all documents will not be - entirely ignored. diff --git a/arc-docs/src/examples/word-count.md b/arc-docs/src/examples/word-count.md deleted file mode 100644 index 5ffb8c546..000000000 --- a/arc-docs/src/examples/word-count.md +++ /dev/null @@ -1,7 +0,0 @@ -# Word Count - -Word count is a simple way to count the number of words in a text. The code for calculating a wordcount is as follows. - -```arc-lang -{{#include ../../../arc-lang/examples/wordcount.arc:example}} -``` diff --git a/arc-docs/src/getting-started.md b/arc-docs/src/getting-started.md deleted file mode 100644 index 6d0c9d3f6..000000000 --- a/arc-docs/src/getting-started.md +++ /dev/null @@ -1,59 +0,0 @@ -# Getting Started - -This section explains how to get started with Arc-Lang. - -## Prerequisites - -The following dependencies are required to build Arc-Lang from source: - -* CMake -* Clang -* Ninja -* Rust - -### macOS - -On macOS, dependencies can be installed with: - -``` -brew install cmake ninja clang -curl https://sh.rustup.rs -sSf | sh -``` - -### Ubuntu - -On Ubuntu, dependencies can be installed with: - -```bash -sudo apt install cmake ninja-build clang -curl https://sh.rustup.rs -sSf | sh -``` - -## Installation - -To install Arc-Lang, clone the repo and run the build script: - -```bash -git clone https://github.com/cda-group/arc/ -cd arc -git submodule update --init --recursive -./build -``` - -The build script installs the `arc` command-line utility along with the arc-runtime library. - -## Hello World - -Arc-Lang files have the `.arc` file extension. For example: - -```arc-lang -# hello-world.arc - -def main() = print("Hello World") -``` - -To execute the above program, run: - -```bash -arc run hello-world.arc -``` diff --git a/arc-docs/src/history/tasks.md b/arc-docs/src/history/tasks.md deleted file mode 100644 index 559ab74f4..000000000 --- a/arc-docs/src/history/tasks.md +++ /dev/null @@ -1,17 +0,0 @@ -# Evolution of Tasks - -In the original design, tasks were able to accept a single input and output stream. - -``` -task Identity(): ~i32 -> ~i32 { - var x = 0; - on event => { - x += 1; - emit x; - } -} -``` - -This was then extended so that tasks could accept multiple input and output streams. - - diff --git a/arc-docs/src/images/DSL-Hierarchy.jpg b/arc-docs/src/images/DSL-Hierarchy.jpg deleted file mode 100644 index b00bce03d..000000000 Binary files a/arc-docs/src/images/DSL-Hierarchy.jpg and /dev/null differ diff --git a/arc-docs/src/introduction.md b/arc-docs/src/introduction.md deleted file mode 100644 index f1312ea67..000000000 --- a/arc-docs/src/introduction.md +++ /dev/null @@ -1,38 +0,0 @@ -## Introduction - -Data analytics pipelines are becoming increasingly more complicated due to the growing number of requirements imposed by data science. Not only must data be processed and analyzed scalably with respect to its volume and velocity, but also intricately by involving many different types of data. **Arc-Lang** is a programming language for data analytics that supports parallel operations over multiple data types including datastreams and dataframes. As an example, a basic word-count application can be implemented as follows in Arc-Lang: - -```arc-lang -{{#include ../../arc-lang/examples/wordcount.arc:example}} -``` - -The goal of Arc-Lang is to make big-data analytics easy. Arc-Lang targets *streaming analytics* (i.e., processing data continuously as it is being generated) and *batch analytics* (i.e., processing data in large chunks all-at-once). From the streaming-perspective, Arc-Lang must be able to manage data at a fine granularity that is generated by many types of sensors, arriving at varying rates, in different formats, sizes, qualities, and possibly out-of-order. Datastreams can in addition be massive in numbers, ranging into the billions, due to the plethora of data sources that have emerged in the recent IoT boom. From the batch-perspective, Arc-Lang must be able to handle different kinds of collection-based data types whose sizes can scale to massive sizes, e.g., tensors and dataframes. Operations should to a large degree be agnostic of the collection type. - -```arc-lang -{{#include ../../arc-lang/examples/wordcount.arc:polymorphic}} -``` - -To cope with the requirements of batch and stream data management, a runtime system is needed which can exploit distributed programming to enable scalability through partitioning and parallelism. Distributed programming is however difficult without abstraction. Application developers must manage problems such as fault tolerance, exactly-once-processing, and coordination while considering tradeoffs in security and efficiency. To this end, distributed systems leverage high-level DSLs which are more friendly towards end-users. DSLs in the form of query languages, frameworks, and libraries allow application developers to focus on domain-specific problems, such as the development of algorithms, and to disregard engineering-related issues. In addition, DSLs that are intermediate languages have been adopted by multiple systems both as a solution to enable reuse by breaking the dependence between the user and runtime, and to enable target-independent optimisation. There is always a tradeoff that must be faced in DSL design. DSLs make some problems easier to solve at the expense of making other problems harder to solve. How a DSL is implemented can also have an impact on its ability to solve problems. DSLs can be categorized as follows: - -![](images/DSL-Hierarchy.jpg) - - -### Approach - -In contrast to other DSLs, Arc-Lang is a standalone compiled DSL implemented in OCaml. The idea of Arc-Lang's is to combine general purpose imperative and functional programming over *small data* with declarative programming over *big data*. As an example, it should be possible to perform both fine-grained processing over individual data items of a datastream, while also being able to compose pipelines of relational operations through SQL-style queries. Arc-Lang is statically typed for the purpose of performance and safety, but at the same time also inferred and polymorphic to enable ease of use and reuse. - -The approach of implementing the language as a standalone DSL allows for more creative freedom in the language design. At the same time, this approach requires everything, including optimisations and libraries, to be implemented from scratch. - -To address the issue of optimisation, we are using the [MLIR](https://mlir.llvm.org/) compiler framework to implement Arc-MLIR - an intermediate language - which Arc-Lang programs translate into for optimisations. MLIR defines a universal intermediate language which can be extended with custom dialects. A dialect includes a set of operations, types, type rules, analyses, rewrite rules (to the same dialect), and lowerings (to other dialects). All dialects adhere to the same meta-syntax and meta-semantics which allows them to be interweaved in the same program code. The MLIR framework handles parsing, type checking, line information tracking among other things. Additionally, MLIR provides tooling for testing, parallel compilation, documentation, CLI usage, etc. The plan is to extend Arc-MLIR with custom domain-specific optimisations for the declarative part of Arc-Lang and to capitalize on MLIR's ability to derive general-purpose optimisations such as constant propagation for Arc-Lang's functional and imperative side. - -To address the shortcoming of libraries, Arc-Lang allows both types and functions to be defined externally (inside Rust) and imported into the language. Most of the external functionality is encapsulated inside a runtime library named Arc-Runtime. Arc-Runtime builds on the [kompact](https://github.com/kompics/kompact) Component-Actor framework to provide distributed abstractions. - -## Summary - -In summary, Arc-Lang as a whole consists of three parts: - -* **Arc-Lang**: A high-level programming language for big data analytics. -* **Arc-MLIR**: An intermediate language for optimising Arc-Lang. -* **Arc-Runtime**: A distributed runtime for executing Arc-Lang. - - diff --git a/arc-docs/src/references.bib b/arc-docs/src/references.bib deleted file mode 100644 index e69de29bb..000000000 diff --git a/arc-docs/src/tour/basics.md b/arc-docs/src/tour/basics.md deleted file mode 100644 index 94fc66dd7..000000000 --- a/arc-docs/src/tour/basics.md +++ /dev/null @@ -1,61 +0,0 @@ -# Basics - -Functions in Arc-Lang are written using the `def` keyword. - -```arc-lang -{{#include ../../../arc-lang/examples/fib-functional.arc:example}} -``` - -Immutable variables can be defined with the `val` keyword and mutable ones with the `var` keyword. - -```arc-lang -{{#include ../../../arc-lang/examples/fib-imperative.arc:example}} -``` - -Common values are supported, including interpolated strings, percentage, duration, and datetime literals. - -```arc-lang -{{#include ../../../arc-lang/examples/values.arc:example}} -``` - -The declaration order of items is insignificant. A function can call another function defined below it in the source code. - -```arc-lang -{{#include ../../../arc-lang/examples/even-odd.arc:example}} -``` - -Enums (also known as disjoint or discriminated unions) are supported: - -```arc-lang -{{#include ../../../arc-lang/stdlib/stdlib.arc:option}} -``` - -Three forms of polymorphism are supported. First, parametric polymorphism allows functions to behave equivalently for different types of parameters: - -```arc-lang -{{#include ../../../arc-lang/examples/identity-function.arc:example}} -``` - -Second, overloading allows functions to behave differently for different types of parameters: - -```arc-lang -{{#include ../../../arc-lang/examples/overload-plus.arc:example}} -``` - -Overloading is achieved through the use of type classes: - -```arc-lang -{{#include ../../../arc-lang/examples/monoid.arc:example}} -``` - -Finally, row polymorphism allows subtyping of records: - -```arc-lang -{{#include ../../../arc-lang/examples/row-polymorphism-shape.arc:example}} -``` - -While the language aims to be general, it also has its limits. Therefore it is also possible to import externally defined types and functions. - -```arc-lang -{{#include ../../../arc-lang/stdlib/stdlib.arc:string}} -``` diff --git a/arc-docs/src/tour/mod.md b/arc-docs/src/tour/mod.md deleted file mode 100644 index 656fc0987..000000000 --- a/arc-docs/src/tour/mod.md +++ /dev/null @@ -1,3 +0,0 @@ -# Tour of Arc-Lang - -This section presents a brief tour of Arc-Lang, introducing the basics and unique concepts of the language. The tour assumes you have basic knowledge in some other programming language. diff --git a/arc-docs/src/tour/queries.md b/arc-docs/src/tour/queries.md deleted file mode 100644 index a0312e211..000000000 --- a/arc-docs/src/tour/queries.md +++ /dev/null @@ -1,232 +0,0 @@ -# Queries - -Arc-Lang allows the formulation of queries over data collections (similar to SQL). This concept is borrowed from [Morel](https://github.com/julianhyde/morel) which embeds SQL-style queries over relations in StandardML. The following query defines a word-count application. - -```arc-lang -{{#include ../../../arc-lang/examples/wordcount.arc:example}} -``` - -The top-level statements provided by Arc-Lang are: - -| Operator | Description | -|-----------|---------------------------------------| -| `from` | Iterate over data items | -| `yield` | Map data items | -| `where` | Filter data items | -| `join` | Join data items on a common predicate | -| `group` | Group data items by a key | -| `window` | Sliding or tumbling window | -| `compute` | Aggregate data items | -| `reduce` | Rolling aggregate data items | -| `sort` | Sort data items | - -The exact syntax of these statements is described [here](../arc-lang/Expr.html#Query). - -## Query expressions - -A *query* in Arc-Lang is a type of expression that takes data collections as operands and evaluates into a data collection as output. A data collection could either be a finite dataframe or an infinite datastream. Queries begin with the `from` keyword and are followed by a set of statements. The `from` statement can in of itself be used to compute the cross product between collections. - -```arc-lang -val a = [1,2]; -val b = [3]; - -val c = from x in a, y in b; - -# Equivalent to: -# val c = a.flatmap(fun(x): b.map(fun(y): #{x:x,y:y})); - -assert(c == [#{x:1,y:3},#{x:2,y:3}]); -``` - -## Projection - -The `yield` clause can be used to project elements - -```arc-lang -val a = [[[0,1]],[[2,3]],[[4,5]]]; - -val b = from x in a, y in x yield y+1; - -# Equivalent to: -# val b = a.flatmap(fun(x): x.map(fun(y): #{x:x,y:y})) -# .map(fun(r): r.y + 1); - -assert(b == [1,2,3,4,5,6]); -``` - -## Selection - -The `where` clause can be used for retaining elements which satisfy a predicate. - -```arc-lang -val a = [0,1,2,3,4]; - -val b = from x in a where x % 2 == 0; - -# Equivalent to: -# val b = a.filter(fun(x): x % 2 == 0); - -assert(a, [0,2,4]); -``` - -Any kind of expression can be used as a predicate, as long as it evaluates into a boolean value. - -## Ordering - -The `order` clause can be used to sort elements according to a criterion. By default, sorting is ascending. - -```arc-lang -val a = [3,1,2,4,0]; - -val b = from x in a order x; -val c = from x in a order x desc; - -# Equivalent to: -# val b = x.sort_asc(fun(x): x); -# val c = x.sort_desc(fun(x): x); - -assert(b == [0,1,2,3,4]); -assert(c == [4,3,2,1,0]); -``` - -Streams cannot be sorted since sorting requires that the input is finite. - -## Aggregating - -The `compute` clause can be used to aggregate values. - -```arc-lang -val a = [1,2,3]; -val b = [#{v:1},#{v:2},#{v:3}]; - -val c = from x in a compute sum; -val d = from x in b compute sum of x.v; - -# Equivalent to: -# val c = a._compute(sum); -# val d = a._compute(sum, elem: fun(x) = x.v); - -assert(c == #{sum:6}); -assert(d == #{sum:6}); -``` - -Aggregation is only allowed on finite-sized data collections. - -### Rolling Aggregates - -The `reduce` clause can be used to compute rolling aggregates. - -```arc-lang -val a = [1,2,3]; - -val c = from x in a reduce sum; - -# Equivalent to: -# val c = a._reduce(sum); - -assert(c == [#{sum:1}, #{sum:3}, #{sum:6}]); -``` - -Rolling aggregates are allowed on both finite- and infinite-sized data collections. - -### Custom Aggregators - -It is possible to define custom aggregators that can be used inside `compute` clauses. The `sum`, `count`, and `average` aggregators are monoids: - -```arc-lang -val count = Aggregator::Monoid(#{ - lift: fun(x) = #{count: 1}, - identity: fun() = #{count: 0}, - merge: fun(x,y) = #{count: x.count+y.count}, - lower: fun(x): x, -}); - -val sum = Aggregator::Monoid(#{ - lift: fun(x) = #{sum: x}, - identity: fun() = #{sum: 0}, - merge: fun(x,y) = #{sum: x.sum+y.sum}, - lower: fun(x): x, -}); - -val average = Aggregator::Monoid(#{ - lift: fun(x) = #{sum: x, count: 1}, - identity: fun() = #{sum: 0, count: 0}, - merge: fun(x,y) = #{sum: x.sum+y.sum, count: x.count+y.count}, - lower: fun(x): #{average: x.sum/x.count}, -}); -``` - -Holistic aggregators such as `median` (i.e., aggregators that operate on the whole input) can be defined as. - -```arc-lang -val median = Aggregator::Holistic(#{ - calc: fun(v) = { - val n = v.len(); - if n % 2 == 0 { - (v[n/2] + v[n/2+1])/2 - } else { - v[n/2+1] - } - } -}); -``` - -Here, `calc` is a function that gets the whole input collection. - -## Grouping - -The `group` clause can be used to group elements by key into partitions. After grouping, it is possible to apply a partition-wise transformation. - -```arc-lang -val a = [#{k:1,v:2}, #{k:2,v:2}, #{k:2,v:2}]; - -val b = from x in a group x.k; -val c = from x in a group x.k compute average of x.v; - -# Equivalent to: -# val b = a._group(fun(x) = x.k); -# val d = a._group(fun(x) = x.k, _compute: sum, elem: fun(v) = x.v); - -assert(b == [#{k:1,v:[2]},#{k:2,v:[2,2]}]); -assert(d == [#{k:1,sum:2},#{k:2,sum:4}]); -``` - -## Windowing - -The `window` clause can be used to slice data collections into multiple, possibly overlapping, partitions. Like `group`, a transformation can be applied per-partition. The `after` clause starts the window at an offset, and the `every` clause specifies the slide of a sliding window. - -```arc-lang -val a = [#{t:00:00:01,v:1}, #{t:00:00:04,v:2}, #{t:00:00:09,v:3}]; - -val b = from x in a window 5s; -val e = from x in a window 5s compute count; -val c = from x in a window 5s after 00:00:02; -val d = from x in a window 5s every 3s; - -# Equivalent to: -# val b = a._window(5s); -# val b = a._window(5s, _compute: count); -# val c = a._window(5s, _after: 00:00:02); -# val d = a._window(5s, _every: 3s); - -assert(b == [#{t:00:00:05,v:[1,2]}, #{t:00:00:10,v:[3]}]); -assert(e == [#{t:00:00:05,count:2}, #{t:00:00:10,count:1); -assert(c == [#{t:00:00:07,v:[1,2]}, #{t:00:00:12,v:[3]}]); -assert(d == [#{t:00:00:05,v:[1,2]}, #{t:00:00:08,v:[2]}, #{t:00:00:11,v:[3]}]); -``` - -## Joining - -The `join` clause can be used to join multiple data collections on a common key. - -```arc-lang -val a = [#{id:0,name:"Tim"}, #{id:1,name:"Bob"}]; -val b = [#{id:0,age:30}, #{id:1,age:100}]; - -val c = from x in a join y in b on x.id == y.id; - -# Equivalent to -# val c = a._join(b, fun(x,y): x.id == y.id); - -assert(c == [#{id:0,name:"Tim",age:30}, #{id:1,name:"Bob",age:100}]); -``` diff --git a/arc-docs/src/tour/tasks.md b/arc-docs/src/tour/tasks.md deleted file mode 100644 index a85d64320..000000000 --- a/arc-docs/src/tour/tasks.md +++ /dev/null @@ -1,150 +0,0 @@ -# Tasks and Channels - -Datastreams have become a prominent data model for analysing live data. A *datastream* is conceptually an infinite sequence of events, where an *event* is a data point produced by the stream at a specific moment in time. Arc-Lang provides the concept of tasks and channels to support fine grained processing of datastreams. A *channel* is a buffer of events which supports two basic operations. Data can be *pushed* and *pulled* into and out of the channel's buffer by tasks. In this context, a *task* is a lightweight thread that is executing an asynchronous function (i.e., a function that can suspend its execution). Tasks can thus await events to arrive on ingoing channels, do some processing, and emit new events onto outgoing channels. - -```arc-lang -{{#include ../../../arc-lang/examples/task-map.arc:example}} -``` - -In the above code, `map` is a task which takes a stream on an input channel `i`, a function `f`, and produces a stream on an output channel `o`. The execution of the task enters an infinite loop which receives events from `i` using the `receive` operator, applies function `f`, and emits the result to `o` using the `!` operator. The `main` function instantiates the task using function application syntax. - -## Directions - -All channels have a *direction*. Data can either be pushed into a channel or pulled out of it, but not both. Tasks which push data are referred to as "*producers*" and tasks which pull data are referred to as "*consumers*". It is possible for a task to simultaneously be both a producer and a consumer, but not for the same channel. We refer to pull-only channels as streams (`Stream[T]`) and push-only channels as drains (`Drain[T]`). To make the idea more clear, consider this fully type annotated example: - -```arc-lang -{{#include ../../../arc-lang/examples/task-map.arc:annotated}} -``` - -## Deadlock Avoidance - -The purpose of introducing tasks and directions is to avoid deadlocks that may occur from cyclic channel-dependencies. To give an example, channels in the Go language have directions like Arc-Lang but no task-abstraction. Go instead exposes the more general concept of goroutines which are lightweight threads that can suspend execution anywhere. For example, it is possible in Go to write the following: - -```go -package main - -func map(i <-chan int, f func(int) int, o chan<- int) { - for x := range i { - o <- f(x); - } -} - -func main() { - c := make(chan int); - go map(c, c); -} -``` - -The above code has a problem. The `map` function is both a consumer and producer of the same channel. This cyclic dependency causes a deadlock. In contrast, Arc-Lang restricts programs such that channels can only be created by instantiating tasks. Once a task is created its inputs cannot change. The output channel of a task cannot end up as an input channel to the same task or any upstream task. This prevents arbitrary cycles from being created in the dataflow graph, and thus prevents deadlocks. Code such as the following will result in a syntax error: - -```arc-lang -{{#include ../../../arc-lang/examples/fail-task-map.arc:example}} -``` - -## Exceptions - -Operations on streams are by default assumed to succeed without failure, but may also throw *exceptions* which can be handled by the user. Exceptions are thrown in two scenarios: - -1) When receiving data from a channel which has no producer and whose buffer is empty. -2) When emitting data into a channel which has no consumers. - -By catching exceptions, tasks can prolong their execution beyond the lifetime of their channels. This is especially useful when tasks have multiple input and output channels, as uncaught exceptions will terminate the task. - -```arc-lang -{{#include ../../../arc-lang/examples/task-exception-at-consumer.arc:example}} -``` - -In the above code, a `producer` task is sending data to a `consumer` task over a stream. The producer terminates once it is done sending all of its data. Since there are no more tasks which can emit data into the stream (i.e., no more references to the output stream), an exception will be raised when trying to receive data from the input stream. - -```arc-lang -{{#include ../../../arc-lang/examples/task-exception-at-producer.arc:example}} -``` - -The above code shows the opposite scenario, where a consumer can potentially terminate and raise an exception at the producer. - -## Flow Control - -Channels in Arc-Lang are bounded which means that their buffers have a maximum capacity. It is thus important that buffers do not overflow since this would lead to undefined behavior. For example: - -```arc-lang -{{#include ../../../arc-lang/examples/task-flow-control.arc:example}} -``` - -In a purely push-based system, the producer would produce data at a faster rate than the consumer can keep up. This would would inevitably cause a buffer overflow in the channel. To prevent such circumstances, a channel will block its producer from pushing events if its buffer is full. Similarly, a channel will block its consumers from pulling events if its buffer is empty. This behavior is implemented by storing multiple queues inside of channels. In particular, each channel has: - -* A *push-queue* of capacity `P` which stores promises to push data into the channel as soon as its buffer is not full. The respective producer is blocked until the promise is fulfilled. -* A *data-queue* of capacity `N` which stores in-flight events. -* A *pull-queue* of capacity `C` which stores promises to pull data from the channel as soon as its buffer is not empty. The respective consumer is blocked until the promise is fulfilled. - -We have that `P = 1` (i.e., a channel can only have one producer), `N = `, and `C = `. Because channels are multicast, all consumers of a channel will pull the same event sequence. To this end, an offset is stored together with each promise in the pull-queue that indicates which event in the data-queue should be pulled. Events can only be evicted from the data-queue if they have been pulled by all consumers. - -## Ordering of Events - -Tasks are not limited to just one input and output channel. In fact, a task can have a dynamic number of input channels (by for example passing the channels in a vector) and a fixed number of output channels. - -```arc-lang -{{#include ../../../arc-lang/examples/task-merge.arc:example}} -``` - -In the above code, `merge` is a task which can be used to combine events from two channels `s0` and `s1` into one `s2`. By deterministic, we mean the task pulls events from the input channels in a specific order. It is also possible to receive events non-deterministically from a set of channels, as soon as they arrive, using the `on` syntax: - -```arc-lang -{{#include ../../../arc-lang/examples/task-union.arc:example}} -``` - -In the above code, `union` is a task which can be used to combine two channels `s0` and `s1` non-deterministically into one `s2`. No ordering guarantees are made between the two channels. - -## Streaming State - -Streaming state is typically exposed explicitly by stream processors. Users need to declare the type of data they want to persistently store and insert read and write operations in their application code to access the state. In Arc-Lang, state is managed implicitly by automatically translating tasks into FSMs (Finite State Machines) that are persisted by the system. - -```arc-lang -{{#include ../../../arc-lang/examples/task-state.arc:example}} -``` - -The code above shows a rolling `reduce` task which reduces a stream using an aggregation function `f`, beginning at an initial state `init`. - -Note that state is always encapsulated within a task. It is not possible (as of yet) to share state between tasks. Any value sent over a channel is copied from the producer to the consumer. This allows Arc-Lang programs to be parallelised without having to consider the risk of race conditions. How values are copied is abstracted and can for example be deep (for data with interior mutability), shallow (for immutable data), or lazy (copy-on-write). CRDTs and transactional memory are under consideration for enabling shared state. - -## Parallelism - -Tasks and channels enable three forms of parallelism: -* **Pipeline parallelism**: Multiple tasks can pipeline their execution through channels. -* **Task parallelism**: Multiple tasks can process data from the same channel in parallel. -* **Data parallelism**: The same task can process data from multiple channels in parallel. - -An example of pipeline parallelism: - -```arc-lang -{{#include ../../../arc-lang/examples/parallelism.arc:pipeline}} -``` - -An example of task parallelism: - -```arc-lang -{{#include ../../../arc-lang/examples/parallelism.arc:task}} -``` - -Arc-Lang chooses to make data parallelism implicit since this is the most common form of parallelism. All of the above examples are thus data parallel. The idea of data parallelism is that channels are divided into partitions that can transport events in parallel. Each event has an associated *key* that determines which partition the event is assigned to. A key can for example be the unique identifier of a sensor that generates data, a location tag, or an article number. Events are required to have a key at the point where they enter the system. It is also possible to change the key of an event. This will be covered in the next section. Note that the method for assigning events to partitions is abstract. This allows Arc-Lang to choose the partitioning approach based on the scenario. Though, currently a static partitioning approach is used. - -## Summary - -Channels of Arc-Lang are planned to support the following properties: - -* **Directions**: Channels can be used to either pull or push data, but not both. Tasks which push data are referred to as "producers" and tasks which pull data are referred to as "consumers". A task can simultaneously be both a producer and a consumer but not for the same channel. -* **Bounded**: Channels have a maximum capacity which, when exceeded, will block the producer from pushing events. Similarly, an empty channel will block the consumer from pulling events. -* **SPMC**: Channels have a single producer and possibly multiple consumers. -* **Multicast**: All consumers of a channel will pull the same event sequence. -* **Exceptions**: A channel can be closed by a producer or consumer. When a channel is closed, all tasks waiting on the channel will be notified. -* **Data parallelism**: A logical channel consists of multiple physical channels which are partitioned using consistent hashing. Data can be transferred over different physical channels in parallel. -* **Deadlock avoidance**: Channels can only be created by instantiating tasks. The output channel of a task cannot be passed as an input channel to the same task or any upstream task. This prevents arbitrary cycles from being created in the dataflow graph, and thus prevents deadlocks. -* **Uni-directional**: Channels can only be used to send data in a single direction, i.e., from producer to consumer. Dataflow graphs created through channels and tasks are always directed and acyclic. -* **Network transparency**: Channels can be used for both local and networked communication. Whether the producer and consumer are on the same machine or on different machines is transparent to the user. -* **Persistence**: Channels should be able to snapshot their state and replay it from an earlier offset. - -## Limitations - -The following restrictions are for now enforced on channels and tasks but may eventually be lifted: - -* Tasks cannot create new tasks. Tasks may only be created by the main-thread of a program. This is because -* It is only possible to push and pull events from channels inside of tasks. diff --git a/arc-docs/theme/book.js b/arc-docs/theme/book.js deleted file mode 100644 index d40440c72..000000000 --- a/arc-docs/theme/book.js +++ /dev/null @@ -1,679 +0,0 @@ -"use strict"; - -// Fix back button cache problem -window.onunload = function () { }; - -// Global variable, shared between modules -function playground_text(playground) { - let code_block = playground.querySelector("code"); - - if (window.ace && code_block.classList.contains("editable")) { - let editor = window.ace.edit(code_block); - return editor.getValue(); - } else { - return code_block.textContent; - } -} - -(function codeSnippets() { - function fetch_with_timeout(url, options, timeout = 6000) { - return Promise.race([ - fetch(url, options), - new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), timeout)) - ]); - } - - var playgrounds = Array.from(document.querySelectorAll(".playground")); - if (playgrounds.length > 0) { - fetch_with_timeout("https://play.rust-lang.org/meta/crates", { - headers: { - 'Content-Type': "application/json", - }, - method: 'POST', - mode: 'cors', - }) - .then(response => response.json()) - .then(response => { - // get list of crates available in the rust playground - let playground_crates = response.crates.map(item => item["id"]); - playgrounds.forEach(block => handle_crate_list_update(block, playground_crates)); - }); - } - - function handle_crate_list_update(playground_block, playground_crates) { - // update the play buttons after receiving the response - update_play_button(playground_block, playground_crates); - - // and install on change listener to dynamically update ACE editors - if (window.ace) { - let code_block = playground_block.querySelector("code"); - if (code_block.classList.contains("editable")) { - let editor = window.ace.edit(code_block); - editor.addEventListener("change", function (e) { - update_play_button(playground_block, playground_crates); - }); - // add Ctrl-Enter command to execute rust code - editor.commands.addCommand({ - name: "run", - bindKey: { - win: "Ctrl-Enter", - mac: "Ctrl-Enter" - }, - exec: _editor => run_rust_code(playground_block) - }); - } - } - } - - // updates the visibility of play button based on `no_run` class and - // used crates vs ones available on http://play.rust-lang.org - function update_play_button(pre_block, playground_crates) { - var play_button = pre_block.querySelector(".play-button"); - - // skip if code is `no_run` - if (pre_block.querySelector('code').classList.contains("no_run")) { - play_button.classList.add("hidden"); - return; - } - - // get list of `extern crate`'s from snippet - var txt = playground_text(pre_block); - var re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g; - var snippet_crates = []; - var item; - while (item = re.exec(txt)) { - snippet_crates.push(item[1]); - } - - // check if all used crates are available on play.rust-lang.org - var all_available = snippet_crates.every(function (elem) { - return playground_crates.indexOf(elem) > -1; - }); - - if (all_available) { - play_button.classList.remove("hidden"); - } else { - play_button.classList.add("hidden"); - } - } - - function run_rust_code(code_block) { - var result_block = code_block.querySelector(".result"); - if (!result_block) { - result_block = document.createElement('code'); - result_block.className = 'result hljs language-bash'; - - code_block.append(result_block); - } - - let text = playground_text(code_block); - let classes = code_block.querySelector('code').classList; - let edition = "2015"; - if(classes.contains("edition2018")) { - edition = "2018"; - } else if(classes.contains("edition2021")) { - edition = "2021"; - } - var params = { - version: "stable", - optimize: "0", - code: text, - edition: edition - }; - - if (text.indexOf("#![feature") !== -1) { - params.version = "nightly"; - } - - result_block.innerText = "Running..."; - - fetch_with_timeout("https://play.rust-lang.org/evaluate.json", { - headers: { - 'Content-Type': "application/json", - }, - method: 'POST', - mode: 'cors', - body: JSON.stringify(params) - }) - .then(response => response.json()) - .then(response => { - if (response.result.trim() === '') { - result_block.innerText = "No output"; - result_block.classList.add("result-no-output"); - } else { - result_block.innerText = response.result; - result_block.classList.remove("result-no-output"); - } - }) - .catch(error => result_block.innerText = "Playground Communication: " + error.message); - } - - // Syntax highlighting Configuration - hljs.configure({ - tabReplace: ' ', // 4 spaces - languages: [], // Languages used for auto-detection - }); - - let code_nodes = Array - .from(document.querySelectorAll('code')) - // Don't highlight `inline code` blocks in headers. - .filter(function (node) {return !node.parentElement.classList.contains("header"); }); - - if (window.ace) { - // language-rust class needs to be removed for editable - // blocks or highlightjs will capture events - code_nodes - .filter(function (node) {return node.classList.contains("editable"); }) - .forEach(function (block) { block.classList.remove('language-rust'); }); - - Array - code_nodes - .filter(function (node) {return !node.classList.contains("editable"); }) - .forEach(function (block) { hljs.highlightBlock(block); }); - } else { - code_nodes.forEach(function (block) { hljs.highlightBlock(block); }); - } - - // Adding the hljs class gives code blocks the color css - // even if highlighting doesn't apply - code_nodes.forEach(function (block) { block.classList.add('hljs'); }); - - Array.from(document.querySelectorAll("code.language-rust")).forEach(function (block) { - - var lines = Array.from(block.querySelectorAll('.boring')); - // If no lines were hidden, return - if (!lines.length) { return; } - block.classList.add("hide-boring"); - - var buttons = document.createElement('div'); - buttons.className = 'buttons'; - buttons.innerHTML = ""; - - // add expand button - var pre_block = block.parentNode; - pre_block.insertBefore(buttons, pre_block.firstChild); - - pre_block.querySelector('.buttons').addEventListener('click', function (e) { - if (e.target.classList.contains('fa-eye')) { - e.target.classList.remove('fa-eye'); - e.target.classList.add('fa-eye-slash'); - e.target.title = 'Hide lines'; - e.target.setAttribute('aria-label', e.target.title); - - block.classList.remove('hide-boring'); - } else if (e.target.classList.contains('fa-eye-slash')) { - e.target.classList.remove('fa-eye-slash'); - e.target.classList.add('fa-eye'); - e.target.title = 'Show hidden lines'; - e.target.setAttribute('aria-label', e.target.title); - - block.classList.add('hide-boring'); - } - }); - }); - - if (window.playground_copyable) { - Array.from(document.querySelectorAll('pre code')).forEach(function (block) { - var pre_block = block.parentNode; - if (!pre_block.classList.contains('playground')) { - var buttons = pre_block.querySelector(".buttons"); - if (!buttons) { - buttons = document.createElement('div'); - buttons.className = 'buttons'; - pre_block.insertBefore(buttons, pre_block.firstChild); - } - - var clipButton = document.createElement('button'); - clipButton.className = 'fa fa-copy clip-button'; - clipButton.title = 'Copy to clipboard'; - clipButton.setAttribute('aria-label', clipButton.title); - clipButton.innerHTML = ''; - - buttons.insertBefore(clipButton, buttons.firstChild); - } - }); - } - - // Process playground code blocks - Array.from(document.querySelectorAll(".playground")).forEach(function (pre_block) { - // Add play button - var buttons = pre_block.querySelector(".buttons"); - if (!buttons) { - buttons = document.createElement('div'); - buttons.className = 'buttons'; - pre_block.insertBefore(buttons, pre_block.firstChild); - } - - var runCodeButton = document.createElement('button'); - runCodeButton.className = 'fa fa-play play-button'; - runCodeButton.hidden = true; - runCodeButton.title = 'Run this code'; - runCodeButton.setAttribute('aria-label', runCodeButton.title); - - buttons.insertBefore(runCodeButton, buttons.firstChild); - runCodeButton.addEventListener('click', function (e) { - run_rust_code(pre_block); - }); - - if (window.playground_copyable) { - var copyCodeClipboardButton = document.createElement('button'); - copyCodeClipboardButton.className = 'fa fa-copy clip-button'; - copyCodeClipboardButton.innerHTML = ''; - copyCodeClipboardButton.title = 'Copy to clipboard'; - copyCodeClipboardButton.setAttribute('aria-label', copyCodeClipboardButton.title); - - buttons.insertBefore(copyCodeClipboardButton, buttons.firstChild); - } - - let code_block = pre_block.querySelector("code"); - if (window.ace && code_block.classList.contains("editable")) { - var undoChangesButton = document.createElement('button'); - undoChangesButton.className = 'fa fa-history reset-button'; - undoChangesButton.title = 'Undo changes'; - undoChangesButton.setAttribute('aria-label', undoChangesButton.title); - - buttons.insertBefore(undoChangesButton, buttons.firstChild); - - undoChangesButton.addEventListener('click', function () { - let editor = window.ace.edit(code_block); - editor.setValue(editor.originalCode); - editor.clearSelection(); - }); - } - }); -})(); - -(function themes() { - var html = document.querySelector('html'); - var themeToggleButton = document.getElementById('theme-toggle'); - var themePopup = document.getElementById('theme-list'); - var themeColorMetaTag = document.querySelector('meta[name="theme-color"]'); - var stylesheets = { - ayuHighlight: document.querySelector("[href$='ayu-highlight.css']"), - tomorrowNight: document.querySelector("[href$='tomorrow-night.css']"), - highlight: document.querySelector("[href$='highlight.css']"), - }; - - function showThemes() { - themePopup.style.display = 'block'; - themeToggleButton.setAttribute('aria-expanded', true); - themePopup.querySelector("button#" + get_theme()).focus(); - } - - function hideThemes() { - themePopup.style.display = 'none'; - themeToggleButton.setAttribute('aria-expanded', false); - themeToggleButton.focus(); - } - - function get_theme() { - var theme; - try { theme = localStorage.getItem('mdbook-theme'); } catch (e) { } - if (theme === null || theme === undefined) { - return default_theme; - } else { - return theme; - } - } - - function set_theme(theme, store = true) { - let ace_theme; - - if (theme == 'coal' || theme == 'navy') { - stylesheets.ayuHighlight.disabled = true; - stylesheets.tomorrowNight.disabled = false; - stylesheets.highlight.disabled = true; - - ace_theme = "ace/theme/tomorrow_night"; - } else if (theme == 'ayu') { - stylesheets.ayuHighlight.disabled = false; - stylesheets.tomorrowNight.disabled = true; - stylesheets.highlight.disabled = true; - ace_theme = "ace/theme/tomorrow_night"; - } else { - stylesheets.ayuHighlight.disabled = true; - stylesheets.tomorrowNight.disabled = true; - stylesheets.highlight.disabled = false; - ace_theme = "ace/theme/dawn"; - } - - setTimeout(function () { - themeColorMetaTag.content = getComputedStyle(document.body).backgroundColor; - }, 1); - - if (window.ace && window.editors) { - window.editors.forEach(function (editor) { - editor.setTheme(ace_theme); - }); - } - - var previousTheme = get_theme(); - - if (store) { - try { localStorage.setItem('mdbook-theme', theme); } catch (e) { } - } - - html.classList.remove(previousTheme); - html.classList.add(theme); - } - - // Set theme - var theme = get_theme(); - - set_theme(theme, false); - - themeToggleButton.addEventListener('click', function () { - if (themePopup.style.display === 'block') { - hideThemes(); - } else { - showThemes(); - } - }); - - themePopup.addEventListener('click', function (e) { - var theme; - if (e.target.className === "theme") { - theme = e.target.id; - } else if (e.target.parentElement.className === "theme") { - theme = e.target.parentElement.id; - } else { - return; - } - set_theme(theme); - }); - - themePopup.addEventListener('focusout', function(e) { - // e.relatedTarget is null in Safari and Firefox on macOS (see workaround below) - if (!!e.relatedTarget && !themeToggleButton.contains(e.relatedTarget) && !themePopup.contains(e.relatedTarget)) { - hideThemes(); - } - }); - - // Should not be needed, but it works around an issue on macOS & iOS: https://github.com/rust-lang/mdBook/issues/628 - document.addEventListener('click', function(e) { - if (themePopup.style.display === 'block' && !themeToggleButton.contains(e.target) && !themePopup.contains(e.target)) { - hideThemes(); - } - }); - - document.addEventListener('keydown', function (e) { - if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } - if (!themePopup.contains(e.target)) { return; } - - switch (e.key) { - case 'Escape': - e.preventDefault(); - hideThemes(); - break; - case 'ArrowUp': - e.preventDefault(); - var li = document.activeElement.parentElement; - if (li && li.previousElementSibling) { - li.previousElementSibling.querySelector('button').focus(); - } - break; - case 'ArrowDown': - e.preventDefault(); - var li = document.activeElement.parentElement; - if (li && li.nextElementSibling) { - li.nextElementSibling.querySelector('button').focus(); - } - break; - case 'Home': - e.preventDefault(); - themePopup.querySelector('li:first-child button').focus(); - break; - case 'End': - e.preventDefault(); - themePopup.querySelector('li:last-child button').focus(); - break; - } - }); -})(); - -(function sidebar() { - var html = document.querySelector("html"); - var sidebar = document.getElementById("sidebar"); - var sidebarLinks = document.querySelectorAll('#sidebar a'); - var sidebarToggleButton = document.getElementById("sidebar-toggle"); - var sidebarResizeHandle = document.getElementById("sidebar-resize-handle"); - var firstContact = null; - - function showSidebar() { - html.classList.remove('sidebar-hidden') - html.classList.add('sidebar-visible'); - Array.from(sidebarLinks).forEach(function (link) { - link.setAttribute('tabIndex', 0); - }); - sidebarToggleButton.setAttribute('aria-expanded', true); - sidebar.setAttribute('aria-hidden', false); - try { localStorage.setItem('mdbook-sidebar', 'visible'); } catch (e) { } - } - - - var sidebarAnchorToggles = document.querySelectorAll('#sidebar a.toggle'); - - function toggleSection(ev) { - ev.currentTarget.parentElement.classList.toggle('expanded'); - } - - Array.from(sidebarAnchorToggles).forEach(function (el) { - el.addEventListener('click', toggleSection); - }); - - function hideSidebar() { - html.classList.remove('sidebar-visible') - html.classList.add('sidebar-hidden'); - Array.from(sidebarLinks).forEach(function (link) { - link.setAttribute('tabIndex', -1); - }); - sidebarToggleButton.setAttribute('aria-expanded', false); - sidebar.setAttribute('aria-hidden', true); - try { localStorage.setItem('mdbook-sidebar', 'hidden'); } catch (e) { } - } - - // Toggle sidebar - sidebarToggleButton.addEventListener('click', function sidebarToggle() { - if (html.classList.contains("sidebar-hidden")) { - var current_width = parseInt( - document.documentElement.style.getPropertyValue('--sidebar-width'), 10); - if (current_width < 150) { - document.documentElement.style.setProperty('--sidebar-width', '150px'); - } - showSidebar(); - } else if (html.classList.contains("sidebar-visible")) { - hideSidebar(); - } else { - if (getComputedStyle(sidebar)['transform'] === 'none') { - hideSidebar(); - } else { - showSidebar(); - } - } - }); - - sidebarResizeHandle.addEventListener('mousedown', initResize, false); - - function initResize(e) { - window.addEventListener('mousemove', resize, false); - window.addEventListener('mouseup', stopResize, false); - html.classList.add('sidebar-resizing'); - } - function resize(e) { - var pos = (e.clientX - sidebar.offsetLeft); - if (pos < 20) { - hideSidebar(); - } else { - if (html.classList.contains("sidebar-hidden")) { - showSidebar(); - } - pos = Math.min(pos, window.innerWidth - 100); - document.documentElement.style.setProperty('--sidebar-width', pos + 'px'); - } - } - //on mouseup remove windows functions mousemove & mouseup - function stopResize(e) { - html.classList.remove('sidebar-resizing'); - window.removeEventListener('mousemove', resize, false); - window.removeEventListener('mouseup', stopResize, false); - } - - document.addEventListener('touchstart', function (e) { - firstContact = { - x: e.touches[0].clientX, - time: Date.now() - }; - }, { passive: true }); - - document.addEventListener('touchmove', function (e) { - if (!firstContact) - return; - - var curX = e.touches[0].clientX; - var xDiff = curX - firstContact.x, - tDiff = Date.now() - firstContact.time; - - if (tDiff < 250 && Math.abs(xDiff) >= 150) { - if (xDiff >= 0 && firstContact.x < Math.min(document.body.clientWidth * 0.25, 300)) - showSidebar(); - else if (xDiff < 0 && curX < 300) - hideSidebar(); - - firstContact = null; - } - }, { passive: true }); - - // Scroll sidebar to current active section - var activeSection = document.getElementById("sidebar").querySelector(".active"); - if (activeSection) { - // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView - activeSection.scrollIntoView({ block: 'center' }); - } -})(); - -(function chapterNavigation() { - document.addEventListener('keydown', function (e) { - if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } - if (window.search && window.search.hasFocus()) { return; } - - switch (e.key) { - case 'ArrowRight': - e.preventDefault(); - var nextButton = document.querySelector('.nav-chapters.next'); - if (nextButton) { - window.location.href = nextButton.href; - } - break; - case 'ArrowLeft': - e.preventDefault(); - var previousButton = document.querySelector('.nav-chapters.previous'); - if (previousButton) { - window.location.href = previousButton.href; - } - break; - } - }); -})(); - -(function clipboard() { - var clipButtons = document.querySelectorAll('.clip-button'); - - function hideTooltip(elem) { - elem.firstChild.innerText = ""; - elem.className = 'fa fa-copy clip-button'; - } - - function showTooltip(elem, msg) { - elem.firstChild.innerText = msg; - elem.className = 'fa fa-copy tooltipped'; - } - - var clipboardSnippets = new ClipboardJS('.clip-button', { - text: function (trigger) { - hideTooltip(trigger); - let playground = trigger.closest("pre"); - return playground_text(playground); - } - }); - - Array.from(clipButtons).forEach(function (clipButton) { - clipButton.addEventListener('mouseout', function (e) { - hideTooltip(e.currentTarget); - }); - }); - - clipboardSnippets.on('success', function (e) { - e.clearSelection(); - showTooltip(e.trigger, "Copied!"); - }); - - clipboardSnippets.on('error', function (e) { - showTooltip(e.trigger, "Clipboard error!"); - }); -})(); - -(function scrollToTop () { - var menuTitle = document.querySelector('.menu-title'); - - menuTitle.addEventListener('click', function () { - document.scrollingElement.scrollTo({ top: 0, behavior: 'smooth' }); - }); -})(); - -(function controllMenu() { - var menu = document.getElementById('menu-bar'); - - (function controllPosition() { - var scrollTop = document.scrollingElement.scrollTop; - var prevScrollTop = scrollTop; - var minMenuY = -menu.clientHeight - 50; - // When the script loads, the page can be at any scroll (e.g. if you reforesh it). - menu.style.top = scrollTop + 'px'; - // Same as parseInt(menu.style.top.slice(0, -2), but faster - var topCache = menu.style.top.slice(0, -2); - menu.classList.remove('sticky'); - var stickyCache = false; // Same as menu.classList.contains('sticky'), but faster - document.addEventListener('scroll', function () { - scrollTop = Math.max(document.scrollingElement.scrollTop, 0); - // `null` means that it doesn't need to be updated - var nextSticky = null; - var nextTop = null; - var scrollDown = scrollTop > prevScrollTop; - var menuPosAbsoluteY = topCache - scrollTop; - if (scrollDown) { - nextSticky = false; - if (menuPosAbsoluteY > 0) { - nextTop = prevScrollTop; - } - } else { - if (menuPosAbsoluteY > 0) { - nextSticky = true; - } else if (menuPosAbsoluteY < minMenuY) { - nextTop = prevScrollTop + minMenuY; - } - } - if (nextSticky === true && stickyCache === false) { - menu.classList.add('sticky'); - stickyCache = true; - } else if (nextSticky === false && stickyCache === true) { - menu.classList.remove('sticky'); - stickyCache = false; - } - if (nextTop !== null) { - menu.style.top = nextTop + 'px'; - topCache = nextTop; - } - prevScrollTop = scrollTop; - }, { passive: true }); - })(); - (function controllBorder() { - menu.classList.remove('bordered'); - document.addEventListener('scroll', function () { - if (menu.offsetTop === 0) { - menu.classList.remove('bordered'); - } else { - menu.classList.add('bordered'); - } - }, { passive: true }); - })(); -})(); diff --git a/arc-docs/theme/css/chrome.css b/arc-docs/theme/css/chrome.css deleted file mode 100644 index 21c08b930..000000000 --- a/arc-docs/theme/css/chrome.css +++ /dev/null @@ -1,495 +0,0 @@ -/* CSS for UI elements (a.k.a. chrome) */ - -@import 'variables.css'; - -::-webkit-scrollbar { - background: var(--bg); -} -::-webkit-scrollbar-thumb { - background: var(--scrollbar); -} -html { - scrollbar-color: var(--scrollbar) var(--bg); -} -#searchresults a, -.content a:link, -a:visited, -a > .hljs { - color: var(--links); -} - -/* Menu Bar */ - -#menu-bar, -#menu-bar-hover-placeholder { - z-index: 101; - margin: auto calc(0px - var(--page-padding)); -} -#menu-bar { - position: relative; - display: flex; - flex-wrap: wrap; - background-color: var(--bg); - border-bottom-color: var(--bg); - border-bottom-width: 1px; - border-bottom-style: solid; -} -#menu-bar.sticky, -.js #menu-bar-hover-placeholder:hover + #menu-bar, -.js #menu-bar:hover, -.js.sidebar-visible #menu-bar { - position: -webkit-sticky; - position: sticky; - top: 0 !important; -} -#menu-bar-hover-placeholder { - position: sticky; - position: -webkit-sticky; - top: 0; - height: var(--menu-bar-height); -} -#menu-bar.bordered { - border-bottom-color: var(--table-border-color); -} -#menu-bar i, #menu-bar .icon-button { - position: relative; - padding: 0 8px; - z-index: 10; - line-height: var(--menu-bar-height); - cursor: pointer; - transition: color 0.5s; -} -@media only screen and (max-width: 420px) { - #menu-bar i, #menu-bar .icon-button { - padding: 0 5px; - } -} - -.icon-button { - border: none; - background: none; - padding: 0; - color: inherit; -} -.icon-button i { - margin: 0; -} - -.right-buttons { - margin: 0 15px; -} -.right-buttons a { - text-decoration: none; -} - -.left-buttons { - display: flex; - margin: 0 5px; -} -.no-js .left-buttons { - display: none; -} - -.menu-title { - display: inline-block; - font-weight: 200; - font-size: 2.4rem; - line-height: var(--menu-bar-height); - text-align: center; - margin: 0; - flex: 1; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} -.js .menu-title { - cursor: pointer; -} - -.menu-bar, -.menu-bar:visited, -.nav-chapters, -.nav-chapters:visited, -.mobile-nav-chapters, -.mobile-nav-chapters:visited, -.menu-bar .icon-button, -.menu-bar a i { - color: var(--icons); -} - -.menu-bar i:hover, -.menu-bar .icon-button:hover, -.nav-chapters:hover, -.mobile-nav-chapters i:hover { - color: var(--icons-hover); -} - -/* Nav Icons */ - -.nav-chapters { - font-size: 2.5em; - text-align: center; - text-decoration: none; - - position: fixed; - top: 0; - bottom: 0; - margin: 0; - max-width: 150px; - min-width: 90px; - - display: flex; - justify-content: center; - align-content: center; - flex-direction: column; - - transition: color 0.5s, background-color 0.5s; -} - -.nav-chapters:hover { - text-decoration: none; - background-color: var(--theme-hover); - transition: background-color 0.15s, color 0.15s; -} - -.nav-wrapper { - margin-top: 50px; - display: none; -} - -.mobile-nav-chapters { - font-size: 2.5em; - text-align: center; - text-decoration: none; - width: 90px; - border-radius: 5px; - background-color: var(--sidebar-bg); -} - -.previous { - float: left; -} - -.next { - float: right; - right: var(--page-padding); -} - -@media only screen and (max-width: 1080px) { - .nav-wide-wrapper { display: none; } - .nav-wrapper { display: block; } -} - -@media only screen and (max-width: 1380px) { - .sidebar-visible .nav-wide-wrapper { display: none; } - .sidebar-visible .nav-wrapper { display: block; } -} - -/* Inline code */ - -:not(pre) > .hljs { - display: inline; - padding: 0.1em 0.3em; - border-radius: 3px; -} - -:not(pre):not(a) > .hljs { - color: var(--inline-code-color); - overflow-x: initial; -} - -a:hover > .hljs { - text-decoration: underline; -} - -pre { - position: relative; -} -pre > .buttons { - position: absolute; - z-index: 100; - right: 5px; - top: 5px; - - color: var(--sidebar-fg); - cursor: pointer; -} -pre > .buttons :hover { - color: var(--sidebar-active); -} -pre > .buttons i { - margin-left: 8px; -} -pre > .buttons button { - color: inherit; - background: transparent; - border: none; - cursor: inherit; -} -pre > .result { - margin-top: 10px; -} - -/* Search */ - -#searchresults a { - text-decoration: none; -} - -mark { - border-radius: 2px; - padding: 0 3px 1px 3px; - margin: 0 -3px -1px -3px; - background-color: var(--search-mark-bg); - transition: background-color 300ms linear; - cursor: pointer; -} - -mark.fade-out { - background-color: rgba(0,0,0,0) !important; - cursor: auto; -} - -.searchbar-outer { - margin-left: auto; - margin-right: auto; - max-width: var(--content-max-width); -} - -#searchbar { - width: 100%; - margin: 5px auto 0px auto; - padding: 10px 16px; - transition: box-shadow 300ms ease-in-out; - border: 1px solid var(--searchbar-border-color); - border-radius: 3px; - background-color: var(--searchbar-bg); - color: var(--searchbar-fg); -} -#searchbar:focus, -#searchbar.active { - box-shadow: 0 0 3px var(--searchbar-shadow-color); -} - -.searchresults-header { - font-weight: bold; - font-size: 1em; - padding: 18px 0 0 5px; - color: var(--searchresults-header-fg); -} - -.searchresults-outer { - margin-left: auto; - margin-right: auto; - max-width: var(--content-max-width); - border-bottom: 1px dashed var(--searchresults-border-color); -} - -ul#searchresults { - list-style: none; - padding-left: 20px; -} -ul#searchresults li { - margin: 10px 0px; - padding: 2px; - border-radius: 2px; -} -ul#searchresults li.focus { - background-color: var(--searchresults-li-bg); -} -ul#searchresults span.teaser { - display: block; - clear: both; - margin: 5px 0 0 20px; - font-size: 0.8em; -} -ul#searchresults span.teaser em { - font-weight: bold; - font-style: normal; -} - -/* Sidebar */ - -.sidebar { - position: fixed; - left: 0; - top: 0; - bottom: 0; - width: var(--sidebar-width); - font-size: 0.875em; - box-sizing: border-box; - -webkit-overflow-scrolling: touch; - overscroll-behavior-y: contain; - background-color: var(--sidebar-bg); - color: var(--sidebar-fg); -} -.sidebar-resizing { - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; -} -.js:not(.sidebar-resizing) .sidebar { - transition: transform 0.3s; /* Animation: slide away */ -} -.sidebar code { - line-height: 2em; -} -.sidebar .sidebar-scrollbox { - overflow-y: auto; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - padding: 10px 10px; -} -.sidebar .sidebar-resize-handle { - position: absolute; - cursor: col-resize; - width: 0; - right: 0; - top: 0; - bottom: 0; -} -.js .sidebar .sidebar-resize-handle { - cursor: col-resize; - width: 5px; -} -.sidebar-hidden .sidebar { - transform: translateX(calc(0px - var(--sidebar-width))); -} -.sidebar::-webkit-scrollbar { - background: var(--sidebar-bg); -} -.sidebar::-webkit-scrollbar-thumb { - background: var(--scrollbar); -} - -.sidebar-visible .page-wrapper { - transform: translateX(var(--sidebar-width)); -} -@media only screen and (min-width: 620px) { - .sidebar-visible .page-wrapper { - transform: none; - margin-left: var(--sidebar-width); - } -} - -.chapter { - list-style: none outside none; - padding-left: 0; - line-height: 2.2em; -} - -.chapter ol { - width: 100%; -} - -.chapter li { - display: flex; - color: var(--sidebar-non-existant); -} -.chapter li a { - display: block; - padding: 0; - text-decoration: none; - color: var(--sidebar-fg); -} - -.chapter li a:hover { - color: var(--sidebar-active); -} - -.chapter li a.active { - color: var(--sidebar-active); -} - -.chapter li > a.toggle { - cursor: pointer; - display: block; - margin-left: auto; - padding: 0 10px; - user-select: none; - opacity: 0.68; -} - -.chapter li > a.toggle div { - transition: transform 0.5s; -} - -/* collapse the section */ -.chapter li:not(.expanded) + li > ol { - display: none; -} - -.chapter li.chapter-item { - line-height: 1.5em; - margin-top: 0.6em; -} - -.chapter li.expanded > a.toggle div { - transform: rotate(90deg); -} - -.spacer { - width: 100%; - height: 3px; - margin: 5px 0px; -} -.chapter .spacer { - background-color: var(--sidebar-spacer); -} - -@media (-moz-touch-enabled: 1), (pointer: coarse) { - .chapter li a { padding: 5px 0; } - .spacer { margin: 10px 0; } -} - -.section { - list-style: none outside none; - padding-left: 20px; - line-height: 1.9em; -} - -/* Theme Menu Popup */ - -.theme-popup { - position: absolute; - left: 10px; - top: var(--menu-bar-height); - z-index: 1000; - border-radius: 4px; - font-size: 0.7em; - color: var(--fg); - background: var(--theme-popup-bg); - border: 1px solid var(--theme-popup-border); - margin: 0; - padding: 0; - list-style: none; - display: none; -} -.theme-popup .default { - color: var(--icons); -} -.theme-popup .theme { - width: 100%; - border: 0; - margin: 0; - padding: 2px 10px; - line-height: 25px; - white-space: nowrap; - text-align: left; - cursor: pointer; - color: inherit; - background: inherit; - font-size: inherit; -} -.theme-popup .theme:hover { - background-color: var(--theme-hover); -} -.theme-popup .theme:hover:first-child, -.theme-popup .theme:hover:last-child { - border-top-left-radius: inherit; - border-top-right-radius: inherit; -} diff --git a/arc-docs/theme/css/general.css b/arc-docs/theme/css/general.css deleted file mode 100644 index 02aff1e31..000000000 --- a/arc-docs/theme/css/general.css +++ /dev/null @@ -1,270 +0,0 @@ -@font-face { - font-family: "Computer Modern"; - src: url('../fonts/computer-modern/cmunss.woff2') format('woff2'); - font-display: swap; -} - -@font-face { - font-family: "Computer Modern"; - src: url('../fonts/computer-modern/cmunsx.woff2') format('woff2'); - font-weight: bold; - font-display: swap; -} - -@font-face { - font-family: "Computer Modern"; - src: url('../fonts/computer-modern/cmunsi.woff2') format('woff2'); - font-style: italic, oblique; - font-display: swap; -} - -@font-face { - font-family: "Computer Modern"; - src: url('../fonts/computer-modern/cmunobx.woff2') format('woff2'); - font-weight: bold; - font-style: italic, oblique; - font-display: swap; -} - -@font-face { - font-family: 'Fira Code'; - src: url('../fonts/Fira_Code_v6.2/woff2/FiraCode-Light.woff2') format('woff2'); - font-weight: 300; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code'; - src: url('../fonts/Fira_Code_v6.2/woff2/FiraCode-Regular.woff2') format('woff2'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code'; - src: url('../fonts/Fira_Code_v6.2/woff2/FiraCode-Medium.woff2') format('woff2'); - font-weight: 500; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code'; - src: url('../fonts/Fira_Code_v6.2/woff2/FiraCode-SemiBold.woff2') format('woff2'); - font-weight: 600; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code'; - src: url('../fonts/Fira_Code_v6.2/woff2/FiraCode-Bold.woff2') format('woff2'); - font-weight: 700; - font-style: normal; -} - -@font-face { - font-family: 'Fira Code VF'; - src: url('../fonts/Fira_Code_v6.2/woff2/FiraCode-VF.woff2') format('woff2-variations'); - font-weight: 300 700; - font-style: normal; -} - -/* Base styles and content styles */ - -@import 'variables.css'; - -:root { - /* Browser default font-size is 16px, this way 1 rem = 10px */ - font-size: 62.5%; -} - -html { - font-family: "Computer Modern", serif; - color: var(--fg); - background-color: var(--bg); - text-size-adjust: none; - -webkit-text-size-adjust: none; -} - -body { - margin: 0; - font-size: 1.6rem; - font-spacing: -1rem; - font-family: "Computer Modern", serif; - overflow-x: hidden; -} - -pre.output { - white-space: pre-wrap; /* Since CSS 2.1 */ - white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - word-wrap: break-word; /* Internet Explorer 5.5+ */ - color: var(--bg); - background-color: var(--fg); - font-family: "Fira Code", "Source Code Pro", Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace !important; - font-size: 0.666em; - padding: 0.5em; - margin: 3rem 0; - border-radius: 4px; -} - -code { - font-family: "Fira Code", "Source Code Pro", Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace, monospace !important; - font-size: 0.875em; /* please adjust the ace font size accordingly in editor.js */ -} - -/* Don't change font size in headers. */ -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - font-size: unset; - font-family: "Computer Modern", serif; -} - -.left { float: left; } -.right { float: right; } -.boring { opacity: 0.6; } -.hide-boring .boring { display: none; } -.hidden { display: none !important; } - -h2, h3 { margin-top: 2.5em; } -h4, h5 { margin-top: 2em; } - -.header + .header h3, -.header + .header h4, -.header + .header h5 { - margin-top: 1em; -} - -h1:target::before, -h2:target::before, -h3:target::before, -h4:target::before, -h5:target::before, -h6:target::before { - display: inline-block; - content: "»"; - margin-left: -30px; - width: 30px; -} - -/* This is broken on Safari as of version 14, but is fixed - in Safari Technology Preview 117 which I think will be Safari 14.2. - https://bugs.webkit.org/show_bug.cgi?id=218076 -*/ -:target { - scroll-margin-top: calc(var(--menu-bar-height) + 0.5em); -} - -.page { - outline: 0; - padding: 0 var(--page-padding); - margin-top: calc(0px - var(--menu-bar-height)); /* Compensate for the #menu-bar-hover-placeholder */ -} -.page-wrapper { - box-sizing: border-box; -} -.js:not(.sidebar-resizing) .page-wrapper { - transition: margin-left 0.3s ease, transform 0.3s ease; /* Animation: slide away */ -} - -.content { - overflow-y: auto; - padding: 0 15px; - padding-bottom: 50px; -} -.content main { - margin-left: auto; - margin-right: auto; - max-width: var(--content-max-width); -} -.content p { line-height: 1.45em; } -.content ol { line-height: 1.45em; } -.content ul { line-height: 1.45em; } -.content a { text-decoration: none; } -.content a:hover { text-decoration: underline; } -.content img, .content video { max-width: 100%; } -.content .header:link, -.content .header:visited { - color: var(--fg); -} -.content .header:link, -.content .header:visited:hover { - text-decoration: none; -} - -table { - margin: 0 auto; - border-collapse: collapse; -} -table td { - padding: 3px 20px; - border: 1px var(--table-border-color) solid; -} -table thead { - background: var(--table-header-bg); -} -table thead td { - font-weight: 700; - border: none; -} -table thead th { - padding: 3px 20px; -} -table thead tr { - border: 1px var(--table-header-bg) solid; -} -/* Alternate background colors for rows */ -table tbody tr:nth-child(2n) { - background: var(--table-alternate-bg); -} - - -blockquote { - margin: 20px 0; - padding: 0 20px; - color: var(--fg); - background-color: var(--quote-bg); - border-top: .1em solid var(--quote-border); - border-bottom: .1em solid var(--quote-border); -} - - -:not(.footnote-definition) + .footnote-definition, -.footnote-definition + :not(.footnote-definition) { - margin-top: 2em; -} -.footnote-definition { - font-size: 0.9em; - margin: 0.5em 0; -} -.footnote-definition p { - display: inline; -} - -.tooltiptext { - position: absolute; - visibility: hidden; - color: #fff; - background-color: #333; - transform: translateX(-50%); /* Center by moving tooltip 50% of its width left */ - left: -8px; /* Half of the width of the icon */ - top: -35px; - font-size: 0.8em; - text-align: center; - border-radius: 6px; - padding: 5px 8px; - margin: 5px; - z-index: 1000; -} -.tooltipped .tooltiptext { - visibility: visible; -} - -.chapter li.part-title { - color: var(--sidebar-fg); - margin: 5px 0px; - font-weight: bold; -} - -.result-no-output { - font-style: italic; -} diff --git a/arc-docs/theme/css/print.css b/arc-docs/theme/css/print.css deleted file mode 100644 index 5e690f755..000000000 --- a/arc-docs/theme/css/print.css +++ /dev/null @@ -1,54 +0,0 @@ - -#sidebar, -#menu-bar, -.nav-chapters, -.mobile-nav-chapters { - display: none; -} - -#page-wrapper.page-wrapper { - transform: none; - margin-left: 0px; - overflow-y: initial; -} - -#content { - max-width: none; - margin: 0; - padding: 0; -} - -.page { - overflow-y: initial; -} - -code { - background-color: #666666; - border-radius: 5px; - - /* Force background to be printed in Chrome */ - -webkit-print-color-adjust: exact; -} - -pre > .buttons { - z-index: 2; -} - -a, a:visited, a:active, a:hover { - color: #4183c4; - text-decoration: none; -} - -h1, h2, h3, h4, h5, h6 { - page-break-inside: avoid; - page-break-after: avoid; -} - -pre, code { - page-break-inside: avoid; - white-space: pre-wrap; -} - -.fa { - display: none !important; -} diff --git a/arc-docs/theme/css/variables.css b/arc-docs/theme/css/variables.css deleted file mode 100644 index 56b634bc3..000000000 --- a/arc-docs/theme/css/variables.css +++ /dev/null @@ -1,253 +0,0 @@ - -/* Globals */ - -:root { - --sidebar-width: 300px; - --page-padding: 15px; - --content-max-width: 750px; - --menu-bar-height: 50px; -} - -/* Themes */ - -.ayu { - --bg: hsl(210, 25%, 8%); - --fg: #c5c5c5; - - --sidebar-bg: #14191f; - --sidebar-fg: #c8c9db; - --sidebar-non-existant: #5c6773; - --sidebar-active: #ffb454; - --sidebar-spacer: #2d334f; - - --scrollbar: var(--sidebar-fg); - - --icons: #737480; - --icons-hover: #b7b9cc; - - --links: #0096cf; - - --inline-code-color: #ffb454; - - --theme-popup-bg: #14191f; - --theme-popup-border: #5c6773; - --theme-hover: #191f26; - - --quote-bg: hsl(226, 15%, 17%); - --quote-border: hsl(226, 15%, 22%); - - --table-border-color: hsl(210, 25%, 13%); - --table-header-bg: hsl(210, 25%, 28%); - --table-alternate-bg: hsl(210, 25%, 11%); - - --searchbar-border-color: #848484; - --searchbar-bg: #424242; - --searchbar-fg: #fff; - --searchbar-shadow-color: #d4c89f; - --searchresults-header-fg: #666; - --searchresults-border-color: #888; - --searchresults-li-bg: #252932; - --search-mark-bg: #e3b171; -} - -.coal { - --bg: hsl(200, 7%, 8%); - --fg: #98a3ad; - - --sidebar-bg: #292c2f; - --sidebar-fg: #a1adb8; - --sidebar-non-existant: #505254; - --sidebar-active: #3473ad; - --sidebar-spacer: #393939; - - --scrollbar: var(--sidebar-fg); - - --icons: #43484d; - --icons-hover: #b3c0cc; - - --links: #2b79a2; - - --inline-code-color: #c5c8c6; - - --theme-popup-bg: #141617; - --theme-popup-border: #43484d; - --theme-hover: #1f2124; - - --quote-bg: hsl(234, 21%, 18%); - --quote-border: hsl(234, 21%, 23%); - - --table-border-color: hsl(200, 7%, 13%); - --table-header-bg: hsl(200, 7%, 28%); - --table-alternate-bg: hsl(200, 7%, 11%); - - --searchbar-border-color: #aaa; - --searchbar-bg: #b7b7b7; - --searchbar-fg: #000; - --searchbar-shadow-color: #aaa; - --searchresults-header-fg: #666; - --searchresults-border-color: #98a3ad; - --searchresults-li-bg: #2b2b2f; - --search-mark-bg: #355c7d; -} - -.light { - --bg: hsl(0, 0%, 100%); - --fg: hsl(0, 0%, 0%); - - --sidebar-bg: #fafafa; - --sidebar-fg: hsl(0, 0%, 0%); - --sidebar-non-existant: #aaaaaa; - --sidebar-active: #1f1fff; - --sidebar-spacer: #f4f4f4; - - --scrollbar: #8F8F8F; - - --icons: #747474; - --icons-hover: #000000; - - --links: #20609f; - - --inline-code-color: #301900; - - --theme-popup-bg: #fafafa; - --theme-popup-border: #cccccc; - --theme-hover: #e6e6e6; - - --quote-bg: hsl(197, 37%, 96%); - --quote-border: hsl(197, 37%, 91%); - - --table-border-color: hsl(0, 0%, 95%); - --table-header-bg: hsl(0, 0%, 80%); - --table-alternate-bg: hsl(0, 0%, 97%); - - --searchbar-border-color: #aaa; - --searchbar-bg: #fafafa; - --searchbar-fg: #000; - --searchbar-shadow-color: #aaa; - --searchresults-header-fg: #666; - --searchresults-border-color: #888; - --searchresults-li-bg: #e4f2fe; - --search-mark-bg: #a2cff5; -} - -.navy { - --bg: hsl(226, 23%, 11%); - --fg: #bcbdd0; - - --sidebar-bg: #282d3f; - --sidebar-fg: #c8c9db; - --sidebar-non-existant: #505274; - --sidebar-active: #2b79a2; - --sidebar-spacer: #2d334f; - - --scrollbar: var(--sidebar-fg); - - --icons: #737480; - --icons-hover: #b7b9cc; - - --links: #2b79a2; - - --inline-code-color: #c5c8c6; - - --theme-popup-bg: #161923; - --theme-popup-border: #737480; - --theme-hover: #282e40; - - --quote-bg: hsl(226, 15%, 17%); - --quote-border: hsl(226, 15%, 22%); - - --table-border-color: hsl(226, 23%, 16%); - --table-header-bg: hsl(226, 23%, 31%); - --table-alternate-bg: hsl(226, 23%, 14%); - - --searchbar-border-color: #aaa; - --searchbar-bg: #aeaec6; - --searchbar-fg: #000; - --searchbar-shadow-color: #aaa; - --searchresults-header-fg: #5f5f71; - --searchresults-border-color: #5c5c68; - --searchresults-li-bg: #242430; - --search-mark-bg: #a2cff5; -} - -.rust { - --bg: hsl(60, 9%, 87%); - --fg: #262625; - - --sidebar-bg: #3b2e2a; - --sidebar-fg: #c8c9db; - --sidebar-non-existant: #505254; - --sidebar-active: #e69f67; - --sidebar-spacer: #45373a; - - --scrollbar: var(--sidebar-fg); - - --icons: #737480; - --icons-hover: #262625; - - --links: #2b79a2; - - --inline-code-color: #6e6b5e; - - --theme-popup-bg: #e1e1db; - --theme-popup-border: #b38f6b; - --theme-hover: #99908a; - - --quote-bg: hsl(60, 5%, 75%); - --quote-border: hsl(60, 5%, 70%); - - --table-border-color: hsl(60, 9%, 82%); - --table-header-bg: #b3a497; - --table-alternate-bg: hsl(60, 9%, 84%); - - --searchbar-border-color: #aaa; - --searchbar-bg: #fafafa; - --searchbar-fg: #000; - --searchbar-shadow-color: #aaa; - --searchresults-header-fg: #666; - --searchresults-border-color: #888; - --searchresults-li-bg: #dec2a2; - --search-mark-bg: #e69f67; -} - -@media (prefers-color-scheme: dark) { - .light.no-js { - --bg: hsl(200, 7%, 8%); - --fg: #98a3ad; - - --sidebar-bg: #292c2f; - --sidebar-fg: #a1adb8; - --sidebar-non-existant: #505254; - --sidebar-active: #3473ad; - --sidebar-spacer: #393939; - - --scrollbar: var(--sidebar-fg); - - --icons: #43484d; - --icons-hover: #b3c0cc; - - --links: #2b79a2; - - --inline-code-color: #c5c8c6; - - --theme-popup-bg: #141617; - --theme-popup-border: #43484d; - --theme-hover: #1f2124; - - --quote-bg: hsl(234, 21%, 18%); - --quote-border: hsl(234, 21%, 23%); - - --table-border-color: hsl(200, 7%, 13%); - --table-header-bg: hsl(200, 7%, 28%); - --table-alternate-bg: hsl(200, 7%, 11%); - - --searchbar-border-color: #aaa; - --searchbar-bg: #b7b7b7; - --searchbar-fg: #000; - --searchbar-shadow-color: #aaa; - --searchresults-header-fg: #666; - --searchresults-border-color: #98a3ad; - --searchresults-li-bg: #2b2b2f; - --search-mark-bg: #355c7d; - } -} diff --git a/arc-docs/theme/favicon.png b/arc-docs/theme/favicon.png deleted file mode 100644 index a5b1aa16c..000000000 Binary files a/arc-docs/theme/favicon.png and /dev/null differ diff --git a/arc-docs/theme/favicon.svg b/arc-docs/theme/favicon.svg deleted file mode 100644 index 90e0ea58b..000000000 --- a/arc-docs/theme/favicon.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/arc-docs/theme/highlight.css b/arc-docs/theme/highlight.css deleted file mode 100644 index c23432272..000000000 --- a/arc-docs/theme/highlight.css +++ /dev/null @@ -1,83 +0,0 @@ -/* - * An increased contrast highlighting scheme loosely based on the - * "Base16 Atelier Dune Light" theme by Bram de Haan - * (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) - * Original Base16 color scheme by Chris Kempson - * (https://github.com/chriskempson/base16) - */ - -/* Comment */ -.hljs-comment, -.hljs-quote { - color: #575757; -} - -/* Red */ -.hljs-variable, -.hljs-template-variable, -.hljs-attribute, -.hljs-tag, -.hljs-name, -.hljs-regexp, -.hljs-link, -.hljs-name, -.hljs-selector-id, -.hljs-selector-class { - color: #d70025; -} - -/* Orange */ -.hljs-number, -.hljs-meta, -.hljs-built_in, -.hljs-builtin-name, -.hljs-literal, -.hljs-type, -.hljs-params { - color: #b21e00; -} - -/* Green */ -.hljs-string, -.hljs-symbol, -.hljs-bullet { - color: #008200; -} - -/* Blue */ -.hljs-title, -.hljs-section { - color: #0030f2; -} - -/* Purple */ -.hljs-keyword, -.hljs-selector-tag { - color: #9d00ec; -} - -.hljs { - display: block; - overflow-x: auto; - background: #f6f7f6; - color: #000; - padding: 0.5em; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-addition { - color: #22863a; - background-color: #f0fff4; -} - -.hljs-deletion { - color: #b31d28; - background-color: #ffeef0; -} diff --git a/arc-docs/theme/highlight.js b/arc-docs/theme/highlight.js deleted file mode 100644 index 180385b70..000000000 --- a/arc-docs/theme/highlight.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Highlight.js 10.1.1 (93fd0d73) - License: BSD-3-Clause - Copyright (c) 2006-2020, Ivan Sagalaev -*/ -var hljs=function(){"use strict";function e(n){Object.freeze(n);var t="function"==typeof n;return Object.getOwnPropertyNames(n).forEach((function(r){!Object.hasOwnProperty.call(n,r)||null===n[r]||"object"!=typeof n[r]&&"function"!=typeof n[r]||t&&("caller"===r||"callee"===r||"arguments"===r)||Object.isFrozen(n[r])||e(n[r])})),n}class n{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data}ignoreMatch(){this.ignore=!0}}function t(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function r(e,...n){var t={};for(const n in e)t[n]=e[n];return n.forEach((function(e){for(const n in e)t[n]=e[n]})),t}function a(e){return e.nodeName.toLowerCase()}var i=Object.freeze({__proto__:null,escapeHTML:t,inherit:r,nodeStream:function(e){var n=[];return function e(t,r){for(var i=t.firstChild;i;i=i.nextSibling)3===i.nodeType?r+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:r,node:i}),r=e(i,r),a(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:r,node:i}));return r}(e,0),n},mergeStreams:function(e,n,r){var i=0,s="",o=[];function l(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){s+=""}function d(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var g=l();if(s+=t(r.substring(i,g[0].offset)),i=g[0].offset,g===e){o.reverse().forEach(u);do{d(g.splice(0,1)[0]),g=l()}while(g===e&&g.length&&g[0].offset===i);o.reverse().forEach(c)}else"start"===g[0].event?o.push(g[0].node):o.pop(),d(g.splice(0,1)[0])}return s+t(r.substr(i))}});const s="",o=e=>!!e.kind;class l{constructor(e,n){this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){this.buffer+=t(e)}openNode(e){if(!o(e))return;let n=e.kind;e.sublanguage||(n=`${this.classPrefix}${n}`),this.span(n)}closeNode(e){o(e)&&(this.buffer+=s)}value(){return this.buffer}span(e){this.buffer+=``}}class c{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const n={kind:e,children:[]};this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n),n.children.forEach(n=>this._walk(e,n)),e.closeNode(n)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every(e=>"string"==typeof e)?e.children=[e.children.join("")]:e.children.forEach(e=>{c._collapse(e)}))}}class u extends c{constructor(e){super(),this.options=e}addKeyword(e,n){""!==e&&(this.openNode(n),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,n){const t=e.root;t.kind=n,t.sublanguage=!0,this.add(t)}toHTML(){return new l(this,this.options).value()}finalize(){return!0}}function d(e){return e?"string"==typeof e?e:e.source:null}const g="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",h={begin:"\\\\[\\s\\S]",relevance:0},f={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[h]},p={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[h]},b={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},m=function(e,n,t={}){var a=r({className:"comment",begin:e,end:n,contains:[]},t);return a.contains.push(b),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),a},v=m("//","$"),x=m("/\\*","\\*/"),E=m("#","$");var _=Object.freeze({__proto__:null,IDENT_RE:"[a-zA-Z]\\w*",UNDERSCORE_IDENT_RE:"[a-zA-Z_]\\w*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:g,BINARY_NUMBER_RE:"\\b(0b[01]+)",RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const n=/^#![ ]*\//;return e.binary&&(e.begin=function(...e){return e.map(e=>d(e)).join("")}(n,/.*\b/,e.binary,/\b.*/)),r({className:"meta",begin:n,end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)},BACKSLASH_ESCAPE:h,APOS_STRING_MODE:f,QUOTE_STRING_MODE:p,PHRASAL_WORDS_MODE:b,COMMENT:m,C_LINE_COMMENT_MODE:v,C_BLOCK_COMMENT_MODE:x,HASH_COMMENT_MODE:E,NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?",relevance:0},C_NUMBER_MODE:{className:"number",begin:g,relevance:0},BINARY_NUMBER_MODE:{className:"number",begin:"\\b(0b[01]+)",relevance:0},CSS_NUMBER_MODE:{className:"number",begin:"\\b\\d+(\\.\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[h,{begin:/\[/,end:/\]/,relevance:0,contains:[h]}]}]},TITLE_MODE:{className:"title",begin:"[a-zA-Z]\\w*",relevance:0},UNDERSCORE_TITLE_MODE:{className:"title",begin:"[a-zA-Z_]\\w*",relevance:0},METHOD_GUARD:{begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{n.data._beginMatch!==e[1]&&n.ignoreMatch()}})}}),N="of and for in not or if then".split(" ");function w(e,n){return n?+n:function(e){return N.includes(e.toLowerCase())}(e)?0:1}const R=t,y=r,{nodeStream:k,mergeStreams:O}=i,M=Symbol("nomatch");return function(t){var a=[],i={},s={},o=[],l=!0,c=/(^(<[^>]+>|\t|)+|\n)/gm,g="Could not find the language '{}', did you forget to load/include a language module?";const h={disableAutodetect:!0,name:"Plain text",contains:[]};var f={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:u};function p(e){return f.noHighlightRe.test(e)}function b(e,n,t,r){var a={code:n,language:e};S("before:highlight",a);var i=a.result?a.result:m(a.language,a.code,t,r);return i.code=a.code,S("after:highlight",i),i}function m(e,t,a,s){var o=t;function c(e,n){var t=E.case_insensitive?n[0].toLowerCase():n[0];return Object.prototype.hasOwnProperty.call(e.keywords,t)&&e.keywords[t]}function u(){null!=y.subLanguage?function(){if(""!==A){var e=null;if("string"==typeof y.subLanguage){if(!i[y.subLanguage])return void O.addText(A);e=m(y.subLanguage,A,!0,k[y.subLanguage]),k[y.subLanguage]=e.top}else e=v(A,y.subLanguage.length?y.subLanguage:null);y.relevance>0&&(I+=e.relevance),O.addSublanguage(e.emitter,e.language)}}():function(){if(!y.keywords)return void O.addText(A);let e=0;y.keywordPatternRe.lastIndex=0;let n=y.keywordPatternRe.exec(A),t="";for(;n;){t+=A.substring(e,n.index);const r=c(y,n);if(r){const[e,a]=r;O.addText(t),t="",I+=a,O.addKeyword(n[0],e)}else t+=n[0];e=y.keywordPatternRe.lastIndex,n=y.keywordPatternRe.exec(A)}t+=A.substr(e),O.addText(t)}(),A=""}function h(e){return e.className&&O.openNode(e.className),y=Object.create(e,{parent:{value:y}})}function p(e){return 0===y.matcher.regexIndex?(A+=e[0],1):(L=!0,0)}var b={};function x(t,r){var i=r&&r[0];if(A+=t,null==i)return u(),0;if("begin"===b.type&&"end"===r.type&&b.index===r.index&&""===i){if(A+=o.slice(r.index,r.index+1),!l){const n=Error("0 width match regex");throw n.languageName=e,n.badRule=b.rule,n}return 1}if(b=r,"begin"===r.type)return function(e){var t=e[0],r=e.rule;const a=new n(r),i=[r.__beforeBegin,r["on:begin"]];for(const n of i)if(n&&(n(e,a),a.ignore))return p(t);return r&&r.endSameAsBegin&&(r.endRe=RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")),r.skip?A+=t:(r.excludeBegin&&(A+=t),u(),r.returnBegin||r.excludeBegin||(A=t)),h(r),r.returnBegin?0:t.length}(r);if("illegal"===r.type&&!a){const e=Error('Illegal lexeme "'+i+'" for mode "'+(y.className||"")+'"');throw e.mode=y,e}if("end"===r.type){var s=function(e){var t=e[0],r=o.substr(e.index),a=function e(t,r,a){let i=function(e,n){var t=e&&e.exec(n);return t&&0===t.index}(t.endRe,a);if(i){if(t["on:end"]){const e=new n(t);t["on:end"](r,e),e.ignore&&(i=!1)}if(i){for(;t.endsParent&&t.parent;)t=t.parent;return t}}if(t.endsWithParent)return e(t.parent,r,a)}(y,e,r);if(!a)return M;var i=y;i.skip?A+=t:(i.returnEnd||i.excludeEnd||(A+=t),u(),i.excludeEnd&&(A=t));do{y.className&&O.closeNode(),y.skip||y.subLanguage||(I+=y.relevance),y=y.parent}while(y!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),h(a.starts)),i.returnEnd?0:t.length}(r);if(s!==M)return s}if("illegal"===r.type&&""===i)return 1;if(B>1e5&&B>3*r.index)throw Error("potential infinite loop, way more iterations than matches");return A+=i,i.length}var E=T(e);if(!E)throw console.error(g.replace("{}",e)),Error('Unknown language: "'+e+'"');var _=function(e){function n(n,t){return RegExp(d(n),"m"+(e.case_insensitive?"i":"")+(t?"g":""))}class t{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,n){n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]),this.matchAt+=function(e){return RegExp(e.toString()+"|").exec("").length-1}(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map(e=>e[1]);this.matcherRe=n(function(e,n="|"){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i0&&(a+=n),a+="(";o.length>0;){var l=t.exec(o);if(null==l){a+=o;break}a+=o.substring(0,l.index),o=o.substring(l.index+l[0].length),"\\"===l[0][0]&&l[1]?a+="\\"+(+l[1]+s):(a+=l[0],"("===l[0]&&r++)}a+=")"}return a}(e),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const n=this.matcherRe.exec(e);if(!n)return null;const t=n.findIndex((e,n)=>n>0&&void 0!==e),r=this.matchIndexes[t];return n.splice(0,t),Object.assign(n,r)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t;return this.rules.slice(e).forEach(([e,t])=>n.addRule(e,t)),n.compile(),this.multiRegexes[e]=n,n}considerAll(){this.regexIndex=0}addRule(e,n){this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex;const t=n.exec(e);return t&&(this.regexIndex+=t.position+1,this.regexIndex===this.count&&(this.regexIndex=0)),t}}function i(e,n){const t=e.input[e.index-1],r=e.input[e.index+e[0].length];"."!==t&&"."!==r||n.ignoreMatch()}if(e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return function t(s,o){const l=s;if(s.compiled)return l;s.compiled=!0,s.__beforeBegin=null,s.keywords=s.keywords||s.beginKeywords;let c=null;if("object"==typeof s.keywords&&(c=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=function(e,n){var t={};return"string"==typeof e?r("keyword",e):Object.keys(e).forEach((function(n){r(n,e[n])})),t;function r(e,r){n&&(r=r.toLowerCase()),r.split(" ").forEach((function(n){var r=n.split("|");t[r[0]]=[e,w(r[0],r[1])]}))}}(s.keywords,e.case_insensitive)),s.lexemes&&c)throw Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return l.keywordPatternRe=n(s.lexemes||c||/\w+/,!0),o&&(s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")(?=\\b|\\s)",s.__beforeBegin=i),s.begin||(s.begin=/\B|\b/),l.beginRe=n(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(l.endRe=n(s.end)),l.terminator_end=d(s.end)||"",s.endsWithParent&&o.terminator_end&&(l.terminator_end+=(s.end?"|":"")+o.terminator_end)),s.illegal&&(l.illegalRe=n(s.illegal)),void 0===s.relevance&&(s.relevance=1),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(e){return function(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map((function(n){return r(e,{variants:null},n)}))),e.cached_variants?e.cached_variants:function e(n){return!!n&&(n.endsWithParent||e(n.starts))}(e)?r(e,{starts:e.starts?r(e.starts):null}):Object.isFrozen(e)?r(e):e}("self"===e?s:e)}))),s.contains.forEach((function(e){t(e,l)})),s.starts&&t(s.starts,o),l.matcher=function(e){const n=new a;return e.contains.forEach(e=>n.addRule(e.begin,{rule:e,type:"begin"})),e.terminator_end&&n.addRule(e.terminator_end,{type:"end"}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n}(l),l}(e)}(E),N="",y=s||_,k={},O=new f.__emitter(f);!function(){for(var e=[],n=y;n!==E;n=n.parent)n.className&&e.unshift(n.className);e.forEach(e=>O.openNode(e))}();var A="",I=0,S=0,B=0,L=!1;try{for(y.matcher.considerAll();;){B++,L?L=!1:(y.matcher.lastIndex=S,y.matcher.considerAll());const e=y.matcher.exec(o);if(!e)break;const n=x(o.substring(S,e.index),e);S=e.index+n}return x(o.substr(S)),O.closeAllNodes(),O.finalize(),N=O.toHTML(),{relevance:I,value:N,language:e,illegal:!1,emitter:O,top:y}}catch(n){if(n.message&&n.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:n.message,context:o.slice(S-100,S+100),mode:n.mode},sofar:N,relevance:0,value:R(o),emitter:O};if(l)return{illegal:!1,relevance:0,value:R(o),emitter:O,language:e,top:y,errorRaised:n};throw n}}function v(e,n){n=n||f.languages||Object.keys(i);var t=function(e){const n={relevance:0,emitter:new f.__emitter(f),value:R(e),illegal:!1,top:h};return n.emitter.addText(e),n}(e),r=t;return n.filter(T).filter(I).forEach((function(n){var a=m(n,e,!1);a.language=n,a.relevance>r.relevance&&(r=a),a.relevance>t.relevance&&(r=t,t=a)})),r.language&&(t.second_best=r),t}function x(e){return f.tabReplace||f.useBR?e.replace(c,e=>"\n"===e?f.useBR?"
":e:f.tabReplace?e.replace(/\t/g,f.tabReplace):e):e}function E(e){let n=null;const t=function(e){var n=e.className+" ";n+=e.parentNode?e.parentNode.className:"";const t=f.languageDetectRe.exec(n);if(t){var r=T(t[1]);return r||(console.warn(g.replace("{}",t[1])),console.warn("Falling back to no-highlight mode for this block.",e)),r?t[1]:"no-highlight"}return n.split(/\s+/).find(e=>p(e)||T(e))}(e);if(p(t))return;S("before:highlightBlock",{block:e,language:t}),f.useBR?(n=document.createElement("div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n"):n=e;const r=n.textContent,a=t?b(t,r,!0):v(r),i=k(n);if(i.length){const e=document.createElement("div");e.innerHTML=a.value,a.value=O(i,k(e),r)}a.value=x(a.value),S("after:highlightBlock",{block:e,result:a}),e.innerHTML=a.value,e.className=function(e,n,t){var r=n?s[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),e.includes(r)||a.push(r),a.join(" ").trim()}(e.className,t,a.language),e.result={language:a.language,re:a.relevance,relavance:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance,relavance:a.second_best.relevance})}const N=()=>{if(!N.called){N.called=!0;var e=document.querySelectorAll("pre code");a.forEach.call(e,E)}};function T(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]}function A(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach(e=>{s[e]=n})}function I(e){var n=T(e);return n&&!n.disableAutodetect}function S(e,n){var t=e;o.forEach((function(e){e[t]&&e[t](n)}))}Object.assign(t,{highlight:b,highlightAuto:v,fixMarkup:x,highlightBlock:E,configure:function(e){f=y(f,e)},initHighlighting:N,initHighlightingOnLoad:function(){window.addEventListener("DOMContentLoaded",N,!1)},registerLanguage:function(e,n){var r=null;try{r=n(t)}catch(n){if(console.error("Language definition for '{}' could not be registered.".replace("{}",e)),!l)throw n;console.error(n),r=h}r.name||(r.name=e),i[e]=r,r.rawDefinition=n.bind(null,t),r.aliases&&A(r.aliases,{languageName:e})},listLanguages:function(){return Object.keys(i)},getLanguage:T,registerAliases:A,requireLanguage:function(e){var n=T(e);if(n)return n;throw Error("The '{}' language is required, but not loaded.".replace("{}",e))},autoDetection:I,inherit:y,addPlugin:function(e){o.push(e)}}),t.debugMode=function(){l=!1},t.safeMode=function(){l=!0},t.versionString="10.1.1";for(const n in _)"object"==typeof _[n]&&e(_[n]);return Object.assign(t,_),t}({})}();"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);hljs.registerLanguage("php",function(){"use strict";return function(e){var r={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},t={className:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?[=]?/},{begin:/\?>/}]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},n={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},i={keyword:"__CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ die echo exit include include_once print require require_once array abstract and as binary bool boolean break callable case catch class clone const continue declare default do double else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval extends final finally float for foreach from global goto if implements instanceof insteadof int integer interface isset iterable list new object or private protected public real return string switch throw trait try unset use var void while xor yield",literal:"false null true",built_in:"Error|0 AppendIterator ArgumentCountError ArithmeticError ArrayIterator ArrayObject AssertionError BadFunctionCallException BadMethodCallException CachingIterator CallbackFilterIterator CompileError Countable DirectoryIterator DivisionByZeroError DomainException EmptyIterator ErrorException Exception FilesystemIterator FilterIterator GlobIterator InfiniteIterator InvalidArgumentException IteratorIterator LengthException LimitIterator LogicException MultipleIterator NoRewindIterator OutOfBoundsException OutOfRangeException OuterIterator OverflowException ParentIterator ParseError RangeException RecursiveArrayIterator RecursiveCachingIterator RecursiveCallbackFilterIterator RecursiveDirectoryIterator RecursiveFilterIterator RecursiveIterator RecursiveIteratorIterator RecursiveRegexIterator RecursiveTreeIterator RegexIterator RuntimeException SeekableIterator SplDoublyLinkedList SplFileInfo SplFileObject SplFixedArray SplHeap SplMaxHeap SplMinHeap SplObjectStorage SplObserver SplObserver SplPriorityQueue SplQueue SplStack SplSubject SplSubject SplTempFileObject TypeError UnderflowException UnexpectedValueException ArrayAccess Closure Generator Iterator IteratorAggregate Serializable Throwable Traversable WeakReference Directory __PHP_Incomplete_Class parent php_user_filter self static stdClass"};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:i,contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[t]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler"}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},t,{className:"keyword",begin:/\$this\b/},r,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:i,contains:["self",r,e.C_BLOCK_COMMENT_MODE,a,n]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},a,n]}}}());hljs.registerLanguage("nginx",function(){"use strict";return function(e){var n={className:"variable",variants:[{begin:/\$\d+/},{begin:/\$\{/,end:/}/},{begin:"[\\$\\@]"+e.UNDERSCORE_IDENT_RE}]},a={endsWithParent:!0,keywords:{$pattern:"[a-z/_]+",literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},relevance:0,illegal:"=>",contains:[e.HASH_COMMENT_MODE,{className:"string",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]},{begin:"([a-z]+):/",end:"\\s",endsWithParent:!0,excludeEnd:!0,contains:[n]},{className:"regexp",contains:[e.BACKSLASH_ESCAPE,n],variants:[{begin:"\\s\\^",end:"\\s|{|;",returnEnd:!0},{begin:"~\\*?\\s+",end:"\\s|{|;",returnEnd:!0},{begin:"\\*(\\.[a-z\\-]+)+"},{begin:"([a-z\\-]+\\.)+\\*"}]},{className:"number",begin:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{className:"number",begin:"\\b\\d+[kKmMgGdshdwy]*\\b",relevance:0},n]};return{name:"Nginx config",aliases:["nginxconf"],contains:[e.HASH_COMMENT_MODE,{begin:e.UNDERSCORE_IDENT_RE+"\\s+{",returnBegin:!0,end:"{",contains:[{className:"section",begin:e.UNDERSCORE_IDENT_RE}],relevance:0},{begin:e.UNDERSCORE_IDENT_RE+"\\s",end:";|{",returnBegin:!0,contains:[{className:"attribute",begin:e.UNDERSCORE_IDENT_RE,starts:a}],relevance:0}],illegal:"[^\\s\\}]"}}}());hljs.registerLanguage("csharp",function(){"use strict";return function(e){var n={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield",literal:"null false true"},i=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),a={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},t=e.inherit(s,{illegal:/\n/}),l={className:"subst",begin:"{",end:"}",keywords:n},r=e.inherit(l,{illegal:/\n/}),c={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},e.BACKSLASH_ESCAPE,r]},o={className:"string",begin:/\$@"/,end:'"',contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},l]},g=e.inherit(o,{illegal:/\n/,contains:[{begin:"{{"},{begin:"}}"},{begin:'""'},r]});l.contains=[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],r.contains=[g,c,t,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];var d={variants:[o,c,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},E={begin:"<",end:">",contains:[{beginKeywords:"in out"},i]},_=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",b={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:n,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"\x3c!--|--\x3e"},{begin:""}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},d,a,{beginKeywords:"class interface",end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},i,E,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",end:/[{;=]/,illegal:/[^\s:]/,contains:[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"meta-string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+_+"\\s+)+"+e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:n,contains:[{begin:e.IDENT_RE+"\\s*(\\<.+\\>)?\\s*\\(",returnBegin:!0,contains:[e.TITLE_MODE,E],relevance:0},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,relevance:0,contains:[d,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},b]}}}());hljs.registerLanguage("perl",function(){"use strict";return function(e){var n={$pattern:/[\w.]+/,keyword:"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmget sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when"},t={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:n},s={begin:"->{",end:"}"},r={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,t,r],a=[r,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),s,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return t.contains=a,s.contains=a,{name:"Perl",aliases:["pl","pm"],keywords:n,contains:a}}}());hljs.registerLanguage("swift",function(){"use strict";return function(e){var i={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c compactMap contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},n=e.COMMENT("/\\*","\\*/",{contains:["self"]}),t={className:"subst",begin:/\\\(/,end:"\\)",keywords:i,contains:[]},a={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},r={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return t.contains=[r],{name:"Swift",keywords:i,contains:[a,e.C_LINE_COMMENT_MODE,n,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},r,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:i,contains:["self",r,a,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:i,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)\\b"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,n]}]}}}());hljs.registerLanguage("makefile",function(){"use strict";return function(e){var i={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"",relevance:10,contains:[a,i,t,s,{begin:"\\[",end:"\\]",contains:[{className:"meta",begin:"",contains:[a,s,i,t]}]}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},n,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:")",end:">",keywords:{name:"style"},contains:[c],starts:{end:"",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:")",end:">",keywords:{name:"script"},contains:[c],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:"",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},c]}]}}}());hljs.registerLanguage("bash",function(){"use strict";return function(e){const s={};Object.assign(s,{className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{/,end:/\}/,contains:[{begin:/:-/,contains:[s]}]}]});const t={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,t]};t.contains.push(n);const a={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},i=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b-?[a-z\._]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[i,e.SHEBANG(),c,a,e.HASH_COMMENT_MODE,n,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}}());hljs.registerLanguage("c-like",function(){"use strict";return function(e){function t(e){return"(?:"+e+")?"}var n="(decltype\\(auto\\)|"+t("[a-zA-Z_]\\w*::")+"[a-zA-Z_]\\w*"+t("<.*?>")+")",r={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},a={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},i={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},s={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(a,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},o={className:"title",begin:t("[a-zA-Z_]\\w*::")+e.IDENT_RE,relevance:0},c=t("[a-zA-Z_]\\w*::")+e.IDENT_RE+"\\s*\\(",l={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_t short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},d=[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,a],_={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:l,contains:d.concat([{begin:/\(/,end:/\)/,keywords:l,contains:d.concat(["self"]),relevance:0}]),relevance:0},u={className:"function",begin:"("+n+"[\\*&\\s]+)+"+c,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:l,illegal:/[^\w\s\*&:<>]/,contains:[{begin:"decltype\\(auto\\)",keywords:l,relevance:0},{begin:c,returnBegin:!0,contains:[o],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r,{begin:/\(/,end:/\)/,keywords:l,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,i,r]}]},r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s]};return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:l,disableAutodetect:!0,illegal:"",keywords:l,contains:["self",r]},{begin:e.IDENT_RE+"::",keywords:l},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin://,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:s,strings:a,keywords:l}}}}());hljs.registerLanguage("coffeescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={keyword:e.concat(["then","unless","until","loop","by","when","and","or","is","isnt","not"]).filter((e=>n=>!e.includes(n))(["var","const","let","function","static"])).join(" "),literal:n.concat(["yes","no","on","off"]).join(" "),built_in:a.concat(["npm","print"]).join(" ")},i="[A-Za-z$_][0-9A-Za-z$_]*",s={className:"subst",begin:/#\{/,end:/}/,keywords:t},o=[r.BINARY_NUMBER_MODE,r.inherit(r.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}}),{className:"string",variants:[{begin:/'''/,end:/'''/,contains:[r.BACKSLASH_ESCAPE]},{begin:/'/,end:/'/,contains:[r.BACKSLASH_ESCAPE]},{begin:/"""/,end:/"""/,contains:[r.BACKSLASH_ESCAPE,s]},{begin:/"/,end:/"/,contains:[r.BACKSLASH_ESCAPE,s]}]},{className:"regexp",variants:[{begin:"///",end:"///",contains:[s,r.HASH_COMMENT_MODE]},{begin:"//[gim]{0,3}(?=\\W)",relevance:0},{begin:/\/(?![ *]).*?(?![\\]).\/[gim]{0,3}(?=\W)/}]},{begin:"@"+i},{subLanguage:"javascript",excludeBegin:!0,excludeEnd:!0,variants:[{begin:"```",end:"```"},{begin:"`",end:"`"}]}];s.contains=o;var c=r.inherit(r.TITLE_MODE,{begin:i}),l={className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,end:/\)/,keywords:t,contains:["self"].concat(o)}]};return{name:"CoffeeScript",aliases:["coffee","cson","iced"],keywords:t,illegal:/\/\*/,contains:o.concat([r.COMMENT("###","###"),r.HASH_COMMENT_MODE,{className:"function",begin:"^\\s*"+i+"\\s*=\\s*(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[c,l]},{begin:/[:\(,=]\s*/,relevance:0,contains:[{className:"function",begin:"(\\(.*\\))?\\s*\\B[-=]>",end:"[-=]>",returnBegin:!0,contains:[l]}]},{className:"class",beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[c]},c]},{begin:i+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0}])}}}());hljs.registerLanguage("ruby",function(){"use strict";return function(e){var n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",a={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},s={className:"doctag",begin:"@[A-Za-z]+"},i={begin:"#<",end:">"},r=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^\\=begin","^\\=end",{contains:[s],relevance:10}),e.COMMENT("^__END__","\\n$")],c={className:"subst",begin:"#\\{",end:"}",keywords:a},t={className:"string",contains:[e.BACKSLASH_ESCAPE,c],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,c]})]}]},b={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:a},d=[t,i,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(r)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:n}),b].concat(r)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[t,{begin:n}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[i,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(r),relevance:0}].concat(r);c.contains=d,b.contains=d;var g=[{begin:/^\s*=>/,starts:{end:"$",contains:d}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:d}}];return{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:r.concat(g).concat(d)}}}());hljs.registerLanguage("yaml",function(){"use strict";return function(e){var n="true false yes no null",a="[\\w#;/?:@&=+$,.~*\\'()[\\]]+",s={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]},i=e.inherit(s,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={end:",",endsWithParent:!0,excludeEnd:!0,contains:[],keywords:n,relevance:0},t={begin:"{",end:"}",contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]",contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type",begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},{className:"number",begin:e.C_NUMBER_RE+"\\b"},t,g,s],c=[...b];return c.pop(),c.push(i),l.contains=c,{name:"YAML",case_insensitive:!0,aliases:["yml","YAML"],contains:b}}}());hljs.registerLanguage("d",function(){"use strict";return function(e){var a={$pattern:e.UNDERSCORE_IDENT_RE,keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},d="((0|[1-9][\\d_]*)|0[bB][01_]+|0[xX]([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))",n="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",t={className:"number",begin:"\\b"+d+"(L|u|U|Lu|LU|uL|UL)?",relevance:0},_={className:"number",begin:"\\b(((0[xX](([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)\\.([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)|\\.?([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))|((0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(\\.\\d*|([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)))|\\d+\\.(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)|\\.(0|[1-9][\\d_]*)([eE][+-]?(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d))?))([fF]|L|i|[fF]i|Li)?|"+d+"(i|[fF]i|Li))",relevance:0},r={className:"string",begin:"'("+n+"|.)",end:"'",illegal:"."},i={className:"string",begin:'"',contains:[{begin:n,relevance:0}],end:'"[cwd]?'},s=e.COMMENT("\\/\\+","\\+\\/",{contains:["self"],relevance:10});return{name:"D",keywords:a,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,{className:"string",begin:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',relevance:10},i,{className:"string",begin:'[rq]"',end:'"[cwd]?',relevance:5},{className:"string",begin:"`",end:"`[cwd]?"},{className:"string",begin:'q"\\{',end:'\\}"'},_,t,r,{className:"meta",begin:"^#!",end:"$",relevance:5},{className:"meta",begin:"#(line)",end:"$",relevance:5},{className:"keyword",begin:"@[a-zA-Z_][a-zA-Z_\\d]*"}]}}}());hljs.registerLanguage("properties",function(){"use strict";return function(e){var n="[ \\t\\f]*",t="("+n+"[:=]"+n+"|[ \\t\\f]+)",a="([^\\\\:= \\t\\f\\n]|\\\\.)+",s={end:t,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{name:".properties",case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+"+t,returnBegin:!0,contains:[{className:"attr",begin:"([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",endsParent:!0,relevance:0}],starts:s},{begin:a+t,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:a,endsParent:!0,relevance:0}],starts:s},{className:"attr",relevance:0,begin:a+n+"$"}]}}}());hljs.registerLanguage("http",function(){"use strict";return function(e){var n="HTTP/[0-9\\.]+";return{name:"HTTP",aliases:["https"],illegal:"\\S",contains:[{begin:"^"+n,end:"$",contains:[{className:"number",begin:"\\b\\d{3}\\b"}]},{begin:"^[A-Z]+ (.*?) "+n+"$",returnBegin:!0,end:"$",contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{begin:n},{className:"keyword",begin:"[A-Z]+"}]},{className:"attribute",begin:"^\\w",end:": ",excludeEnd:!0,illegal:"\\n|\\s|=",starts:{end:"$",relevance:0}},{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}]}}}());hljs.registerLanguage("haskell",function(){"use strict";return function(e){var n={variants:[e.COMMENT("--","$"),e.COMMENT("{-","-}",{contains:["self"]})]},i={className:"meta",begin:"{-#",end:"#-}"},a={className:"meta",begin:"^#",end:"$"},s={className:"type",begin:"\\b[A-Z][\\w']*",relevance:0},l={begin:"\\(",end:"\\)",illegal:'"',contains:[i,a,{className:"type",begin:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TITLE_MODE,{begin:"[_a-z][\\w']*"}),n]};return{name:"Haskell",aliases:["hs"],keywords:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",contains:[{beginKeywords:"module",end:"where",keywords:"module where",contains:[l,n],illegal:"\\W\\.|;"},{begin:"\\bimport\\b",end:"$",keywords:"import qualified as hiding",contains:[l,n],illegal:"\\W\\.|;"},{className:"class",begin:"^(\\s*)?(class|instance)\\b",end:"where",keywords:"class family instance where",contains:[s,l,n]},{className:"class",begin:"\\b(data|(new)?type)\\b",end:"$",keywords:"data family type newtype deriving",contains:[i,s,l,{begin:"{",end:"}",contains:l.contains},n]},{beginKeywords:"default",end:"$",contains:[s,l,n]},{beginKeywords:"infix infixl infixr",end:"$",contains:[e.C_NUMBER_MODE,n]},{begin:"\\bforeign\\b",end:"$",keywords:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",contains:[s,e.QUOTE_STRING_MODE,n]},{className:"meta",begin:"#!\\/usr\\/bin\\/env runhaskell",end:"$"},i,a,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,s,e.inherit(e.TITLE_MODE,{begin:"^[_a-z][\\w']*"}),n,{begin:"->|<-"}]}}}());hljs.registerLanguage("handlebars",function(){"use strict";function e(...e){return e.map(e=>(function(e){return e?"string"==typeof e?e:e.source:null})(e)).join("")}return function(n){const a={"builtin-name":"action bindattr collection component concat debugger each each-in get hash if in input link-to loc log lookup mut outlet partial query-params render template textarea unbound unless view with yield"},t=/\[.*?\]/,s=/[^\s!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/,i=e("(",/'.*?'/,"|",/".*?"/,"|",t,"|",s,"|",/\.|\//,")+"),r=e("(",t,"|",s,")(?==)"),l={begin:i,lexemes:/[\w.\/]+/},c=n.inherit(l,{keywords:{literal:"true false undefined null"}}),o={begin:/\(/,end:/\)/},m={className:"attr",begin:r,relevance:0,starts:{begin:/=/,end:/=/,starts:{contains:[n.NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,c,o]}}},d={contains:[n.NUMBER_MODE,n.QUOTE_STRING_MODE,n.APOS_STRING_MODE,{begin:/as\s+\|/,keywords:{keyword:"as"},end:/\|/,contains:[{begin:/\w+/}]},m,c,o],returnEnd:!0},g=n.inherit(l,{className:"name",keywords:a,starts:n.inherit(d,{end:/\)/})});o.contains=[g];const u=n.inherit(l,{keywords:a,className:"name",starts:n.inherit(d,{end:/}}/})}),b=n.inherit(l,{keywords:a,className:"name"}),h=n.inherit(l,{className:"name",keywords:a,starts:n.inherit(d,{end:/}}/})});return{name:"Handlebars",aliases:["hbs","html.hbs","html.handlebars","htmlbars"],case_insensitive:!0,subLanguage:"xml",contains:[{begin:/\\\{\{/,skip:!0},{begin:/\\\\(?=\{\{)/,skip:!0},n.COMMENT(/\{\{!--/,/--\}\}/),n.COMMENT(/\{\{!/,/\}\}/),{className:"template-tag",begin:/\{\{\{\{(?!\/)/,end:/\}\}\}\}/,contains:[u],starts:{end:/\{\{\{\{\//,returnEnd:!0,subLanguage:"xml"}},{className:"template-tag",begin:/\{\{\{\{\//,end:/\}\}\}\}/,contains:[b]},{className:"template-tag",begin:/\{\{#/,end:/\}\}/,contains:[u]},{className:"template-tag",begin:/\{\{(?=else\}\})/,end:/\}\}/,keywords:"else"},{className:"template-tag",begin:/\{\{\//,end:/\}\}/,contains:[b]},{className:"template-variable",begin:/\{\{\{/,end:/\}\}\}/,contains:[h]},{className:"template-variable",begin:/\{\{/,end:/\}\}/,contains:[h]}]}}}());hljs.registerLanguage("rust",function(){"use strict";return function(e){var n="([ui](8|16|32|64|128|size)|f(32|64))?",t="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:t},illegal:""}]}}}());hljs.registerLanguage("cpp",function(){"use strict";return function(e){var t=e.getLanguage("c-like").rawDefinition();return t.disableAutodetect=!1,t.name="C++",t.aliases=["cc","c++","h++","hpp","hh","hxx","cxx"],t}}());hljs.registerLanguage("ini",function(){"use strict";function e(e){return e?"string"==typeof e?e:e.source:null}function n(...n){return n.map(n=>e(n)).join("")}return function(a){var s={className:"number",relevance:0,variants:[{begin:/([\+\-]+)?[\d]+_[\d_]+/},{begin:a.NUMBER_RE}]},i=a.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];var t={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)}/}]},r={className:"literal",begin:/\bon|off|true|false|yes|no\b/},l={className:"string",contains:[a.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},c={begin:/\[/,end:/\]/,contains:[i,r,t,l,s,"self"],relevance:0},g="("+[/[A-Za-z0-9_-]+/,/"(\\"|[^"])*"/,/'[^']*'/].map(n=>e(n)).join("|")+")";return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[i,{className:"section",begin:/\[+/,end:/\]+/},{begin:n(g,"(\\s*\\.\\s*",g,")*",n("(?=",/\s*=\s*[^#\s]/,")")),className:"attr",starts:{end:/$/,contains:[i,c,r,t,l,s]}}]}}}());hljs.registerLanguage("objectivec",function(){"use strict";return function(e){var n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n,keyword:"@interface @class @protocol @implementation"};return{name:"Objective-C",aliases:["mm","objc","obj-c"],keywords:{$pattern:n,keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+_.keyword.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:_,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}}());hljs.registerLanguage("apache",function(){"use strict";return function(e){var n={className:"number",begin:"\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?"};return{name:"Apache config",aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:"",contains:[n,{className:"number",begin:":\\d{1,5}"},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute",begin:/\w+/,relevance:0,keywords:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"},contains:[{className:"meta",begin:"\\s\\[",end:"\\]$"},{className:"variable",begin:"[\\$%]\\{",end:"\\}",contains:["self",{className:"number",begin:"[\\$%]\\d+"}]},n,{className:"number",begin:"\\d+"},e.QUOTE_STRING_MODE]}}],illegal:/\S/}}}());hljs.registerLanguage("java",function(){"use strict";function e(e){return e?"string"==typeof e?e:e.source:null}function n(e){return a("(",e,")?")}function a(...n){return n.map(n=>e(n)).join("")}function s(...n){return"("+n.map(n=>e(n)).join("|")+")"}return function(e){var t="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",i={className:"meta",begin:"@[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},r=e=>a("[",e,"]+([",e,"_]*[",e,"]+)?"),c={className:"number",variants:[{begin:`\\b(0[bB]${r("01")})[lL]?`},{begin:`\\b(0${r("0-7")})[dDfFlL]?`},{begin:a(/\b0[xX]/,s(a(r("a-fA-F0-9"),/\./,r("a-fA-F0-9")),a(r("a-fA-F0-9"),/\.?/),a(/\./,r("a-fA-F0-9"))),/([pP][+-]?(\d+))?/,/[fFdDlL]?/)},{begin:a(/\b/,s(a(/\d*\./,r("\\d")),r("\\d")),/[eE][+-]?[\d]+[dDfF]?/)},{begin:a(/\b/,r(/\d/),n(/\.?/),n(r(/\d/)),/[dDfFlL]?/)}],relevance:0};return{name:"Java",aliases:["jsp"],keywords:t,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:t,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:t,relevance:0,contains:[i,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},c,i]}}}());hljs.registerLanguage("x86asm",function(){"use strict";return function(s){return{name:"Intel x86 Assembly",case_insensitive:!0,keywords:{$pattern:"[.%]?"+s.IDENT_RE,keyword:"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63",built_in:"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr",meta:"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__"},contains:[s.COMMENT(";","$",{relevance:0}),{className:"number",variants:[{begin:"\\b(?:([0-9][0-9_]*)?\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\b",relevance:0},{begin:"\\$[0-9][0-9A-Fa-f]*",relevance:0},{begin:"\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\b"},{begin:"\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\b"}]},s.QUOTE_STRING_MODE,{className:"string",variants:[{begin:"'",end:"[^\\\\]'"},{begin:"`",end:"[^\\\\]`"}],relevance:0},{className:"symbol",variants:[{begin:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)"},{begin:"^\\s*%%[A-Za-z0-9_$#@~.?]*:"}],relevance:0},{className:"subst",begin:"%[0-9]+",relevance:0},{className:"subst",begin:"%!S+",relevance:0},{className:"meta",begin:/^\s*\.[\w_-]+/}]}}}());hljs.registerLanguage("kotlin",function(){"use strict";return function(e){var n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},i={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},s={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},t={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[s,i]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,s,i]}]};i.contains.push(t);var r={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},l={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(t,{className:"meta-string"})]}]},c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),o={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},d=o;return d.variants[1].contains=[o],o.variants[1].contains=[d],{name:"Kotlin",aliases:["kt"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},a,r,l,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[o,e.C_LINE_COMMENT_MODE,c],relevance:0},e.C_LINE_COMMENT_MODE,c,r,l,t,e.C_NUMBER_MODE]},c]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},r,l]},t,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},{className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0}]}}}());hljs.registerLanguage("armasm",function(){"use strict";return function(s){const e={variants:[s.COMMENT("^[ \\t]*(?=#)","$",{relevance:0,excludeBegin:!0}),s.COMMENT("[;@]","$",{relevance:0}),s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE]};return{name:"ARM Assembly",case_insensitive:!0,aliases:["arm"],keywords:{$pattern:"\\.?"+s.IDENT_RE,meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?(?=\\s)"},e,s.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"[=#]\\w+"}],relevance:0}]}}}());hljs.registerLanguage("go",function(){"use strict";return function(e){var n={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{name:"Go",aliases:["golang"],keywords:n,illegal:">>|\.\.\.) /},i={className:"subst",begin:/\{/,end:/\}/,keywords:n,illegal:/#/},s={begin:/\{\{/,relevance:0},r={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,i]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,i]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},l={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},t={className:"params",variants:[{begin:/\(\s*\)/,skip:!0,className:null},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:["self",a,l,r,e.HASH_COMMENT_MODE]}]};return i.contains=[r,l,a],{name:"Python",aliases:["py","gyp","ipython"],keywords:n,illegal:/(<\/|->|\?)|=>/,contains:[a,l,{beginKeywords:"if",relevance:0},r,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,t,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}}());hljs.registerLanguage("shell",function(){"use strict";return function(s){return{name:"Shell Session",aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}}());hljs.registerLanguage("scala",function(){"use strict";return function(e){var n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},a={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,n]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[n],relevance:10}]},s={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},t={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0},i={className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[s]},t]},l={className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[t]};return{name:"Scala",keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},s,l,i,e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}}());hljs.registerLanguage("julia",function(){"use strict";return function(e){var r="[A-Za-z_\\u00A1-\\uFFFF][A-Za-z_0-9\\u00A1-\\uFFFF]*",t={$pattern:r,keyword:"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias ",literal:"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ ",built_in:"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool "},a={keywords:t,illegal:/<\//},n={className:"subst",begin:/\$\(/,end:/\)/,keywords:t},o={className:"variable",begin:"\\$"+r},i={className:"string",contains:[e.BACKSLASH_ESCAPE,n,o],variants:[{begin:/\w*"""/,end:/"""\w*/,relevance:10},{begin:/\w*"/,end:/"\w*/}]},l={className:"string",contains:[e.BACKSLASH_ESCAPE,n,o],begin:"`",end:"`"},s={className:"meta",begin:"@"+r};return a.name="Julia",a.contains=[{className:"number",begin:/(\b0x[\d_]*(\.[\d_]*)?|0x\.\d[\d_]*)p[-+]?\d+|\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\b\d[\d_]*(\.[\d_]*)?|\.\d[\d_]*)([eEfF][-+]?\d+)?/,relevance:0},{className:"string",begin:/'(.|\\[xXuU][a-zA-Z0-9]+)'/},i,l,s,{className:"comment",variants:[{begin:"#=",end:"=#",relevance:10},{begin:"#",end:"$"}]},e.HASH_COMMENT_MODE,{className:"keyword",begin:"\\b(((abstract|primitive)\\s+)type|(mutable\\s+)?struct)\\b"},{begin:/<:/}],n.contains=a.contains,a}}());hljs.registerLanguage("php-template",function(){"use strict";return function(n){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},n.inherit(n.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),n.inherit(n.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}}());hljs.registerLanguage("scss",function(){"use strict";return function(e){var t={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},i={className:"number",begin:"#[0-9A-Fa-f]+"};return e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:"\\#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},{className:"selector-attr",begin:"\\[",end:"\\]",illegal:"$"},{className:"selector-tag",begin:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",relevance:0},{className:"selector-pseudo",begin:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{className:"selector-pseudo",begin:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{className:"attribute",begin:"\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",illegal:"[^\\s]"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:":",end:";",contains:[t,i,e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"meta",begin:"!important"}]},{begin:"@(page|font-face)",lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]",returnBegin:!0,keywords:"and or not only",contains:[{begin:"@[a-z-]+",className:"keyword"},t,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,i,e.CSS_NUMBER_MODE]}]}}}());hljs.registerLanguage("r",function(){"use strict";return function(e){var n="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{name:"R",contains:[e.HASH_COMMENT_MODE,{begin:n,keywords:{$pattern:n,keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},relevance:0},{className:"number",begin:"0[xX][0-9a-fA-F]+[Li]?\\b",relevance:0},{className:"number",begin:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",relevance:0},{className:"number",begin:"\\d+\\.(?!\\d)(?:i\\b)?",relevance:0},{className:"number",begin:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{className:"number",begin:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",relevance:0},{begin:"`",end:"`",relevance:0},{className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:'"',end:'"'},{begin:"'",end:"'"}]}]}}}());hljs.registerLanguage("sql",function(){"use strict";return function(e){var t=e.COMMENT("--","$");return{name:"SQL",case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,keywords:{$pattern:/[\w\.]+/,keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:"`",end:"`"},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}}());hljs.registerLanguage("c",function(){"use strict";return function(e){var n=e.getLanguage("c-like").rawDefinition();return n.name="C",n.aliases=["c","h"],n}}());hljs.registerLanguage("json",function(){"use strict";return function(n){var e={literal:"true false null"},i=[n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],t=[n.QUOTE_STRING_MODE,n.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:t,keywords:e},l={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[n.BACKSLASH_ESCAPE],illegal:"\\n"},n.inherit(a,{begin:/:/})].concat(i),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[n.inherit(a)],illegal:"\\S"};return t.push(l,s),i.forEach((function(n){t.push(n)})),{name:"JSON",contains:t,keywords:e,illegal:"\\S"}}}());hljs.registerLanguage("python-repl",function(){"use strict";return function(n){return{aliases:["pycon"],contains:[{className:"meta",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}}());hljs.registerLanguage("markdown",function(){"use strict";return function(n){const e={begin:"<",end:">",subLanguage:"xml",relevance:0},a={begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},i={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},s={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};i.contains.push(s),s.contains.push(i);var c=[e,a];return i.contains=i.contains.concat(c),s.contains=s.contains.concat(c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:c=c.concat(i,s)},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:c}]}]},e,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:c,end:"$"},{className:"code",variants:[{begin:"(`{3,})(.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})(.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}}());hljs.registerLanguage("javascript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function s(e){return r("(?=",e,")")}function r(...e){return e.map(e=>(function(e){return e?"string"==typeof e?e:e.source:null})(e)).join("")}return function(t){var i="[A-Za-z$_][0-9A-Za-z$_]*",c={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/},o={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.join(" "),literal:n.join(" "),built_in:a.join(" ")},l={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:t.C_NUMBER_RE+"n?"}],relevance:0},E={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]},d={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"xml"}},g={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,E],subLanguage:"css"}},u={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,E]};E.contains=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,l,t.REGEXP_MODE];var b=E.contains.concat([{begin:/\(/,end:/\)/,contains:["self"].concat(E.contains,[t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE])},t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]),_={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:b};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:o,contains:[t.SHEBANG({binary:"node",relevance:5}),{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,d,g,u,t.C_LINE_COMMENT_MODE,t.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,l,{begin:r(/[{,\n]\s*/,s(r(/(((\/\/.*)|(\/\*(.|\n)*\*\/))\s*)*/,i+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:i+s("\\s*:"),relevance:0}]},{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:o,contains:b}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:"<>",end:""},{begin:c.begin,end:c.end}],subLanguage:"xml",contains:[{begin:c.begin,end:c.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[t.inherit(t.TITLE_MODE,{begin:i}),_],illegal:/\[|%/},{begin:/\$[(.]/},t.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor",end:/\{/,excludeEnd:!0},{begin:"(get|set)\\s+(?="+i+"\\()",end:/{/,keywords:"get set",contains:[t.inherit(t.TITLE_MODE,{begin:i}),{begin:/\(\)/},_]}],illegal:/#(?!!)/}}}());hljs.registerLanguage("typescript",function(){"use strict";const e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],n=["true","false","null","undefined","NaN","Infinity"],a=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);return function(r){var t={$pattern:"[A-Za-z$_][0-9A-Za-z$_]*",keyword:e.concat(["type","namespace","typedef","interface","public","private","protected","implements","declare","abstract","readonly"]).join(" "),literal:n.join(" "),built_in:a.concat(["any","void","number","boolean","string","object","never","enum"]).join(" ")},s={className:"meta",begin:"@[A-Za-z$_][0-9A-Za-z$_]*"},i={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:r.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:t,contains:[]},c={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},l={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[r.BACKSLASH_ESCAPE,o],subLanguage:"css"}},E={className:"string",begin:"`",end:"`",contains:[r.BACKSLASH_ESCAPE,o]};o.contains=[r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,i,r.REGEXP_MODE];var d={begin:"\\(",end:/\)/,keywords:t,contains:["self",r.QUOTE_STRING_MODE,r.APOS_STRING_MODE,r.NUMBER_MODE]},u={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,s,d]};return{name:"TypeScript",aliases:["ts"],keywords:t,contains:[r.SHEBANG(),{className:"meta",begin:/^\s*['"]use strict['"]/},r.APOS_STRING_MODE,r.QUOTE_STRING_MODE,c,l,E,r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,i,{begin:"("+r.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[r.C_LINE_COMMENT_MODE,r.C_BLOCK_COMMENT_MODE,r.REGEXP_MODE,{className:"function",begin:"(\\([^(]*(\\([^(]*(\\([^(]*\\))?\\))?\\)|"+r.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:r.UNDERSCORE_IDENT_RE},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:t,contains:d.contains}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:t,contains:["self",r.inherit(r.TITLE_MODE,{begin:"[A-Za-z$_][0-9A-Za-z$_]*"}),u],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",u]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+r.IDENT_RE,relevance:0},s,d]}}}());hljs.registerLanguage("plaintext",function(){"use strict";return function(t){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}}());hljs.registerLanguage("less",function(){"use strict";return function(e){var n="([\\w-]+|@{[\\w-]+})",a=[],s=[],t=function(e){return{className:"string",begin:"~?"+e+".*?"+e}},r=function(e,n,a){return{className:e,begin:n,relevance:a}},i={begin:"\\(",end:"\\)",contains:s,relevance:0};s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t("'"),t('"'),e.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},r("number","#[0-9A-Fa-f]+\\b"),i,r("variable","@@?[\\w-]+",10),r("variable","@{[\\w-]+}"),r("built_in","~?`[^`]*?`"),{className:"attribute",begin:"[\\w-]+\\s*:",end:":",returnBegin:!0,excludeEnd:!0},{className:"meta",begin:"!important"});var c=s.concat({begin:"{",end:"}",contains:a}),l={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(s)},o={begin:n+"\\s*:",returnBegin:!0,end:"[;}]",relevance:0,contains:[{className:"attribute",begin:n,end:":",excludeEnd:!0,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:s}}]},g={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",returnEnd:!0,contains:s,relevance:0}},d={className:"variable",variants:[{begin:"@[\\w-]+\\s*:",relevance:15},{begin:"@[\\w-]+"}],starts:{end:"[;}]",returnEnd:!0,contains:c}},b={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:n,end:"{"}],returnBegin:!0,returnEnd:!0,illegal:"[<='$\"]",relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,r("keyword","all\\b"),r("variable","@{[\\w-]+}"),r("selector-tag",n+"%?",0),r("selector-id","#"+n),r("selector-class","\\."+n,0),r("selector-tag","&",0),{className:"selector-attr",begin:"\\[",end:"\\]"},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"\\(",end:"\\)",contains:c},{begin:"!important"}]};return a.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g,d,o,b),{name:"Less",case_insensitive:!0,illegal:"[=>'/<($\"]",contains:a}}}());hljs.registerLanguage("lua",function(){"use strict";return function(e){var t={begin:"\\[=*\\[",end:"\\]=*\\]",contains:["self"]},a=[e.COMMENT("--(?!\\[=*\\[)","$"),e.COMMENT("--\\[=*\\[","\\]=*\\]",{contains:[t],relevance:10})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:a.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:a}].concat(a)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:"\\[=*\\[",end:"\\]=*\\]",contains:[t],relevance:5}])}}}()); diff --git a/arc-docs/theme/index.hbs b/arc-docs/theme/index.hbs deleted file mode 100644 index 18d984a2b..000000000 --- a/arc-docs/theme/index.hbs +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - {{ title }} - {{#if is_print }} - - {{/if}} - {{#if base_url}} - - {{/if}} - - - - {{> head}} - - - - - - - {{#if favicon_svg}} - - {{/if}} - {{#if favicon_png}} - - {{/if}} - - - - {{#if print_enable}} - - {{/if}} - - - - {{#if copy_fonts}} - - {{/if}} - - - - - - - - {{#each additional_css}} - - {{/each}} - - {{#if mathjax_support}} - - - {{/if}} - - - - - - - - - - - - - - - - -
- -
- {{> header}} - - - - {{#if search_enabled}} - - {{/if}} - - - - -
-
- {{{ content }}} -
- - -
-
- - - -
- - {{#if live_reload_endpoint}} - - - {{/if}} - - {{#if google_analytics}} - - - {{/if}} - - {{#if playground_line_numbers}} - - {{/if}} - - {{#if playground_copyable}} - - {{/if}} - - {{#if playground_js}} - - - - - - {{/if}} - - {{#if search_js}} - - - - {{/if}} - - - - - - - {{#each additional_js}} - - {{/each}} - - {{#if is_print}} - {{#if mathjax_support}} - - {{else}} - - {{/if}} - {{/if}} - - - diff --git a/arc-lang/Cargo.lock b/arc-lang/Cargo.lock new file mode 100644 index 000000000..b68684f47 --- /dev/null +++ b/arc-lang/Cargo.lock @@ -0,0 +1,5484 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "ammonia" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e6d1c7838db705c9b756557ee27c384ce695a1c51a6fe528784cb1c6840170" +dependencies = [ + "html5ever", + "maplit", + "once_cell", + "tendril", + "url", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "anstream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" + +[[package]] +name = "anstyle-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +dependencies = [ + "anstyle", + "windows-sys 0.48.0", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "api" +version = "0.1.0" +dependencies = [ + "halfbrown", + "indexmap 1.9.3", + "serde", +] + +[[package]] +name = "arc-lang" +version = "0.0.0" +dependencies = [ + "anyhow", + "ast", + "ast-prelude", + "clap 4.3.23", + "compiler", + "config", + "hir-interpreter", + "logging", + "repl", + "runtime", + "tokio", + "tracing", + "version", +] + +[[package]] +name = "ariadne" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72fe02fc62033df9ba41cba57ee19acf5e742511a140c7dbc3a873e19a19a1bd" +dependencies = [ + "unicode-width", + "yansi", +] + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "ast" +version = "0.0.0" +dependencies = [ + "codegen", + "im-rc", + "info", + "lexer", + "syn 2.0.29", +] + +[[package]] +name = "ast-prelude" +version = "0.0.0" +dependencies = [ + "ast", + "im-rc", + "info", + "utils", +] + +[[package]] +name = "ast-to-hir" +version = "0.0.0" +dependencies = [ + "ast", + "ast-prelude", + "codegen", + "diagnostics", + "hir", + "im-rc", + "info", + "lazy_static", + "name-gen", + "parser", + "regex", + "stack", + "utils", +] + +[[package]] +name = "async-trait" +version = "0.1.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2d0f03b3640e3a630367e40c468cb7f309529c708ed1d88597047b0e7c6ef7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" + +[[package]] +name = "beef" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" + +[[package]] +name = "bitmaps" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" +dependencies = [ + "typenum", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bstr" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" +dependencies = [ + "memchr", + "regex-automata 0.3.6", + "serde", +] + +[[package]] +name = "build" +version = "0.0.0" +dependencies = [ + "anyhow", + "diagnostics", + "directories", + "indoc 2.0.3", + "names", + "time", + "tracing", +] + +[[package]] +name = "built" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99c4cdc7b2c2364182331055623bdf45254fcb679fea565c40c3c11c101889a" +dependencies = [ + "cargo-lock", + "chrono", +] + +[[package]] +name = "builtins" +version = "0.0.0" +dependencies = [ + "derive_more", + "float-cmp", + "formats", + "futures", + "hyper", + "image", + "macros", + "minus", + "ndarray", + "num 0.4.1", + "num-traits", + "once_cell", + "ort", + "serde", + "time", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "bytemuck" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cargo-lock" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11c675378efb449ed3ce8de78d75d0d80542fc98487c26aba28eb3b82feac72" +dependencies = [ + "semver", + "serde", + "toml 0.7.6", + "url", +] + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "winapi 0.3.9", +] + +[[package]] +name = "clap" +version = "3.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_derive 3.2.18", + "clap_lex 0.2.4", + "indexmap 1.9.3", + "once_cell", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap" +version = "4.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03aef18ddf7d879c15ce20f04826ef8418101c7e528014c3eeea13321047dca3" +dependencies = [ + "clap_builder", + "clap_derive 4.3.12", + "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ce6fffb678c9b80a70b6b6de0aad31df727623a70fd9a842c30cd573e2fa98" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.5.0", + "once_cell", + "strsim", + "terminal_size", +] + +[[package]] +name = "clap_complete" +version = "4.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce" +dependencies = [ + "clap 4.3.23", +] + +[[package]] +name = "clap_derive" +version = "3.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "clap_derive" +version = "4.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "clap_lex" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" + +[[package]] +name = "client" +version = "0.0.0" +dependencies = [ + "api", + "axum", + "clap 4.3.23", + "futures", + "io", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-futures", + "tokio-serde", + "tokio-stream", + "tokio-util", + "tracing", + "tracing-subscriber", + "which", +] + +[[package]] +name = "clipboard-win" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" +dependencies = [ + "error-code", + "str-buf", + "winapi 0.3.9", +] + +[[package]] +name = "codegen" +version = "0.0.0" +dependencies = [ + "colored", + "colors", + "config", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "colored" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +dependencies = [ + "is-terminal", + "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "colors" +version = "0.0.0" +dependencies = [ + "colored", +] + +[[package]] +name = "compiler" +version = "0.0.0" +dependencies = [ + "anyhow", + "ast", + "ast-prelude", + "ast-to-hir", + "build", + "codegen", + "config", + "diagnostics", + "hir", + "hir-interpreter", + "hir-lambda-lift", + "hir-monomorphise", + "hir-patcomp", + "hir-reachable", + "hir-to-mlir", + "hir-to-rust", + "hir-type-inference", + "im-rc", + "info", + "lexer", + "logging", + "mlir", + "parser", + "rust", + "sources", + "value", + "write-ast", + "write-hir", + "write-mlir", + "write-rust", + "write-value", +] + +[[package]] +name = "completer" +version = "0.1.0" +dependencies = [ + "clap 4.3.23", + "lexer", + "rustyline", +] + +[[package]] +name = "config" +version = "0.0.0" +dependencies = [ + "clap 4.3.23", +] + +[[package]] +name = "console-api" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2895653b4d9f1538a83970077cb01dfc77a4810524e51a110944688e916b18e" +dependencies = [ + "prost", + "prost-types", + "tonic", + "tracing-core", +] + +[[package]] +name = "console-subscriber" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4cf42660ac07fcebed809cfe561dd8730bcd35b075215e6479c516bcd0d11cb" +dependencies = [ + "console-api", + "crossbeam-channel", + "crossbeam-utils", + "futures", + "hdrhistogram", + "humantime", + "prost-types", + "serde", + "serde_json", + "thread_local", + "tokio", + "tokio-stream", + "tonic", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "const_format" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c990efc7a285731f9a4378d81aff2f0e85a2c8781a05ef0f8baa8dac54d0ff48" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e026b6ce194a874cb9cf32cd5772d1ef9767cc8fcb5765948d74f37a9d8b2bf6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "coordinator" +version = "0.0.0" +dependencies = [ + "api", + "axum", + "clap 4.3.23", + "futures", + "halfbrown", + "io", + "query-compiler", + "raw-cpuid", + "rustls 0.20.8", + "rustls-pemfile", + "serde", + "serde_json", + "tokio", + "tokio-futures", + "tokio-rustls", + "tokio-serde", + "tokio-stream", + "tokio-util", + "tracing", + "which", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crepe" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a572c5a5165c71c6a34cd5391521faf590f0e216031574375149fd9666ec5cad" +dependencies = [ + "petgraph", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossterm" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio", + "parking_lot 0.12.1", + "signal-hook", + "signal-hook-mio", + "winapi 0.3.9", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "csv-core" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +dependencies = [ + "memchr", +] + +[[package]] +name = "daemon" +version = "0.0.0" + +[[package]] +name = "deranged" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +dependencies = [ + "serde", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "diagnostics" +version = "0.0.0" +dependencies = [ + "ariadne", + "backtrace", + "config", + "info", + "sources", + "syn 2.0.29", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "directories" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi 0.3.9", +] + +[[package]] +name = "educe" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "079044df30bb07de7d846d41a184c4b00e66ebdac93ee459253474f3a47e50ae" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "either" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" + +[[package]] +name = "elasticlunr-rs" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41e83863a500656dfa214fee6682de9c5b9f03de6860fec531235ed2ae9f6571" +dependencies = [ + "regex", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "ena" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +dependencies = [ + "log", +] + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "enum-ordinalize" +version = "3.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4f76552f53cefc9a7f64987c3701b99d982f7690606fd67de1d09712fbf52f1" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "env_logger" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "error-code" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] + +[[package]] +name = "exr" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1e481eb11a482815d3e9d618db8c42a93207134662873809335a92327440c18" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fd-lock" +version = "3.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5" +dependencies = [ + "cfg-if", + "rustix 0.38.4", + "windows-sys 0.48.0", +] + +[[package]] +name = "fdeflate" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "filetime" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "windows-sys 0.48.0", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flink" +version = "0.1.0" + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + +[[package]] +name = "flume" +version = "0.10.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +dependencies = [ + "futures-core", + "futures-sink", + "nanorand", + "pin-project", + "spin 0.9.8", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "formats" +version = "0.0.0" +dependencies = [ + "atoi", + "csv-core", + "itoa", + "lexical-parse-float", + "ryu", + "serde", + "serde_json", + "tracing", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gif" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + +[[package]] +name = "globset" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + +[[package]] +name = "h2" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +dependencies = [ + "crunchy", +] + +[[package]] +name = "halfbrown" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2a3c70a9c00cc1ee87b54e89f9505f73bb17d63f1b25c9a462ba8ef885444f" +dependencies = [ + "hashbrown 0.13.2", + "serde", +] + +[[package]] +name = "handlebars" +version = "4.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c3372087601b532857d332f5957cbae686da52bb7810bf038c3e3c3cc2fa0d" +dependencies = [ + "log", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.3", +] + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "hdrhistogram" +version = "7.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8" +dependencies = [ + "base64 0.13.1", + "byteorder", + "flate2", + "nom", + "num-traits", +] + +[[package]] +name = "headers" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +dependencies = [ + "base64 0.13.1", + "bitflags 1.3.2", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" + +[[package]] +name = "hexf" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6618f4550dcd7d9ddb5126ab18d48dfa31aa952159cb832390bda464d3bc827e" +dependencies = [ + "hexf-parse", + "syn 1.0.109", +] + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "highlighter" +version = "0.0.0" +dependencies = [ + "clap 4.3.23", + "colored", + "colors", + "lexer", + "regex", + "rustyline", +] + +[[package]] +name = "hir" +version = "0.0.0" +dependencies = [ + "codegen", + "im-rc", + "info", + "utils", +] + +[[package]] +name = "hir-interpreter" +version = "0.0.0" +dependencies = [ + "anyhow", + "ast", + "ast-prelude", + "build", + "builtins", + "codegen", + "derive_more", + "diagnostics", + "hir", + "hir-reachable", + "hir-to-mlir", + "hir-to-rust", + "im-rc", + "info", + "kafka", + "minus", + "name-gen", + "num-traits", + "serde", + "stack", + "time", + "utils", + "value", + "write-ast", + "write-hir", + "write-rust", +] + +[[package]] +name = "hir-lambda-lift" +version = "0.0.0" +dependencies = [ + "codegen", + "diagnostics", + "hir", + "im-rc", + "info", + "name-gen", + "stack", + "utils", +] + +[[package]] +name = "hir-monomorphise" +version = "0.0.0" +dependencies = [ + "diagnostics", + "hir", + "im-rc", + "info", + "stack", + "utils", +] + +[[package]] +name = "hir-patcomp" +version = "0.0.0" +dependencies = [ + "diagnostics", + "hir", + "im-rc", + "info", + "name-gen", + "stack", + "utils", +] + +[[package]] +name = "hir-reachable" +version = "0.0.0" +dependencies = [ + "builtins", + "diagnostics", + "hir", + "im-rc", + "info", + "stack", + "utils", + "value", +] + +[[package]] +name = "hir-to-flink" +version = "0.1.0" + +[[package]] +name = "hir-to-mlir" +version = "0.0.0" +dependencies = [ + "codegen", + "diagnostics", + "hir", + "im-rc", + "info", + "lazy_static", + "mlir", + "name-gen", + "parser", + "regex", + "stack", + "utils", + "value", +] + +[[package]] +name = "hir-to-rust" +version = "0.0.0" +dependencies = [ + "diagnostics", + "hir", + "im-rc", + "info", + "name-gen", + "rust", + "stack", + "utils", +] + +[[package]] +name = "hir-type-inference" +version = "0.0.0" +dependencies = [ + "codegen", + "diagnostics", + "hir", + "im-rc", + "info", + "name-gen", + "stack", + "tracing", + "utils", + "write-hir", +] + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "html5ever" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hwloc" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2934f84993b8b4bcae9b6a4e5f0aca638462dda9c7b4f26a570241494f21e0f4" +dependencies = [ + "bitflags 0.7.0", + "errno 0.2.8", + "kernel32-sys", + "libc", + "num 0.1.42", + "pkg-config", + "winapi 0.2.8", +] + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.9", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "ignore" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" +dependencies = [ + "globset", + "lazy_static", + "log", + "memchr", + "regex", + "same-file", + "thread_local", + "walkdir", + "winapi-util", +] + +[[package]] +name = "im-rc" +version = "15.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1955a75fa080c677d3972822ec4bad316169ab1cfc6c257a942c2265dbe5fe" +dependencies = [ + "bitmaps", + "rand_core", + "rand_xoshiro", + "serde", + "sized-chunks", + "typenum", + "version_check", +] + +[[package]] +name = "image" +version = "0.24.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder", + "num-rational", + "num-traits", + "png", + "qoi", + "tiff", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "indoc" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" + +[[package]] +name = "indoc" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c785eefb63ebd0e33416dfcb8d6da0bf27ce752843a45632a67bf10d4d4b5c4" + +[[package]] +name = "info" +version = "0.0.0" +dependencies = [ + "text-size", +] + +[[package]] +name = "inotify" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io" +version = "0.0.0" +dependencies = [ + "console-subscriber", + "const_format", + "halfbrown", + "indexmap 1.9.3", + "raw-cpuid", + "serde", + "serde_json", + "tokio", + "tokio-serde", + "tokio-util", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +dependencies = [ + "hermit-abi 0.3.1", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ipnet" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "is-terminal" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +dependencies = [ + "hermit-abi 0.3.1", + "io-lifetimes", + "rustix 0.37.11", + "windows-sys 0.48.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +dependencies = [ + "rayon", +] + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kafka" +version = "0.0.0" +dependencies = [ + "anyhow", + "rdkafka", + "tokio", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + +[[package]] +name = "kqueue" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "lalrpop" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools", + "lalrpop-util", + "petgraph", + "pico-args", + "regex", + "regex-syntax 0.7.4", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" +dependencies = [ + "regex", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "lexer" +version = "0.0.0" +dependencies = [ + "diagnostics", + "info", + "logos", + "quote", + "regex", + "syn 2.0.29", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libz-sys" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "line-wrap" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" +dependencies = [ + "safemem", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "logging" +version = "0.0.0" +dependencies = [ + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "logos" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c000ca4d908ff18ac99b93a062cb8958d331c3220719c52e77cb19cc6ac5d2c1" +dependencies = [ + "logos-derive", +] + +[[package]] +name = "logos-codegen" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc487311295e0002e452025d6b580b77bb17286de87b57138f3b5db711cded68" +dependencies = [ + "beef", + "fnv", + "proc-macro2", + "quote", + "regex-syntax 0.6.29", + "syn 2.0.29", +] + +[[package]] +name = "logos-derive" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbfc0d229f1f42d790440136d941afd806bc9e949e2bcb8faa813b0f00d1267e" +dependencies = [ + "logos-codegen", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "macros" +version = "0.0.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "markup5ever" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +dependencies = [ + "log", + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" + +[[package]] +name = "matrixmultiply" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090126dc04f95dc0d1c1c91f61bdd474b3930ca064c1edc8a849da2c6cbe1e77" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "mdbook" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c55eb7c4dad20cc5bc15181c2aaf43d5689d5c3e0b80b50cc4cf0b7fe72a26d9" +dependencies = [ + "ammonia", + "anyhow", + "chrono", + "clap 4.3.23", + "clap_complete", + "elasticlunr-rs", + "env_logger", + "futures-util", + "handlebars", + "ignore", + "log", + "memchr", + "notify", + "notify-debouncer-mini", + "once_cell", + "opener", + "pulldown-cmark", + "regex", + "serde", + "serde_json", + "shlex", + "tempfile", + "tokio", + "toml 0.5.11", + "topological-sort", + "warp", +] + +[[package]] +name = "mdbook-arc-lang" +version = "0.0.0" +dependencies = [ + "anyhow", + "colored", + "colors", + "highlighter", + "indoc 2.0.3", + "lexer", + "mdbook", + "regex", + "serde_json", +] + +[[package]] +name = "mdbook-exec" +version = "0.0.0" +dependencies = [ + "anyhow", + "mdbook", + "regex", + "serde_json", +] + +[[package]] +name = "mdbook-grammar" +version = "0.0.0" +dependencies = [ + "anyhow", + "mdbook", + "regex", + "serde_json", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "minus" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3b2098701d3565543b4deca8290a10337dbc585e0e356ca46ffd1b6f7e0d6a" +dependencies = [ + "crossbeam-channel", + "crossterm", + "once_cell", + "parking_lot 0.12.1", + "regex", + "textwrap", + "thiserror", +] + +[[package]] +name = "mio" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.45.0", +] + +[[package]] +name = "mlir" +version = "0.0.0" +dependencies = [ + "codegen", + "im-rc", + "info", + "value", +] + +[[package]] +name = "name-gen" +version = "0.0.0" + +[[package]] +name = "names" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bddcd3bf5144b6392de80e04c347cd7fab2508f6df16a85fc496ecd5cec39bc" +dependencies = [ + "clap 3.2.23", + "rand", +] + +[[package]] +name = "nanorand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" +dependencies = [ + "getrandom", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "ndarray" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "rawpointer", + "serde", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nix" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "static_assertions", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normpath" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "notify" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +dependencies = [ + "bitflags 2.3.3", + "crossbeam-channel", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "walkdir", + "windows-sys 0.48.0", +] + +[[package]] +name = "notify-debouncer-mini" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e55ee272914f4563a2f8b8553eb6811f3c0caea81c756346bad15b7e3ef969f0" +dependencies = [ + "crossbeam-channel", + "notify", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi 0.3.9", +] + +[[package]] +name = "num" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" +dependencies = [ + "num-integer", + "num-iter", + "num-traits", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +dependencies = [ + "hermit-abi 0.2.6", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "object" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +dependencies = [ + "parking_lot_core 0.9.7", +] + +[[package]] +name = "onig" +version = "6.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f" +dependencies = [ + "bitflags 1.3.2", + "libc", + "once_cell", + "onig_sys", +] + +[[package]] +name = "onig_sys" +version = "69.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "opener" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c62dcb6174f9cb326eac248f07e955d5d559c272730b6c03e396b443b562788" +dependencies = [ + "bstr", + "normpath", + "winapi 0.3.9", +] + +[[package]] +name = "openssl" +version = "0.10.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ort" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e56c9c4185ee949ef961aca8777d1dbd52cb104b444669adad63e8181820a7" +dependencies = [ + "flate2", + "half", + "lazy_static", + "libc", + "ndarray", + "tar", + "thiserror", + "tracing", + "ureq", + "vswhom", + "winapi 0.3.9", + "zip", +] + +[[package]] +name = "os_str_bytes" +version = "6.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.7", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi 0.3.9", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "windows-sys 0.45.0", +] + +[[package]] +name = "parser" +version = "0.0.0" +dependencies = [ + "ast", + "diagnostics", + "im-rc", + "info", + "lalrpop", + "lalrpop-util", + "lexer", + "sources", + "syn 2.0.29", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pest" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5a" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666d00490d4ac815001da55838c500eafb0320019bbaa44444137c48b443a853" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ca01446f50dbda87c1786af8770d535423fa8a53aec03b8f4e3d7eb10e0929" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "pest_meta" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56af0a30af74d0445c0bf6d9d051c979b516a1a5af790d251daee76005420a48" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "petgraph" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +dependencies = [ + "fixedbitset", + "indexmap 1.9.3", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "pin-project" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c95a7476719eab1e366eaf73d0260af3021184f18177925b07f54b30089ceead" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39407670928234ebc5e6e580247dd567ad73a3578460c5990f9503df207e8f07" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" + +[[package]] +name = "plist" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdc0001cfea3db57a2e24bc0d818e9e20e554b5f97fabb9bc231dc240269ae06" +dependencies = [ + "base64 0.21.2", + "indexmap 1.9.3", + "line-wrap", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" +dependencies = [ + "proc-macro2", + "syn 2.0.29", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +dependencies = [ + "prost", +] + +[[package]] +name = "pulldown-cmark" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" +dependencies = [ + "bitflags 1.3.2", + "memchr", + "unicase", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "query-compiler" +version = "0.0.0" +dependencies = [ + "api", + "crepe", + "halfbrown", + "indoc 1.0.9", + "itertools", + "proc-macro2", + "quote", + "regex", + "rust-format", + "serde_json", + "tracing", +] + +[[package]] +name = "quick-xml" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81b9228215d82c7b61490fec1de287136b5de6f5700f6e58ea9ad61a7964ca51" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core", +] + +[[package]] +name = "raw-cpuid" +version = "10.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" +dependencies = [ + "bitflags 1.3.2", + "serde", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "rdkafka" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da18026aad1c24033da3da726200de7e911e75c2e2cc2f77ffb9b4502720faae" +dependencies = [ + "futures-channel", + "futures-util", + "libc", + "log", + "rdkafka-sys", + "serde", + "serde_derive", + "serde_json", + "slab", + "tokio", +] + +[[package]] +name = "rdkafka-sys" +version = "4.5.0+1.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb0676c2112342ac7165decdedbc4e7086c0af384479ccce534546b10687a5d" +dependencies = [ + "libc", + "libz-sys", + "num_enum", + "pkg-config", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.3.6", + "regex-syntax 0.7.4", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.4", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + +[[package]] +name = "repl" +version = "0.0.0" +dependencies = [ + "anyhow", + "build", + "clap 4.3.23", + "codegen", + "colored", + "colors", + "compiler", + "completer", + "config", + "highlighter", + "im-rc", + "info", + "lexer", + "regex", + "rustyline", + "shlex", + "validator", +] + +[[package]] +name = "reqwest" +version = "0.11.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +dependencies = [ + "base64 0.21.2", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + +[[package]] +name = "runner" +version = "0.0.0" +dependencies = [ + "cfg-if", + "hwloc", + "libc", + "logging", + "num_cpus", + "tokio", +] + +[[package]] +name = "runtime" +version = "0.0.0" +dependencies = [ + "builtins", + "formats", + "hexf", + "macros", + "runner", + "serde", + "state", + "time", + "tokio", +] + +[[package]] +name = "rust" +version = "0.0.0" +dependencies = [ + "im-rc", + "info", + "value", +] + +[[package]] +name = "rust-format" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60e7c00b6c3bf5e38a880eec01d7e829d12ca682079f8238a464def3c4b31627" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.37.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85597d61f83914ddeba6a47b3b8ffe7365107221c2e557ed94426489fefb5f77" +dependencies = [ + "bitflags 1.3.2", + "errno 0.3.1", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.1", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +dependencies = [ + "bitflags 2.3.3", + "errno 0.3.1", + "libc", + "linux-raw-sys 0.4.3", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustls" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.4", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64 0.21.2", +] + +[[package]] +name = "rustls-webpki" +version = "0.100.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" + +[[package]] +name = "rustyline" +version = "12.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "994eca4bca05c87e86e15d90fc7a91d1be64b4482b38cb2d27474568fe7c9db9" +dependencies = [ + "bitflags 2.3.3", + "cfg-if", + "clipboard-win", + "fd-lock", + "home", + "libc", + "log", + "memchr", + "nix", + "radix_trie", + "rustyline-derive", + "scopeguard", + "unicode-segmentation", + "unicode-width", + "utf8parse", + "winapi 0.3.9", +] + +[[package]] +name = "rustyline-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a32af5427251d2e4be14fc151eabe18abb4a7aad5efee7044da9f096c906a43" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "security-framework" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.185" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be9b6f69f1dfd54c3b568ffa45c310d6973a5e5148fd40cf515acaf38cf5bc31" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.185" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc59dfdcbad1437773485e0367fea4b090a2e0a16d9ffc46af47764536a298ec" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "serde_json" +version = "1.0.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b1b6471d7496b051e03f1958802a73f88b947866f5146f329e47e36554f4e55" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps", + "typenum", +] + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "sled" +version = "0.34.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935" +dependencies = [ + "crc32fast", + "crossbeam-epoch", + "crossbeam-utils", + "fs2", + "fxhash", + "libc", + "log", + "parking_lot 0.11.2", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi 0.3.9", +] + +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "sources" +version = "0.0.0" +dependencies = [ + "ariadne", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "stack" +version = "0.0.0" + +[[package]] +name = "state" +version = "0.1.0" +dependencies = [ + "builtins", + "serde", + "serde_json", + "sled", + "tokio", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "str-buf" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot 0.12.1", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "syntect" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e02b4b303bf8d08bfeb0445cba5068a3d306b6baece1d5582171a9bf49188f91" +dependencies = [ + "bincode", + "bitflags 1.3.2", + "flate2", + "fnv", + "once_cell", + "onig", + "plist", + "regex-syntax 0.7.4", + "serde", + "serde_json", + "thiserror", + "walkdir", + "yaml-rust", +] + +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" +dependencies = [ + "autocfg", + "cfg-if", + "fastrand", + "redox_syscall 0.3.5", + "rustix 0.37.11", + "windows-sys 0.48.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi 0.3.9", +] + +[[package]] +name = "termcolor" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal_size" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" +dependencies = [ + "rustix 0.37.11", + "windows-sys 0.48.0", +] + +[[package]] +name = "text-size" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233" + +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tiff" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "time" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" +dependencies = [ + "deranged", + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "time-macros" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +dependencies = [ + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.3", + "tokio-macros", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-futures" +version = "0.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5c8ea7f4c1ea9cdb9fb03cba1522c23e9fb97eb1518c92b952093f93f86cd" + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls 0.20.8", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bytes", + "educe", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "tokio-util" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "futures-util", + "hashbrown 0.12.3", + "pin-project-lite", + "slab", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +dependencies = [ + "indexmap 2.0.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +dependencies = [ + "async-trait", + "axum", + "base64 0.21.2", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "topological-sort" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tree-sitter" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e747b1f9b7b931ed39a548c1fae149101497de3c1fc8d9e18c62c1a66c683d3d" +dependencies = [ + "cc", + "regex", +] + +[[package]] +name = "tree-sitter-arclang" +version = "0.0.1" +dependencies = [ + "ansi_term", + "cc", + "tree-sitter", + "tree-sitter-highlight", +] + +[[package]] +name = "tree-sitter-highlight" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "042342584c5a7a0b833d9fc4e2bdab3f9868ddc6c4b339a1e01451c6720868bc" +dependencies = [ + "regex", + "thiserror", + "tree-sitter", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" +dependencies = [ + "base64 0.13.1", + "byteorder", + "bytes", + "http", + "httparse", + "log", + "rand", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "ureq" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" +dependencies = [ + "base64 0.21.2", + "log", + "once_cell", + "rustls 0.21.7", + "rustls-webpki 0.100.2", + "url", + "webpki-roots", +] + +[[package]] +name = "url" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "utils" +version = "0.0.0" +dependencies = [ + "im-rc", +] + +[[package]] +name = "validator" +version = "0.0.0" +dependencies = [ + "colored", + "rustyline", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "value" +version = "0.0.0" +dependencies = [ + "ast", + "builtins", + "hir", + "im-rc", + "info", + "serde", + "serde_json", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version" +version = "0.0.0" +dependencies = [ + "built", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "warp" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba431ef570df1287f7f8b07e376491ad54f84d26ac473489427231e1718e1f69" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "headers", + "http", + "hyper", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project", + "rustls-pemfile", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tokio-util", + "tower-service", + "tracing", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.29", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki 0.100.2", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + +[[package]] +name = "which" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +dependencies = [ + "either", + "libc", + "once_cell", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winnow" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d09770118a7eb1ccaf4a594a221334119a44a814fcb0d31c5b85e83e97227a97" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "worker" +version = "0.0.0" +dependencies = [ + "api", + "axum", + "clap 4.3.23", + "futures", + "io", + "num_cpus", + "raw-cpuid", + "serde", + "tokio", + "tokio-futures", + "tokio-serde", + "tokio-stream", + "tokio-util", + "tracing", +] + +[[package]] +name = "write-ast" +version = "0.0.0" +dependencies = [ + "ast", + "codegen", + "im-rc", + "prettyplease", + "quote", + "syntect", +] + +[[package]] +name = "write-flink" +version = "0.1.0" + +[[package]] +name = "write-hir" +version = "0.0.0" +dependencies = [ + "codegen", + "colors", + "hir", + "im-rc", +] + +[[package]] +name = "write-mlir" +version = "0.0.0" +dependencies = [ + "ast-prelude", + "codegen", + "hir-interpreter", + "im-rc", + "info", + "mlir", + "name-gen", + "stack", + "utils", +] + +[[package]] +name = "write-rust" +version = "0.0.0" +dependencies = [ + "builtins", + "codegen", + "im-rc", + "rust", + "time", + "utils", + "value", +] + +[[package]] +name = "write-value" +version = "0.0.0" +dependencies = [ + "builtins", + "codegen", + "colors", + "hir", + "value", + "write-hir", +] + +[[package]] +name = "xattr" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +dependencies = [ + "libc", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] diff --git a/arc-lang/Cargo.toml b/arc-lang/Cargo.toml new file mode 100644 index 000000000..113e59706 --- /dev/null +++ b/arc-lang/Cargo.toml @@ -0,0 +1,224 @@ +[workspace] +members = [ + "crates/repl", + "crates/compiler", + "crates/compiler/infra/build", + "crates/compiler/infra/codegen", + "crates/compiler/infra/diagnostics", + "crates/compiler/infra/info", + "crates/compiler/infra/name-gen", + "crates/compiler/infra/sources", + "crates/compiler/infra/stack", + "crates/compiler/infra/utils", + "crates/compiler/infra/kafka", + "crates/compiler/irs/ast", + "crates/compiler/irs/hir", + "crates/compiler/irs/mlir", + "crates/compiler/irs/rust", + "crates/compiler/irs/flink", + "crates/compiler/irs/value", + "crates/compiler/passes/ast-prelude", + "crates/compiler/passes/ast-to-hir", + "crates/compiler/passes/hir-lambda-lift", + "crates/compiler/passes/hir-type-inference", + "crates/compiler/passes/hir-patcomp", + "crates/compiler/passes/hir-monomorphise", + "crates/compiler/passes/hir-interpreter", + "crates/compiler/passes/hir-reachable", + "crates/compiler/passes/hir-to-mlir", + "crates/compiler/passes/hir-to-rust", + "crates/compiler/passes/hir-to-flink", + "crates/compiler/codegen/write-ast", + "crates/compiler/codegen/write-hir", + "crates/compiler/codegen/write-value", + "crates/compiler/codegen/write-mlir", + "crates/compiler/codegen/write-rust", + "crates/compiler/codegen/write-flink", + "crates/manager", + "crates/runtime", + "crates/cloud/api", + "crates/cloud/client", + "crates/cloud/coordinator", + "crates/cloud/io", + "crates/cloud/query-compiler", + "crates/cloud/worker", + "crates/tree-sitter", + "crates/logging", + "crates/config", + "crates/book/mdbook-arc-lang", + "crates/book/mdbook-grammar", + "crates/book/mdbook-exec", + "crates/colors", + "crates/repl/completer", + "crates/repl/validator", + "crates/repl/highlighter", + "crates/version", +] + +[workspace.package] +version = "0.0.0" +edition = "2021" +authors = ["Klas Segeljakt", "Frej Drejhammar"] +homepage = "https://cda-group.github.io/arc" +repository = "https://github.com/cda-group/arc" +readme = "README.md" + +[workspace.dependencies] +repl = { path = "crates/repl" } +completer = { path = "crates/repl/completer" } +validator = { path = "crates/repl/validator" } +highlighter = { path = "crates/repl/highlighter" } +compiler = { path = "crates/compiler" } +config = { path = "crates/config" } +info = { path = "crates/compiler/infra/info" } +codegen = { path = "crates/compiler/infra/codegen" } +build = { path = "crates/compiler/infra/build" } +diagnostics = { path = "crates/compiler/infra/diagnostics" } +name-gen = { path = "crates/compiler/infra/name-gen" } +sources = { path = "crates/compiler/infra/sources" } +stack = { path = "crates/compiler/infra/stack" } +utils = { path = "crates/compiler/infra/utils" } +kafka = { path = "crates/compiler/infra/kafka" } +ast = { path = "crates/compiler/irs/ast" } +hir = { path = "crates/compiler/irs/hir" } +rust = { path = "crates/compiler/irs/rust" } +mlir = { path = "crates/compiler/irs/mlir" } +value = { path = "crates/compiler/irs/value" } +parser = { path = "crates/compiler/passes/parser" } +lexer = { path = "crates/compiler/passes/lexer" } +ast-prelude = { path = "crates/compiler/passes/ast-prelude" } +ast-to-hir = { path = "crates/compiler/passes/ast-to-hir" } +hir-lambda-lift = { path = "crates/compiler/passes/hir-lambda-lift" } +hir-type-inference = { path = "crates/compiler/passes/hir-type-inference" } +hir-patcomp = { path = "crates/compiler/passes/hir-patcomp" } +hir-monomorphise = { path = "crates/compiler/passes/hir-monomorphise" } +hir-interpreter = { path = "crates/compiler/passes/hir-interpreter" } +hir-reachable = { path = "crates/compiler/passes/hir-reachable" } +hir-to-mlir = { path = "crates/compiler/passes/hir-to-mlir" } +hir-to-rust = { path = "crates/compiler/passes/hir-to-rust" } +hir-to-flink = { path = "crates/compiler/passes/hir-to-flink" } +write-ast = { path = "crates/compiler/codegen/write-ast" } +write-hir = { path = "crates/compiler/codegen/write-hir" } +write-value = { path = "crates/compiler/codegen/write-value" } +write-rust = { path = "crates/compiler/codegen/write-rust" } +write-mlir = { path = "crates/compiler/codegen/write-mlir" } +write-flink = { path = "crates/compiler/codegen/write-flink" } +manager = { path = "crates/manager" } + +runtime = { path = "crates/runtime" } +builtins = { path = "crates/runtime/builtins" } +formats = { path = "crates/runtime/formats" } +macros = { path = "crates/runtime/macros" } +runner = { path = "crates/runtime/runner" } +state = { path = "crates/runtime/state" } +timer = { path = "crates/runtime/timer" } + +logging = { path = "crates/logging" } +version = { path = "crates/version" } + +mdbook-arc-lang = { path = "crates/book/mdbook-arc-lang" } +mdbook-grammar = { path = "crates/book/mdbook-grammar" } +mdbook-exec = { path = "crates/book/mdbook-exec" } +colors = { path = "crates/colors" } + +im-rc = { version = "15.1.0", features = ["serde"] } +uuid = { version = "1.4.1" } +rustyline = { version = "12.0.0", features = ["derive", "custom-bindings"] } +ariadne = { version = "0.3.0" } +indoc = { version = "2.0.3" } +colored = { version = "2.0.4" } +regex = { version = "1.9.3" } +clap = { version = "4.3.23", features = ["derive", "string"] } +shlex = { version = "1.1.0" } +anyhow = { version = "1.0.75" } +rdkafka = { version = "0.33.2" } +tokio = { version = "1.32.0", features = ["full"] } +time = { version = "0.3.25", features = ["serde-human-readable", "std", "macros"] } +backtrace = { version = "0.3.68" } +text-size = { version = "1.1.1" } +lalrpop = { version = "0.20.0", features = [ "lexer" ] } +lalrpop-util = { version = "0.20.0" } +logos = { version = "0.13.0" } +lazy_static = { version = "1.4.0" } +syn = { version = "2.0.29", features = ["full", "derive", "extra-traits"] } +prettyplease = { version = "0.2.12" } +syntect = { version = "5.1.0" } +proc-macro2 = { version = "1.0.66" } +quote = { version = "1.0.33" } +url = { version = "2.4.0", features = ["serde"] } +derive_more = { version = "0.99.17", default-features = false, features = ["from", "into", "deref", "deref_mut", "constructor", "as_ref", "unwrap"] } +rust-format = { version = "0.3.4", features = ["token_stream"] } +names = { version = "0.14.0" } +csv-core = { version = "0.1.10" } +ryu = { version = "1.0.15" } +lexical-parse-float = { version = "0.8.5", default-features = false, features = ["compact"] } +itoa = { version = "1.0.9" } +atoi = { version = "2.0.0", default-features = false } +prost = { version = "0.11.9" } +hexf = { version = "0.2.1" } +bytes = { version = "1.4.0" } +serde = { version = "=1.0.185", features = ["derive", "rc"] } +serde_derive = { version = "=1.0.185" } +float-cmp = { version = "0.9.0" } +ort = { version = "1.15.2" } +ndarray = { version = "0.15.6", features = ["serde"] } +image = { version = "0.24.7" } +sled = { version = "0.34.7" } +# tikv-client = { version = "0.1.0", optional = true } +serde_json = { version = "1.0.105" } +num = { version = "0.4.1" } +num-traits = { version = "0.2.16" } +tokio-stream = { version = "0.1.14" } +tokio-util = { version = "0.7.8", features = ["full"] } +futures = { version = "0.3.28" } +async-tempfile = { version = "0.4.0" } +tokio-serde = { version = "0.8.0", features = ["json"] } +tracing = { version = "0.1.37" } +tracing-subscriber = { version = "0.3.17", features = ["env-filter"] } +arrayvec = { version = "0.7.4" } +cfg-if = { version = "1.0.0" } +built = { version = "0.6.1", features = ["chrono"] } +mdbook = { version = "0.4.25" } +directories = { version = "5.0.1" } +once_cell = { version = "1.18.0" } +polars = { version = "0.32.1" } +# ouroboros = { version = "0.18.0" } +minus = { version = "5.4.0", features = ["static_output", "search"] } +hyper = { version = "0.14.27" } + +[package] +name = "arc-lang" +version.workspace = true +edition.workspace = true + +[dependencies] +compiler.workspace = true +config.workspace = true +clap.workspace = true +anyhow.workspace = true +tokio.workspace = true +repl.workspace = true +logging.workspace = true +version.workspace = true +tracing.workspace = true + +[dev-dependencies] +runtime.workspace = true +ast-prelude.workspace = true +hir-interpreter.workspace = true +ast.workspace = true + +[profile.dev] +debug-assertions = false +rpath = true # ONNX + +[profile.release] +rpath = true # ONNX + +[[example]] +name = "manual" +path = "examples/manual.rs" + +[[example]] +name = "predict" +path = "examples/predict.rs" diff --git a/arc-lang/arc_lang.opam b/arc-lang/arc_lang.opam deleted file mode 100644 index e69de29bb..000000000 diff --git a/arc-lang/crates/cloud/api/Cargo.toml b/arc-lang/crates/cloud/api/Cargo.toml new file mode 100644 index 000000000..d0afd2566 --- /dev/null +++ b/arc-lang/crates/cloud/api/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "api" +version = "0.1.0" +edition = "2021" + +[dependencies] +halfbrown = { version = "0.1.18", features = ["serde"] } +indexmap = { version = "1.9.2", features = ["serde"] } +serde = { version = "1.0.152", features = ["derive", "rc"] } diff --git a/arc-lang/crates/cloud/api/src/lib.rs b/arc-lang/crates/cloud/api/src/lib.rs new file mode 100644 index 000000000..6dbf9a416 --- /dev/null +++ b/arc-lang/crates/cloud/api/src/lib.rs @@ -0,0 +1,139 @@ +use halfbrown::HashMap; +use indexmap::IndexMap; +use std::collections::BTreeSet; +use std::net::IpAddr; +use std::net::SocketAddr; +use std::sync::Arc; + +use serde::Deserialize; +use serde::Serialize; + +/// Messages that can be sent to a worker. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub enum WorkerAPI { + /// Execute a program on the worker. + Execute { + name: Arc, + binary: Arc>, + }, + /// Shutdown the worker. + Shutdown, +} + +/// Messages that can be sent to a coordinator. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub enum CoordinatorAPI { + /// Register a new worker. + RegisterWorker { arch: Architecture }, + /// Register a new client. + RegisterClient, + /// Post a new query. + Query { source: String, config: Query }, + /// Shutdown the coordinator (and consequently the whole system). + Shutdown, +} + +/// Messages that can be sent to a client. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub enum ClientAPI { + /// Request to execute query. + Query { source: String }, + /// Result of the query. + QueryResponse { data: String }, +} + +/// Responses that can be sent to an interpreter. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub enum InterpreterAPI { + /// Begin interpreting file. + InterpretFile { path: String }, + /// Result of a query. + QueryResponse { data: String }, +} + +/// Requests that can be sent to a runtime. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub enum RuntimeAPI { + /// Shutdown the runtime. + Shutdown, +} + +#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] +pub struct ClientId(pub u32); + +/// The config of a query +#[derive(Clone, Copy, Debug, Deserialize, Serialize)] +pub struct Query { + pub parallelism: usize, + pub state_backend: StateBackend, +} + +/// The state backend to use for a query. +#[derive(Clone, Copy, Debug, Deserialize, Serialize)] +pub enum StateBackend { + Sled, + TiKV, +} + +/// The config of a worker, created by the coordinator. +pub struct Worker { + pub id: WorkerId, + pub arch: Architecture, + pub available_cpus: BTreeSet, + pub available_ports: BTreeSet, + pub ip: IpAddr, +} + +pub struct Cluster { + pub workers: HashMap, + pub broker: SocketAddr, +} + +#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] +pub struct WorkerId(pub u32); + +/// Architecture of a machine. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct Architecture { + pub target_triple: String, + pub num_cpus: usize, +} + +/// A dataflow graph. +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct Graph { + pub nodes: IndexMap, +} + +/// Possible nodes in the dataflow graph. +#[derive(Clone, Debug, Serialize, Deserialize)] +pub enum Node { + Filter { + input: String, // Input stream variable name + fun: String, // Predicate function name + }, + Map { + input: String, // Input stream variable name + fun: String, // Mapping function name + }, + Source { + key_type: String, // Key type name + data_type: String, // Data type name + topic: String, // Kafka topic + }, + Sink { + input: String, // Input stream variable name + topic: String, // Kafka topic + }, + Group { + input: String, // Input stream + fun: String, // Key extractor + }, + Union { + input0: String, // Input stream 0 variable name + input1: String, // Input stream 1 variable name + }, + Window { + input: String, // Input stream variable name + }, +} diff --git a/arc-lang/crates/cloud/client/Cargo.toml b/arc-lang/crates/cloud/client/Cargo.toml new file mode 100644 index 000000000..88d0dc197 --- /dev/null +++ b/arc-lang/crates/cloud/client/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "client" +version = "0.0.0" +edition = "2021" + +[dependencies] +io = { path = "../io" } +api = { path = "../api" } +axum = { version = "0.6.3" } +clap = { version = "4.1.3", features = ["derive"] } +futures = { version = "0.3.25" } +serde = { version = "1.0.152", features = ["derive"] } +tokio = { version = "1.24.2", features = ["full"] } +tokio-futures = { version = "0.0.0" } +tokio-serde = { version = "0.8.0", features = ["json"] } +tokio-stream = { version = "0.1.11" } +tokio-util = { version = "0.7.4", features = ["full"] } +tracing = { version = "0.1.37" } +tracing-subscriber = { version = "0.3.16" } +reqwest = { version = "0.11.14", features = ["json"] } +serde_json = { version = "1.0.91" } +which = { version = "4.4.0" } diff --git a/arc-lang/crates/cloud/client/src/coordinator_connector.rs b/arc-lang/crates/cloud/client/src/coordinator_connector.rs new file mode 100644 index 000000000..e30a99416 --- /dev/null +++ b/arc-lang/crates/cloud/client/src/coordinator_connector.rs @@ -0,0 +1,68 @@ +use std::net::SocketAddr; + +use api::ClientAPI; +use api::CoordinatorAPI; +use futures::SinkExt; +use tokio::net::TcpStream; +use tokio_serde::formats::Json; +use tokio_serde::Framed; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; +use tokio_util::codec::LengthDelimitedCodec; +use io::tcp; + +use crate::coordinator_rx::CoordinatorRx; +use crate::coordinator_tx::CoordinatorTx; + +use super::server::Server; + +struct Actor { + addr: SocketAddr, + server: Server, +} + +impl Actor { + fn new(addr: SocketAddr, server: Server) -> Self { + Self { addr, server } + } + + async fn run(mut self) { + tracing::info!("Connecting to {}", self.addr); + loop { + match TcpStream::connect(self.addr).await { + Ok(msg) => { + self.handle(msg).await; + break; + } + Err(err) => { + tracing::error!("Connection failed: {}", err); + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; + } + } + } + } + + async fn handle(&mut self, stream: TcpStream) { + let (rx, tx) = stream.into_split(); + let rx = FramedRead::new(rx, LengthDelimitedCodec::new()); + let rx: tcp::Rx = Framed::new(rx, Json::default()); + let tx = FramedWrite::new(tx, LengthDelimitedCodec::new()); + let mut tx: tcp::Tx = Framed::new(tx, Json::default()); + tx.send(CoordinatorAPI::RegisterClient) + .await + .expect("Failed to send register message"); + tracing::info!("Handshake successful"); + + self.server.connect(CoordinatorTx::start(tx)).await; + CoordinatorRx::start(rx, self.server.clone()); + } +} + +pub struct CoordinatorConnector; + +impl CoordinatorConnector { + pub fn start(addr: SocketAddr, server: Server) -> Self { + tokio::spawn(Actor::new(addr, server).run()); + Self + } +} diff --git a/arc-lang/crates/cloud/client/src/coordinator_rx.rs b/arc-lang/crates/cloud/client/src/coordinator_rx.rs new file mode 100644 index 000000000..3b269497d --- /dev/null +++ b/arc-lang/crates/cloud/client/src/coordinator_rx.rs @@ -0,0 +1,41 @@ +use api::ClientAPI; +use io::tcp; +use tokio_stream::StreamExt; + +use crate::server::Server; + +struct Actor { + mailbox: tcp::Rx, + server: Server, +} + +impl Actor { + fn new(mailbox: tcp::Rx, server: Server) -> Self { + Self { mailbox, server } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.next().await { + match msg { + Ok(msg) => self.handle(msg).await, + Err(err) => println!("Error: {}", err), + } + } + } + + async fn handle(&mut self, msg: ClientAPI) { + match msg { + ClientAPI::Query { source: _ } => unreachable!(), + ClientAPI::QueryResponse { data } => self.server.query_response(data).await, + } + } +} + +pub struct CoordinatorRx; + +impl CoordinatorRx { + pub fn start(rx: tcp::Rx, server: Server) -> Self { + tokio::spawn(Actor::new(rx, server).run()); + Self + } +} diff --git a/arc-lang/crates/cloud/client/src/coordinator_tx.rs b/arc-lang/crates/cloud/client/src/coordinator_tx.rs new file mode 100644 index 000000000..9b7d7411e --- /dev/null +++ b/arc-lang/crates/cloud/client/src/coordinator_tx.rs @@ -0,0 +1,45 @@ +use futures::SinkExt; +use api::CoordinatorAPI; +use io::tcp; +use tokio::sync::mpsc; + +struct Actor { + mailbox: mpsc::Receiver, + tx: tcp::Tx, +} + +#[allow(unused)] +enum Message { + Cast(CoordinatorAPI), +} + +impl Actor { + fn new(mailbox: mpsc::Receiver, tx: tcp::Tx) -> Self { + Self { mailbox, tx } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.recv().await { + self.handle(msg).await; + } + } + + async fn handle(&mut self, msg: Message) { + match msg { + Message::Cast(msg) => { + self.tx.send(msg).await.expect("failed sending message"); + } + } + } +} + +#[derive(Clone, Debug)] +pub struct CoordinatorTx(mpsc::Sender); + +impl CoordinatorTx { + pub fn start(tx_tcp: tcp::Tx) -> Self { + let (tx, rx) = mpsc::channel(10); + tokio::spawn(Actor::new(rx, tx_tcp).run()); + Self(tx) + } +} diff --git a/arc-lang/crates/cloud/client/src/driver_rx.rs b/arc-lang/crates/cloud/client/src/driver_rx.rs new file mode 100644 index 000000000..d51668381 --- /dev/null +++ b/arc-lang/crates/cloud/client/src/driver_rx.rs @@ -0,0 +1,41 @@ +use futures::StreamExt; +use api::ClientAPI; +use io::term; + +use crate::server::Server; + +struct Actor { + mailbox: term::Rx, + server: Server, +} + +impl Actor { + fn new(mailbox: term::Rx, server: Server) -> Self { + Self { mailbox, server } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.next().await { + match msg { + Ok(msg) => self.handle(msg).await, + Err(_) => todo!(), + } + } + } + + async fn handle(&mut self, msg: ClientAPI) { + match msg { + ClientAPI::Query { source } => self.server.query(source).await, + ClientAPI::QueryResponse { .. } => unreachable!(), + } + } +} + +pub struct DriverRx; + +impl DriverRx { + pub fn start(rx: term::Rx, server: Server) -> Self { + tokio::spawn(Actor::new(rx, server).run()); + Self + } +} diff --git a/arc-lang/crates/cloud/client/src/driver_tx.rs b/arc-lang/crates/cloud/client/src/driver_tx.rs new file mode 100644 index 000000000..58b0145f5 --- /dev/null +++ b/arc-lang/crates/cloud/client/src/driver_tx.rs @@ -0,0 +1,53 @@ +use futures::SinkExt; +use api::InterpreterAPI; +use io::term; +use tokio::sync::mpsc; + +struct Actor { + mailbox: mpsc::Receiver, + tx: term::Tx, +} + +#[allow(unused)] +#[derive(Debug)] +enum Message { + Cast(InterpreterAPI), +} + +impl Actor { + fn new(mailbox: mpsc::Receiver, tx: term::Tx) -> Self { + Self { mailbox, tx } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.recv().await { + self.handle(msg).await; + } + } + + async fn handle(&mut self, msg: Message) { + match msg { + Message::Cast(msg) => { + self.tx.send(msg).await.expect("Failed to send message"); + } + } + } +} + +#[derive(Clone, Debug)] +pub struct DriverTx(mpsc::Sender); + +impl DriverTx { + pub fn start(tx_tcp: term::Tx) -> Self { + let (tx, rx) = mpsc::channel(8); + tokio::spawn(Actor::new(rx, tx_tcp).run()); + Self(tx) + } + + pub async fn query_response(&self, data: String) { + self.0 + .send(Message::Cast(InterpreterAPI::QueryResponse { data })) + .await + .expect("Failed to send message"); + } +} diff --git a/arc-lang/crates/cloud/client/src/main.rs b/arc-lang/crates/cloud/client/src/main.rs new file mode 100644 index 000000000..1ade08709 --- /dev/null +++ b/arc-lang/crates/cloud/client/src/main.rs @@ -0,0 +1,29 @@ +use std::net::SocketAddr; +use std::path::PathBuf; + +use clap::Parser; +use io::config::DEFAULT_COORDINATOR_TCP_ADDR; +use io::socket::parse_addr; +use server::Server; + +mod coordinator_connector; +pub mod coordinator_rx; +pub mod coordinator_tx; +pub mod driver_rx; +pub mod driver_tx; +mod server; + +#[derive(Parser)] +pub struct Args { + #[clap(short, long, value_parser = parse_addr, default_value = DEFAULT_COORDINATOR_TCP_ADDR)] + coordinator: SocketAddr, + + #[clap(short, long)] + file: PathBuf, +} + +#[tokio::main] +async fn main() { + io::tracing::init(); + Server::new(Args::parse()).await; +} diff --git a/arc-lang/crates/cloud/client/src/rest.rs b/arc-lang/crates/cloud/client/src/rest.rs new file mode 100644 index 000000000..8522ee5c2 --- /dev/null +++ b/arc-lang/crates/cloud/client/src/rest.rs @@ -0,0 +1,34 @@ +#![allow(unused)] + +use shared::api::CoordinatorAPI; +use shared::api::QueryConfig; +use shared::api::RestAPI; +use shared::api::StateBackend; + +async fn rest_call(parallelism: usize, source: String) { + let client = reqwest::Client::new(); + let res = client + .post(format!( + "https://{}/api", + shared::config::DEFAULT_COORDINATOR_REST_ADDR + )) + .json(&CoordinatorAPI::Query { + source, + config: QueryConfig { + parallelism, + state_backend: StateBackend::Sled, + }, + }) + .send() + .await + .expect("Failed to send request"); + match res.status() { + reqwest::StatusCode::OK => match res.json::().await { + Ok(ClientAPI::QueryResponse { data }) => println!("{}", data), + Err(e) => eprintln!("Failed to parse response: {}", e), + }, + _ => { + println!("Error: {}", res.status()); + } + } +} diff --git a/arc-lang/crates/cloud/client/src/server.rs b/arc-lang/crates/cloud/client/src/server.rs new file mode 100644 index 000000000..c64310fd1 --- /dev/null +++ b/arc-lang/crates/cloud/client/src/server.rs @@ -0,0 +1,100 @@ +#![allow(unused)] + +use crate::coordinator_connector::CoordinatorConnector; +use crate::coordinator_tx::CoordinatorTx; +use crate::driver_rx::DriverRx; +use crate::driver_tx::DriverTx; +use crate::Args; +use tokio::process::Command; +use tokio::sync::mpsc::Receiver; +use tokio::sync::mpsc::Sender; +use tokio_serde::formats::Json; +use tokio_serde::Framed; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; +use tokio_util::codec::LengthDelimitedCodec; + +struct Actor { + mailbox: Receiver, + tx: Option, + server: Server, + args: Args, +} + +#[derive(Debug)] +enum Message { + Query { source: String }, + QueryResponse { data: String }, + Connect { tx: CoordinatorTx }, + Execute { source: String }, + Shutdown, +} + +#[derive(Clone)] +pub struct Server(Sender); + +impl Actor { + fn new(mailbox: Receiver, server: Server, args: Args) -> Self { + Self { + mailbox, + tx: None, + server, + args, + } + } + + async fn run(mut self) { + CoordinatorConnector::start(self.args.coordinator, self.server.clone()); + + todo!() + // let tx = DriverSender::start(tx); + // DriverReceiver::start(rx, self.server.clone()); + // + // while let Some(msg) = self.mailbox.recv().await { + // self.handle(msg); + // } + } + + fn handle(&mut self, msg: Message) { + match msg { + Message::Query { source } => { + println!("Query: {}", source); + } + Message::Shutdown => { + println!("Shutdown"); + } + Message::Connect { tx } => todo!(), + Message::Execute { source } => todo!(), + Message::QueryResponse { data } => todo!(), + } + } +} + +impl Server { + pub async fn new(args: Args) { + let (tx, rx) = tokio::sync::mpsc::channel(100); + let server = Self(tx); + tokio::spawn(Actor::new(rx, server, args).run()) + .await + .expect("Failed to spawn"); + } + + pub async fn connect(&self, tx: CoordinatorTx) { + self.0.send(Message::Connect { tx }).await.unwrap(); + } + + pub async fn query(&self, source: String) { + self.0 + .send(Message::Execute { source }) + .await + .expect("failed to forward"); + } + + pub async fn shutdown(&self) { + self.0.send(Message::Shutdown).await.unwrap(); + } + + pub(crate) async fn query_response(&self, data: String) { + self.0.send(Message::QueryResponse { data }).await.unwrap(); + } +} diff --git a/arc-lang/crates/cloud/coordinator/Cargo.lock b/arc-lang/crates/cloud/coordinator/Cargo.lock new file mode 100644 index 000000000..27bbf162f --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/Cargo.lock @@ -0,0 +1,1190 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "async-trait" +version = "0.1.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6e93155431f3931513b243d371981bb2770112b370c82745a1d19d2f99364" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08b108ad2665fa3f6e6a517c3d80ec3e77d224c47d605167aefaa5d7ef97fa48" +dependencies = [ + "async-trait", + "axum-core", + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-http", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b8558f5a0581152dc94dcd289132a1d377494bdeafcd41869b3258e3e2ad92" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bytes" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" + +[[package]] +name = "cc" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "clap" +version = "4.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d63b9e9c07271b9957ad22c173bae2a4d9a81127680962039296abcd2f8251d" +dependencies = [ + "bitflags", + "clap_derive", + "clap_lex", + "is-terminal", + "once_cell", + "strsim", + "termcolor", +] + +[[package]] +name = "clap_derive" +version = "4.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "coordinator" +version = "0.1.0" +dependencies = [ + "axum", + "clap", + "futures", + "serde", + "tokio", + "tokio-futures", + "tokio-serde", + "tokio-stream", + "tokio-util", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "educe" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0188e3c3ba8df5753894d54461f0e39bc91741dc5b22e1c46999ec2c71f4e4" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bb1df8b45ecb7ffa78dca1c17a438fb193eb083db0b1b494d2a61bcb5096a" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "rustc_version", + "syn", +] + +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-executor" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "is-terminal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927609f78c2913a6f6ac3c27a4fe87f43e2a35367c0c4b0f8265e8f49a104330" +dependencies = [ + "hermit-abi 0.2.6", + "io-lifetimes", + "rustix", + "windows-sys", +] + +[[package]] +name = "itoa" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.138" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" + +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "matchit" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "mio" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +dependencies = [ + "hermit-abi 0.1.19", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" + +[[package]] +name = "os_str_bytes" +version = "6.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "pin-project" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustversion" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" + +[[package]] +name = "serde" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e326c9ec8042f1b5da33252c8a37e9ffbd2c9bef0155215b6e6c80c790e05f91" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42a3df25b0713732468deadad63ab9da1f1fd75a48a15024b50363f128db627e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "184c643044780f7ceb59104cef98a5a6f12cb2288a7bc701ab93a362b49fd47d" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "socket2" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tokio" +version = "1.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-futures" +version = "0.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5c8ea7f4c1ea9cdb9fb03cba1522c23e9fb97eb1518c92b952093f93f86cd" + +[[package]] +name = "tokio-macros" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bytes", + "educe", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-stream" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "futures-util", + "hashbrown", + "pin-project-lite", + "slab", + "tokio", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "unicode-ident" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" diff --git a/arc-lang/crates/cloud/coordinator/Cargo.toml b/arc-lang/crates/cloud/coordinator/Cargo.toml new file mode 100644 index 000000000..f7095c955 --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "coordinator" +version = "0.0.0" +edition = "2021" + +[dependencies] +io = { path = "../io" } +api = { path = "../api" } +query-compiler = { path = "../query-compiler" } +axum = { version = "0.6.3" } +clap = { version = "4.1.3", features = ["derive"] } +futures = { version = "0.3.25" } +serde = { version = "1.0.152", features = ["derive"] } +tokio = { version = "1.24.2", features = ["full"] } +tokio-futures = { version = "0.0.0" } +tokio-serde = { version = "0.8.0", features = ["json"] } +tokio-stream = { version = "0.1.11" } +tokio-util = { version = "0.7.4", features = ["full"] } +raw-cpuid = { version = "10.6.0", features = ["serde"] } +halfbrown = { version = "0.1.18", features = ["serde"] } +which = { version = "4.4.0" } +serde_json = { version = "1.0.91", features = ["preserve_order"] } +rustls = { version = "0.20.8" } +tokio-rustls = { version = "0.23.4" } +rustls-pemfile = { version = "1.0.2" } +tracing = { version = "0.1.37" } + +[build-dependencies] +which = "4.4.0" diff --git a/arc-lang/crates/cloud/coordinator/build.rs b/arc-lang/crates/cloud/coordinator/build.rs new file mode 100644 index 000000000..334079bf3 --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/build.rs @@ -0,0 +1,38 @@ +use std::io::BufRead; +use std::path::Path; +use std::process::exit; +use std::process::Command; +use std::process::Stdio; + +fn main() {} + +#[allow(unused)] +fn build_mlir() { + if std::env::var("ARC_MLIR_CMD").is_ok() { + return; + } else if let Ok(path) = which::which("arc-mlir") { + println!("cargo:rustc-env=ARC_MLIR_CMD={}", path.display()); + } else { + let out_dir = std::env::var("OUT_DIR").unwrap(); + let arc_mlir_cmd = Path::new(&out_dir).join("arc-mlir/llvm-build/bin/arc-mlir"); + if !arc_mlir_cmd.exists() { + which::which("cmake").expect("dune not found in PATH"); + let mut child = Command::new("../../build") + .env("ARC_MLIR_BUILD", Path::new(&out_dir).join("arc-mlir")) + .stderr(Stdio::piped()) + .spawn() + .expect("CMake failed"); + if std::env::var("ARC_COORDINATOR_DEBUG").is_ok() { + println!("cargo:warning=Building Arc-MLIR ..."); + for line in std::io::BufReader::new(child.stderr.as_mut().unwrap()).lines() { + println!("cargo:warning={}", line.unwrap()); + } + } + let status = child.wait().expect("CMake failed"); + if !status.success() { + exit(status.code().expect("CMake was terminated")); + } + } + println!("cargo:rustc-env=ARC_MLIR_CMD={}", arc_mlir_cmd.display()); + } +} diff --git a/arc-lang/crates/cloud/coordinator/src/client_listener.rs b/arc-lang/crates/cloud/coordinator/src/client_listener.rs new file mode 100644 index 000000000..0bbf615c5 --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/client_listener.rs @@ -0,0 +1,69 @@ +// use api::CoordinatorAPI; +use std::net::SocketAddr; +use tokio::net::TcpListener; +use tokio::net::TcpStream; +// use tokio_serde::formats::Json; +// use tokio_serde::Framed; +// use tokio_stream::StreamExt; +// use tokio_util::codec::FramedRead; +// use tokio_util::codec::FramedWrite; +// use tokio_util::codec::LengthDelimitedCodec; + +// use crate::client_tx::ClientTx; +use api::ClientId; + +use crate::server::Server; +// use crate::worker_rx::WorkerRx; + +struct Actor { + port: u16, + server: Server, + id: ClientId, +} + +impl Actor { + fn new(port: u16, server: Server) -> Self { + Self { + port, + server, + id: ClientId(0), + } + } + + async fn run(mut self) { + let addr = SocketAddr::from(([0, 0, 0, 0], self.port)); + // let acceptor = tls_acceptor().expect("Failed to create TLS acceptor"); + let rx = TcpListener::bind(&addr).await.expect("Failed to bind"); + tracing::info!("Listening for clients on {}", addr); + loop { + match rx.accept().await { + Ok((stream, addr)) => self.handle(stream, addr).await, + Err(err) => println!("Error: {}", err), + } + } + } + + async fn handle(&mut self, _stream: TcpStream, _addr: SocketAddr) { + let _id = self.id; + self.id.0 += 1; + let _server = self.server.clone(); + tokio::spawn(async move { + todo!() + // let (rx, tx) = stream.into_split(); + // let rx = FramedRead::new(rx, LengthDelimitedCodec::new()); + // let mut rx = Framed::new(rx, Json::default()); + // let tx = FramedWrite::new(tx, LengthDelimitedCodec::new()); + // let tx = Framed::new(tx, Json::default()); + // server.register_client(id, addr.ip(), ClientTx::start(tx)); + // ClientRx::start(rx, id, server); + }); + } +} + +pub struct ClientListener; + +impl ClientListener { + pub fn start(port: u16, server: Server) { + tokio::spawn(Actor::new(port, server).run()); + } +} diff --git a/arc-lang/crates/cloud/coordinator/src/client_rx.rs b/arc-lang/crates/cloud/coordinator/src/client_rx.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/client_rx.rs @@ -0,0 +1 @@ + diff --git a/arc-lang/crates/cloud/coordinator/src/client_tx.rs b/arc-lang/crates/cloud/coordinator/src/client_tx.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/client_tx.rs @@ -0,0 +1 @@ + diff --git a/arc-lang/crates/cloud/coordinator/src/main.rs b/arc-lang/crates/cloud/coordinator/src/main.rs new file mode 100644 index 000000000..1c5b2e77b --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/main.rs @@ -0,0 +1,45 @@ +// #![feature(arbitrary_self_types)] + +pub mod client_listener; +pub mod client_rx; +pub mod client_tx; +pub mod rest_listener; +pub mod server; +pub mod tls; +pub mod worker_listener; +pub mod worker_rx; +pub mod worker_tx; + +use clap::Parser; +use io::config::DEFAULT_COORDAINTOR_REST_PORT; +use io::config::DEFAULT_COORDINATOR_BROKER_ADDR; +use io::config::DEFAULT_COORDINATOR_TCP_PORT; +use io::socket::parse_addr; +use server::Server; +use std::net::SocketAddr; +use std::path::PathBuf; + +#[derive(Parser, Debug)] +pub struct Args { + #[clap(short, long, default_value_t = DEFAULT_COORDINATOR_TCP_PORT)] + tcp_listener_port: u16, + + #[clap(short, long, default_value_t = DEFAULT_COORDAINTOR_REST_PORT)] + rest_listener_port: u16, + + #[clap(short, long, value_parser = parse_addr, default_value = DEFAULT_COORDINATOR_BROKER_ADDR)] + broker: SocketAddr, + + #[clap(long)] + certificate: Option, + + #[clap(long)] + key: Option, +} + +#[tokio::main(flavor = "current_thread")] +async fn main() { + // which::which("arc-mlir").expect("arc-mlir not found in PATH"); + io::tracing::init(); + Server::start(Args::parse()).await; +} diff --git a/arc-lang/crates/cloud/coordinator/src/rest_listener.rs b/arc-lang/crates/cloud/coordinator/src/rest_listener.rs new file mode 100644 index 000000000..280635dfc --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/rest_listener.rs @@ -0,0 +1,49 @@ +use crate::server::Server; +use api::CoordinatorAPI; +use axum::extract::State; +use axum::http::StatusCode; +use axum::response::IntoResponse; +use axum::routing::post; +use axum::Json; +use axum::Router; +use std::net::SocketAddr; + +#[derive(Clone)] +struct Actor { + server: Server, +} + +impl Actor { + pub fn new(server: Server) -> Self { + Self { server } + } + + async fn handle(actor: State, Json(msg): Json) -> impl IntoResponse { + match msg { + CoordinatorAPI::Shutdown => { + actor.server.shutdown().await; + StatusCode::OK.into_response() + } + _ => StatusCode::BAD_REQUEST.into_response(), + } + } +} + +pub struct RestListener; + +impl RestListener { + pub fn start(port: u16, server: Server) { + tokio::spawn(async move { + let router = Router::new() + .route("/", post(Actor::handle)) + .with_state(Actor::new(server)); + + tracing::info!("Listening for clients on {}", port); + + axum::Server::bind(&SocketAddr::from(([127, 0, 0, 1], port))) + .serve(router.into_make_service()) + .await + .unwrap(); + }); + } +} diff --git a/arc-lang/crates/cloud/coordinator/src/server.rs b/arc-lang/crates/cloud/coordinator/src/server.rs new file mode 100644 index 000000000..6557c2514 --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/server.rs @@ -0,0 +1,196 @@ +use api::Architecture; +use api::ClientId; +use api::Cluster; +use api::Query; +use api::Worker; +use api::WorkerId; +use halfbrown::HashMap; +use std::fmt::Debug; +use std::net::IpAddr; +use std::sync::Arc; +use tokio::sync::mpsc; +use tokio::sync::mpsc::Receiver; +use tokio::sync::mpsc::Sender; +use tokio::sync::oneshot; + +use crate::rest_listener::RestListener; +use crate::worker_listener::TcpListener; +use crate::worker_tx::WorkerTx; +use crate::Args; + +struct Actor { + mailbox: Receiver, + worker_txs: HashMap, + cluster: Cluster, + args: Args, + server: Server, + query_counter: usize, +} + +// pub fn dummy_worker(target_triple: &str, num_cores: usize) -> Worker { +// Worker { +// id: WorkerId(0), +// arch: Architecture { +// target_triple: target_triple.to_owned(), +// num_cpus: num_cores, +// }, +// available_cpus: (0..num_cores).into_iter().collect(), +// available_ports: (8000..9000).into_iter().collect(), +// ip: IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), +// } +// } + +#[derive(Clone)] +pub struct Server(Sender); + +#[derive(Debug)] +enum Message { + RegisterWorker { + id: WorkerId, + ip: IpAddr, + arch: Architecture, + tx: WorkerTx, + }, + UnregisterWorker { + id: WorkerId, + }, + #[allow(unused)] + BatchQuery { + source: String, + query: Query, + tx: oneshot::Sender, + }, + StreamQuery { + source: String, + query: Query, + }, + Shutdown, +} + +impl Actor { + fn new(mailbox: Receiver, server: Server, args: Args) -> Self { + Self { + mailbox, + worker_txs: HashMap::new(), + cluster: Cluster { + workers: HashMap::new(), + broker: args.broker, + }, + args, + server, + query_counter: 0, + } + } + + async fn run(mut self) { + TcpListener::start(self.args.tcp_listener_port, self.server.clone()); + RestListener::start(self.args.tcp_listener_port, self.server.clone()); + while let Some(msg) = self.mailbox.recv().await { + self.handle(msg); + } + } + + fn handle(&mut self, msg: Message) { + match msg { + Message::RegisterWorker { id, ip, arch, tx } => { + let worker = Worker { + id, + ip, + available_cpus: (0..arch.num_cpus).into_iter().collect(), + available_ports: (8000..9000).into_iter().collect(), + arch, + }; + self.worker_txs.insert(id, tx); + self.cluster.workers.insert(id, worker); + } + Message::UnregisterWorker { id } => { + self.worker_txs.remove(&id); + self.cluster.workers.remove(&id); + } + Message::BatchQuery { .. } => todo!(), + Message::StreamQuery { source, query } => { + let id = self.query_counter; + self.query_counter += 1; + tokio::runtime::Runtime::new() + .expect("Failed to create tokio runtime") + .block_on(self.stream_query(id, &source, query)) + } + Message::Shutdown => todo!(), + } + } + + pub async fn stream_query(&mut self, id: usize, source: &str, query: Query) { + let name = Arc::new(format!("package{id}")); + let graph = query_compiler::compile(&name, source, query, &mut self.cluster); + for (worker_ids, binary_path) in graph.deployment { + let binary = Arc::new(std::fs::read(binary_path).expect("Failed to read binary")); + for worker_id in worker_ids { + let worker = self.worker_txs.get(&worker_id).unwrap(); + worker.execute(name.clone(), binary.clone()).await; + } + } + } +} + +impl Server { + pub async fn start(args: Args) { + let (tx, rx) = mpsc::channel(100); + tokio::spawn(Actor::new(rx, Self(tx), args).run()) + .await + .expect("Failed to spawn actor"); + } + + pub async fn unregister_worker(&self, id: WorkerId) { + self.0 + .send(Message::UnregisterWorker { id }) + .await + .expect("Failed to send"); + } + + pub async fn register_worker( + &self, + id: WorkerId, + ip: IpAddr, + arch: Architecture, + tx: WorkerTx, + ) { + self.0 + .send(Message::RegisterWorker { id, ip, arch, tx }) + .await + .expect("Failed to send"); + } + + pub async fn batch_query(&self, source: String, config: Query) -> String { + let (tx, rx) = oneshot::channel(); + self.0 + .send(Message::BatchQuery { + source, + query: config, + tx, + }) + .await + .expect("Failed to send"); + rx.await.expect("Server is dead") + } + + pub async fn stream_query(&self, source: String, config: Query) { + self.0 + .send(Message::StreamQuery { + source, + query: config, + }) + .await + .expect("Failed to send"); + } + + pub async fn shutdown(&self) { + self.0 + .send(Message::Shutdown) + .await + .expect("Failed to forward"); + } + + pub async fn register_client(&self, _id: ClientId, _ip: IpAddr) { + todo!() + } +} diff --git a/arc-lang/crates/cloud/coordinator/src/tls.rs b/arc-lang/crates/cloud/coordinator/src/tls.rs new file mode 100644 index 000000000..b12ad5e15 --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/tls.rs @@ -0,0 +1,69 @@ +#![allow(unused)] + +use rustls::Certificate; +use rustls::PrivateKey; +use std::fs::File; +use std::io::BufReader; +use std::path::Path; +use std::sync::Arc; +use tokio::io; +use tokio::io::split; +use tokio::io::ReadHalf; +use tokio::io::WriteHalf; +use tokio::net::TcpStream; +use tokio_rustls::server::TlsStream; +use tokio_rustls::TlsAcceptor; +use tokio_serde::formats::Json; +use tokio_serde::Framed; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; +use tokio_util::codec::LengthDelimitedCodec; +use api::CoordinatorAPI; + +use api::WorkerAPI; + +pub type TlsReceiver = + Framed>, LengthDelimitedCodec>, T, T, Json>; + +pub type TlsSender = + Framed>, LengthDelimitedCodec>, T, T, Json>; + +pub async fn tls_stream( + acceptor: TlsAcceptor, + stream: TcpStream, +) -> (TlsReceiver, TlsSender) { + let mut stream = acceptor + .accept(stream) + .await + .expect("Failed to accept TLS stream"); + let (rx, tx) = split(stream); + let rx = FramedRead::new(rx, LengthDelimitedCodec::new()); + let rx = Framed::new(rx, Json::default()); + let tx = FramedWrite::new(tx, LengthDelimitedCodec::new()); + let tx = Framed::new(tx, Json::default()); + (rx, tx) +} + +fn tls_acceptor() -> Result { + let certs = load_certs(Path::new("todo"))?; + let mut keys = load_keys(Path::new("todo"))?; + + rustls::ServerConfig::builder() + .with_safe_defaults() + .with_no_client_auth() + .with_single_cert(certs, keys.remove(0)) + .map(|config| TlsAcceptor::from(Arc::new(config))) + .map_err(|err| io::Error::new(io::ErrorKind::InvalidInput, err)) +} + +fn load_certs(path: &Path) -> io::Result> { + rustls_pemfile::certs(&mut BufReader::new(File::open(path)?)) + .map_err(|_| io::Error::new(io::ErrorKind::InvalidInput, "invalid cert")) + .map(|mut certs| certs.drain(..).map(Certificate).collect()) +} + +fn load_keys(path: &Path) -> io::Result> { + rustls_pemfile::rsa_private_keys(&mut BufReader::new(File::open(path)?)) + .map_err(|_| io::Error::new(io::ErrorKind::InvalidInput, "invalid key")) + .map(|mut keys| keys.drain(..).map(PrivateKey).collect()) +} diff --git a/arc-lang/crates/cloud/coordinator/src/worker_listener.rs b/arc-lang/crates/cloud/coordinator/src/worker_listener.rs new file mode 100644 index 000000000..c96203e51 --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/worker_listener.rs @@ -0,0 +1,74 @@ +use crate::server::Server; +use crate::worker_rx::WorkerRx; +use crate::worker_tx::WorkerTx; +use api::CoordinatorAPI; +use api::WorkerAPI; +use api::WorkerId; +use io::tcp; +use std::net::SocketAddr; +use tokio::net::TcpStream; +use tokio_serde::formats::Json; +use tokio_serde::Framed; +use tokio_stream::StreamExt; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; +use tokio_util::codec::LengthDelimitedCodec; + +struct Actor { + port: u16, + server: Server, + id: WorkerId, +} + +impl Actor { + fn new(port: u16, server: Server) -> Self { + Self { + port, + server, + id: WorkerId(0), + } + } + + async fn run(mut self) { + let addr = SocketAddr::from(([0, 0, 0, 0], self.port)); + // let acceptor = tls_acceptor().expect("Failed to create TLS acceptor"); + let rx = tokio::net::TcpListener::bind(&addr) + .await + .expect("Failed to bind"); + tracing::info!("Listening for workers on {}", addr); + loop { + match rx.accept().await { + Ok((stream, addr)) => self.handle(stream, addr).await, + Err(err) => println!("Error: {}", err), + } + } + } + + async fn handle(&mut self, stream: TcpStream, addr: SocketAddr) { + let id = self.id; + self.id.0 += 1; + let server = self.server.clone(); + tokio::spawn(async move { + let (rx, tx) = stream.into_split(); + let rx = FramedRead::new(rx, LengthDelimitedCodec::new()); + let mut rx: tcp::Rx = Framed::new(rx, Json::default()); + let tx = FramedWrite::new(tx, LengthDelimitedCodec::new()); + let tx: tcp::Tx = Framed::new(tx, Json::default()); + if let Some(Ok(CoordinatorAPI::RegisterWorker { arch })) = rx.next().await { + tracing::info!("Handshake successful"); + server + .register_worker(id, addr.ip(), arch, WorkerTx::start(tx)) + .await; + WorkerRx::start(rx, id, server); + } + }); + } +} + +pub struct TcpListener; + +impl TcpListener { + pub fn start(port: u16, server: Server) { + tokio::spawn(Actor::new(port, server).run()); + } +} diff --git a/arc-lang/crates/cloud/coordinator/src/worker_rx.rs b/arc-lang/crates/cloud/coordinator/src/worker_rx.rs new file mode 100644 index 000000000..a890b1eb5 --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/worker_rx.rs @@ -0,0 +1,53 @@ +use api::CoordinatorAPI; +use io::tcp; +use tokio_stream::StreamExt; + +use api::WorkerId; + +use crate::server::Server; + +#[allow(unused)] +struct Actor { + mailbox: tcp::Rx, + id: WorkerId, + server: Server, +} + +pub struct WorkerRx; + +impl Actor { + fn new(mailbox: tcp::Rx, id: WorkerId, server: Server) -> Self { + Self { + mailbox, + id, + server, + } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.next().await { + match msg { + Ok(msg) => self.handle(msg).await, + Err(err) => { + println!("Error: {}", err); + } + } + } + } + + async fn handle(&mut self, msg: CoordinatorAPI) { + match msg { + CoordinatorAPI::RegisterWorker { .. } => unreachable!(), + CoordinatorAPI::RegisterClient => todo!(), + CoordinatorAPI::Query { .. } => unreachable!(), + CoordinatorAPI::Shutdown => todo!(), + } + } +} + +impl WorkerRx { + pub fn start(rx: tcp::Rx, id: WorkerId, server: Server) -> Self { + tokio::spawn(Actor::new(rx, id, server).run()); + Self + } +} diff --git a/arc-lang/crates/cloud/coordinator/src/worker_tx.rs b/arc-lang/crates/cloud/coordinator/src/worker_tx.rs new file mode 100644 index 000000000..4de16bc6b --- /dev/null +++ b/arc-lang/crates/cloud/coordinator/src/worker_tx.rs @@ -0,0 +1,58 @@ +use futures::SinkExt; +use api::WorkerAPI; +use io::tcp; +use std::sync::Arc; +use tokio::sync::mpsc; + +struct Actor { + mailbox: mpsc::Receiver, + tx: tcp::Tx, +} + +#[derive(Debug)] +enum Message { + Cast(WorkerAPI), +} + +#[derive(Debug, Clone)] +pub struct WorkerTx(mpsc::Sender); + +impl Actor { + fn new(mailbox: mpsc::Receiver, tx: tcp::Tx) -> Self { + Self { mailbox, tx } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.recv().await { + self.handle(msg).await; + } + } + + async fn handle(&mut self, msg: Message) { + match msg { + Message::Cast(msg) => { + self.tx.send(msg).await.unwrap(); + } + } + } +} + +impl WorkerTx { + pub fn start(tx_tcp: tcp::Tx) -> Self { + let (tx, rx) = mpsc::channel(100); + tokio::spawn(Actor::new(rx, tx_tcp).run()); + Self(tx) + } + + pub fn dummy() -> Self { + let (tx, _) = mpsc::channel(100); + Self(tx) + } + + pub async fn execute(&self, name: Arc, binary: Arc>) { + self.0 + .send(Message::Cast(WorkerAPI::Execute { name, binary })) + .await + .expect("Failed to send"); + } +} diff --git a/arc-lang/crates/cloud/io/Cargo.toml b/arc-lang/crates/cloud/io/Cargo.toml new file mode 100644 index 000000000..29800b5ae --- /dev/null +++ b/arc-lang/crates/cloud/io/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "io" +version = "0.0.0" +edition = "2021" + +[dependencies] +const_format = { version = "0.2.30" } +halfbrown = { version = "0.1.18", features = ["serde"] } +raw-cpuid = { version = "10.6.0", features = ["serde"] } +serde = { version = "1.0.152", features = ["derive", "rc"] } +serde_json = { version = "1.0.91", features = ["preserve_order"] } +tokio = { version = "1.24.2", features = ["net", "process"] } +tokio-serde = { version = "0.8.0", features = ["json"] } +tokio-util = { version = "0.7.4", features = ["full"] } +console-subscriber = { version = "0.1.8" } +tracing-subscriber = { version = "0.3.16" } +tracing = { version = "0.1.37" } +indexmap = { version = "1.9.2", features = ["serde"] } diff --git a/arc-lang/crates/cloud/io/src/config.rs b/arc-lang/crates/cloud/io/src/config.rs new file mode 100644 index 000000000..7ee8a53dd --- /dev/null +++ b/arc-lang/crates/cloud/io/src/config.rs @@ -0,0 +1,9 @@ +use const_format::formatcp; + +pub const DEFAULT_COORDINATOR_TCP_PORT: u16 = 8000; +pub const DEFAULT_COORDAINTOR_REST_PORT: u16 = 8001; +pub const DEFAULT_BROKER_PORT: u16 = 9092; + +pub const DEFAULT_COORDINATOR_TCP_ADDR: &str = + formatcp!("localhost:{}", DEFAULT_COORDINATOR_TCP_PORT); +pub const DEFAULT_COORDINATOR_BROKER_ADDR: &str = formatcp!("localhost:{}", DEFAULT_BROKER_PORT); diff --git a/arc-lang/crates/cloud/io/src/lib.rs b/arc-lang/crates/cloud/io/src/lib.rs new file mode 100644 index 000000000..4c46aba5c --- /dev/null +++ b/arc-lang/crates/cloud/io/src/lib.rs @@ -0,0 +1,7 @@ +#![allow(unused)] + +pub mod config; +pub mod term; +pub mod socket; +pub mod tcp; +pub mod tracing; diff --git a/arc-lang/crates/cloud/io/src/socket.rs b/arc-lang/crates/cloud/io/src/socket.rs new file mode 100644 index 000000000..8dbaaee11 --- /dev/null +++ b/arc-lang/crates/cloud/io/src/socket.rs @@ -0,0 +1,7 @@ +use std::net::SocketAddr; +use std::net::ToSocketAddrs; + +pub fn parse_addr(s: &str) -> Result { + s.to_socket_addrs() + .map(|mut addrs| addrs.next().expect("no address")) +} diff --git a/arc-lang/crates/cloud/io/src/tcp.rs b/arc-lang/crates/cloud/io/src/tcp.rs new file mode 100644 index 000000000..3d5a47ab9 --- /dev/null +++ b/arc-lang/crates/cloud/io/src/tcp.rs @@ -0,0 +1,11 @@ +use serde::de::DeserializeOwned; +use tokio::net::tcp::OwnedReadHalf; +use tokio::net::tcp::OwnedWriteHalf; +use tokio_serde::formats::Json; +use tokio_serde::Framed; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; +use tokio_util::codec::LengthDelimitedCodec; + +pub type Rx = Framed, I, I, Json>; +pub type Tx = Framed, O, O, Json>; diff --git a/arc-lang/crates/cloud/io/src/term.rs b/arc-lang/crates/cloud/io/src/term.rs new file mode 100644 index 000000000..c4f1f135c --- /dev/null +++ b/arc-lang/crates/cloud/io/src/term.rs @@ -0,0 +1,10 @@ +use tokio::process::ChildStdin; +use tokio::process::ChildStdout; +use tokio_serde::formats::Json; +use tokio_serde::Framed; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; +use tokio_util::codec::LengthDelimitedCodec; + +pub type Rx = Framed, I, I, Json>; +pub type Tx = Framed, O, O, Json>; diff --git a/arc-lang/crates/cloud/io/src/tracing.rs b/arc-lang/crates/cloud/io/src/tracing.rs new file mode 100644 index 000000000..91a153377 --- /dev/null +++ b/arc-lang/crates/cloud/io/src/tracing.rs @@ -0,0 +1,28 @@ +use std::time::Duration; + +use tracing::log::LevelFilter; +use tracing::Level; +use tracing_subscriber::filter::Directive; +use tracing_subscriber::prelude::*; +use tracing_subscriber::EnvFilter; + +pub fn init() { + // let console_layer = console_subscriber::ConsoleLayer::builder() + // .server_addr(([127, 0, 0, 1], 5555)) + // .spawn(); + + let fmt_layer = tracing_subscriber::fmt::layer() + .compact() + .with_filter(EnvFilter::from_default_env().add_directive(Directive::from(Level::INFO))); + // .with_target(true) + // .with_thread_ids(true) + // .with_line_number(true) + // .with_file(true) + // .with_thread_names(true) + // .with_ansi(true); + + tracing_subscriber::registry() + // .with(console_layer) + .with(fmt_layer) + .init(); +} diff --git a/arc-lang/crates/cloud/query-compiler/Cargo.toml b/arc-lang/crates/cloud/query-compiler/Cargo.toml new file mode 100644 index 000000000..347e2d12e --- /dev/null +++ b/arc-lang/crates/cloud/query-compiler/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "query-compiler" +version = "0.0.0" +edition = "2021" + +[dependencies] +quote = { version = "1.0.23" } +api = { path = "../api" } +crepe = { version = "0.1.7" } +itertools = { version = "0.10.5" } +indoc = { version = "1.0.8" } +proc-macro2 = { version = "1.0.50" } +serde_json = { version = "1.0.91", features = ["preserve_order"] } +halfbrown = { version = "0.1.18", features = ["serde"] } +regex = { version = "1.7.1" } +tracing = { version = "0.1.37" } +rust-format = { version = "0.3.4", features = ["token_stream"] } diff --git a/arc-lang/crates/cloud/query-compiler/src/lib.rs b/arc-lang/crates/cloud/query-compiler/src/lib.rs new file mode 100644 index 000000000..cd1c1a34d --- /dev/null +++ b/arc-lang/crates/cloud/query-compiler/src/lib.rs @@ -0,0 +1,129 @@ +pub mod lowering1; +pub mod lowering2; +pub mod lowering3; +pub mod lowering4; +pub mod lowering5; +pub mod lowering6; +pub mod lowering7; + +use api::Cluster; +use api::Query; + +use self::lowering7::Graph7; + +pub fn compile(name: &str, source: &str, query_config: Query, cluster: &mut Cluster) -> Graph7 { + // Compile MLIR source code to Rust and a dataflow graph. + let graph1 = lowering1::lower(source); + // Compile logical operators into physical operators. + let graph2 = lowering2::lower(graph1); + // Topologically sort nodes. + let graph3 = lowering3::lower(graph2); + // Extract pipelines. + let graph4 = lowering4::lower(graph3); + // Allocate cpus and sockets to pipelines. + let graph5 = lowering5::lower(graph4, cluster, query_config); + // Compile pipelines to source code. + let graph6 = lowering6::lower(graph5, cluster); + // Compile source code to binaries. + let graph7 = lowering7::lower(&name, graph6, cluster); + graph7 +} + +// #[test] +// fn test_compile() { +// use crate::compiler::lowering1::Graph1; +// use crate::compiler::lowering6::Graph6; +// use crate::server::Worker; +// use crate::server::WorkerId; +// use api::Node; +// use api::StateBackend; +// use std::net::ToSocketAddrs; +// fn lower( +// graph1: Graph1, +// query_config: &QueryConfig, +// server_config: &mut ServerConfig, +// ) -> Graph6 { +// // Compile logical operators into physical operators. +// let graph2 = lowering2::lower(graph1); +// // Topologically sort nodes. +// let graph3 = lowering3::lower(graph2); +// // Extract pipelines. +// let graph4 = lowering4::lower(graph3); +// // Allocate cpus and sockets to pipelines. +// let graph5 = lowering5::lower(graph4, server_config, query_config); +// // Compile pipelines to source code. +// let graph6 = lowering6::lower(graph5, server_config); +// graph6 +// } +// lower( +// Graph1 { +// code: quote::quote!( +// fn filter_udf(x: i32) -> bool { +// x > 0 +// } +// fn map_udf(x: i32) -> i32 { +// x + 1 +// } +// fn key_udf(x: i32) -> i32 { +// x % 2 +// } +// ) +// .to_string(), +// nodes: vec![ +// ( +// "x0".to_string(), +// Node::Source { +// key_type: "i32".to_string(), +// data_type: "i32".to_string(), +// topic: "my-topic-1".to_string(), +// }, +// ), +// ( +// "x1".to_string(), +// Node::Filter { +// input: "x0".to_string(), +// fun: "filter_udf".to_string(), +// }, +// ), +// ( +// "x2".to_string(), +// Node::Group { +// input: "x1".to_string(), +// fun: "key_udf".to_string(), +// }, +// ), +// ( +// "x3".to_string(), +// Node::Map { +// input: "x2".to_string(), +// fun: "map_udf".to_string(), +// }, +// ), +// ( +// "x4".to_string(), +// Node::Sink { +// input: "x3".to_string(), +// topic: "my-topic-2".to_string(), +// }, +// ), +// ] +// .into_iter() +// .collect(), +// }, +// &QueryConfig { +// parallelism: 2, +// state_backend: StateBackend::Sled, +// }, +// &mut ServerConfig { +// broker: "localhost:9092".to_socket_addrs().unwrap().next().unwrap(), +// workers: vec![ +// (WorkerId(0), Worker::dummy("aarch64-unknown-linux-gnu", 2)), +// (WorkerId(1), Worker::dummy("aarch64-unknown-linux-gnu", 2)), +// (WorkerId(2), Worker::dummy("aarch64-unknown-linux-gnu", 2)), +// (WorkerId(3), Worker::dummy("aarch64-unknown-linux-gnu", 2)), +// ] +// .into_iter() +// .collect(), +// }, +// ); +// } diff --git a/arc-lang/crates/cloud/query-compiler/src/lowering1.rs b/arc-lang/crates/cloud/query-compiler/src/lowering1.rs new file mode 100644 index 000000000..1ab02b057 --- /dev/null +++ b/arc-lang/crates/cloud/query-compiler/src/lowering1.rs @@ -0,0 +1,133 @@ +use std::io::Write; +use std::process::Command; +use std::process::Stdio; + +use api::Graph; +use api::Node; +use halfbrown::HashMap; +use regex::Regex; + +pub struct Graph1 { + pub code: String, + pub nodes: HashMap, +} + +/// Compile MLIR source code into Rust and extract the dataflow graph. +pub fn lower(source: &str) -> Graph1 { + let mut cmd = Command::new("TODO") //env!("ARC_MLIR_CMD") + .arg("-arc-to-rust") + .arg("-inline-rust") + .stdin(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn() + .expect("Failed to execute process"); + + cmd.stdin + .take() + .as_mut() + .unwrap() + .write_all(source.as_bytes()) + .unwrap(); + + let output = cmd + .wait_with_output() + .expect("Failed to read stdout") + .stdout; + + let code = std::str::from_utf8(&output).unwrap().to_owned(); + let json = extract_json(&code); + let graph = serde_json::from_str::(json).unwrap(); + Graph1 { + code, + nodes: graph.nodes.into_iter().collect(), + } +} + +fn extract_json(rust: &str) -> &str { + let regex = Regex::new( + r"(?xms) # x: Enable insignificant whitespace + # m: Enable multi-line mode + # s: Enable matching \n with . + + ^JSON_START_MARKER$ + + (?P.*) # JSON code + + ^JSON_END_MARKER$ + ", + ) + .unwrap(); + let captures = regex.captures(rust).unwrap(); + captures.name("json").unwrap().as_str() +} + +#[test] +fn test_regex() { + let source = indoc::indoc! { + r#" + fn map(x: i32) -> i32 { + x + 1 + } + /* + JSON_START_MARKER + { "hello": "world" } + JSON_END_MARKER + */ + "#}; + + let json = extract_json(source); + + assert_eq!( + json.split_whitespace().collect::(), + r#"{ "hello": "world" }"#.split_whitespace().collect::() + ); +} + +#[test] +fn test_serde() { + let graph = Graph { + nodes: vec![ + ( + "x0".to_string(), + Node::Source { + key_type: "i32".to_string(), + data_type: "i32".to_string(), + topic: "topic".to_string(), + }, + ), + ( + "x1".to_string(), + Node::Map { + input: "x0".to_string(), + fun: "map".to_string(), + }, + ), + ( + "x2".to_string(), + Node::Sink { + input: "map".to_string(), + topic: "topic".to_string(), + }, + ), + ] + .into_iter() + .collect(), + }; + + let json = serde_json::to_string(&graph).unwrap(); + + assert_eq!( + json.split_whitespace().collect::(), + r#" +{ + "nodes": { + "x0": { "Source": { "key_type": "i32", "data_type": "i32", "topic": "topic", "num_partitions": 1 } }, + "x1": { "Map": { "input": "x0", "fun": "map" } }, + "x2": { "Sink": { "input": "map", "topic": "topic", "fun": "x1" } } + } +} + "# + .split_whitespace() + .collect::() + ) +} diff --git a/arc-lang/crates/cloud/query-compiler/src/lowering2.rs b/arc-lang/crates/cloud/query-compiler/src/lowering2.rs new file mode 100644 index 000000000..46c120e0a --- /dev/null +++ b/arc-lang/crates/cloud/query-compiler/src/lowering2.rs @@ -0,0 +1,156 @@ +use api::Node; +use std::collections::hash_map::Entry; +use std::collections::HashMap; + +use crate::lowering1::Graph1; + +#[derive(Clone, Debug)] +pub struct Graph2 { + pub code: String, + pub nodes: HashMap, +} + +#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, Hash, PartialEq)] +pub struct NodeId(pub u32); + +#[derive(Clone, Debug)] +pub enum Node2 { + Filter { + input: NodeId, + fun: String, + }, + Map { + input: NodeId, + fun: String, + }, + KafkaSource { + key_type: String, + data_type: String, + topic: String, + }, + KafkaSink { + input: NodeId, + topic: String, + }, + ShuffleSink { + input: NodeId, + fun: String, + }, + ShuffleSource { + input: NodeId, + fun: String, + }, + Union { + input0: NodeId, + input1: NodeId, + }, + Window { + input: NodeId, + }, +} + +struct IdIntern { + map: HashMap, + counter: NodeId, +} + +impl IdIntern { + fn new() -> Self { + Self { + map: HashMap::new(), + counter: NodeId(0), + } + } + fn intern(&mut self, name: String) -> NodeId { + match self.map.entry(name) { + Entry::Occupied(v) => *v.get(), + Entry::Vacant(v) => { + let id = self.counter; + v.insert(id); + self.counter.0 += 1; + id + } + } + } + fn create(&mut self) -> NodeId { + let id = self.counter; + self.counter.0 += 1; + id + } +} + +// 1. Split Group into ShuffleSink and ShuffleSource +// 2. Replace symbolic identifiers (String) with numerical ones (NodeId) +// NOTE: We currently assume that the graph is already topologically sorted +pub fn lower(graph: Graph1) -> Graph2 { + let mut nodes = HashMap::new(); + let mut ids = IdIntern::new(); + for (name, node) in graph.nodes.into_iter() { + match node { + Node::Map { input, fun } => { + let id = ids.intern(name); + let input = ids.intern(input); + nodes.insert(id, Node2::Map { input, fun }); + } + Node::Sink { input, topic } => { + let id = ids.intern(name); + let input = ids.intern(input); + nodes.insert(id, Node2::KafkaSink { input, topic }); + } + Node::Union { input0, input1 } => { + let id = ids.intern(name); + let input0 = ids.intern(input0); + let input1 = ids.intern(input1); + nodes.insert(id, Node2::Union { input0, input1 }); + } + Node::Group { input, fun } => { + let source_id = ids.create(); + let sink_id = ids.intern(name); + let input = ids.intern(input); + nodes.insert( + source_id, + Node2::ShuffleSink { + input, + fun: fun.clone(), + }, + ); + nodes.insert( + sink_id, + Node2::ShuffleSource { + input: source_id, + fun, + }, + ); + } + Node::Filter { input, fun } => { + let id = ids.intern(name); + let input = ids.intern(input); + nodes.insert(id, Node2::Filter { input, fun }); + } + Node::Source { + key_type, + data_type, + topic, + } => { + let id = ids.intern(name); + nodes.insert( + id, + Node2::KafkaSource { + key_type, + data_type, + topic, + }, + ); + } + Node::Window { input } => { + let id = ids.intern(name); + let input = ids.intern(input); + nodes.insert(id, Node2::Window { input }); + } + } + } + Graph2 { + code: graph.code, + nodes, + } +} diff --git a/arc-lang/crates/cloud/query-compiler/src/lowering3.rs b/arc-lang/crates/cloud/query-compiler/src/lowering3.rs new file mode 100644 index 000000000..25c8fbe63 --- /dev/null +++ b/arc-lang/crates/cloud/query-compiler/src/lowering3.rs @@ -0,0 +1,114 @@ +use crate::lowering2::Graph2; +use crate::lowering2::Node2; +use crate::lowering2::NodeId; + +use halfbrown::HashMap; + +#[derive(Clone, Debug)] +pub struct Graph3 { + pub code: String, + pub pipelines: HashMap, +} + +#[derive(Clone, Copy, Debug, Ord, PartialOrd, Eq, Hash, PartialEq)] +pub struct PipelineId(pub u32); + +#[derive(Clone, Debug, Default)] +pub struct Pipeline2 { + pub nodes: HashMap, +} + +mod datalog { + + use crate::lowering2::Graph2; + use crate::lowering2::NodeId; + + crepe::crepe! { + @input + struct Edge(NodeId, NodeId); + + @input + struct Node(NodeId, bool); + + struct Reachable(NodeId, NodeId); + + Reachable(x, y) <- Edge(x, y); + Reachable(x, z) <- Reachable(x, y), Edge(y, z); + + struct PipelineBreaker(NodeId); + + PipelineBreaker(x) <- Node(x, true); + + @output + #[derive(Debug, Ord, PartialOrd)] + struct Pipeline(NodeId, NodeId); + + Pipeline(x, x) <- PipelineBreaker(x); + Pipeline(x, y) <- Reachable(x, y), PipelineBreaker(y); + } + + pub fn run(graph1: &Graph2) -> impl Iterator { + let nodes = graph1 + .nodes + .iter() + .map(|(id, node)| Node(*id, node.is_sink())); + + let edges = graph1 + .nodes + .iter() + .flat_map(|(id, node)| node.data_inputs().map(|input| Edge(*input, *id))); + + let mut runtime = Crepe::new(); + runtime.extend(edges); + runtime.extend(nodes); + let (pairs,) = runtime.run(); + pairs.into_iter().map(|Pipeline(x, y)| (x, y)) + } +} + +// 1. Break graph into pipelines +// e.g., source -> filter -> shuffle-sink -> shuffle-source -> map -> sink +// becomes (source -> filter -> shuffle-sink) -> (shuffle-source -> map -> sink) +// NOTE: Currently we assume the graph is linear, +pub(crate) fn lower(mut graph: Graph2) -> Graph3 { + let mut pipelines = HashMap::new(); + for (node_id, NodeId(pipeline_id)) in datalog::run(&graph) { + pipelines + .entry(PipelineId(pipeline_id)) + .or_insert_with(Pipeline2::default) + .nodes + .insert(node_id, graph.nodes.remove(&node_id).unwrap()); + } + Graph3 { + code: graph.code, + pipelines, + } +} + +impl Node2 { + pub fn data_inputs(&self) -> impl Iterator + '_ { + match self { + Node2::Filter { input, .. } => [Some(input), None], + Node2::Map { input, .. } => [Some(input), None], + Node2::KafkaSource { .. } => [None, None], + Node2::KafkaSink { input, .. } => [Some(input), None], + Node2::ShuffleSink { input, .. } => [Some(input), None], + Node2::ShuffleSource { .. } => [None, None], + Node2::Union { input0, input1, .. } => [Some(input0), Some(input1)], + Node2::Window { input } => [Some(input), None], + } + .into_iter() + .flatten() + } + + pub fn is_sink(&self) -> bool { + matches!(self, Node2::KafkaSink { .. } | Node2::ShuffleSink { .. }) + } + + pub fn is_source(&self) -> bool { + matches!( + self, + Node2::KafkaSource { .. } | Node2::ShuffleSource { .. } + ) + } +} diff --git a/arc-lang/crates/cloud/query-compiler/src/lowering4.rs b/arc-lang/crates/cloud/query-compiler/src/lowering4.rs new file mode 100644 index 000000000..60d8ddca4 --- /dev/null +++ b/arc-lang/crates/cloud/query-compiler/src/lowering4.rs @@ -0,0 +1,95 @@ +use std::collections::HashSet; + +use halfbrown::HashMap; + +use crate::lowering2::Node2; +use crate::lowering2::NodeId; +use crate::lowering3::Graph3; +use crate::lowering3::Pipeline2; +use crate::lowering3::PipelineId; + +#[derive(Clone, Debug)] +pub struct Graph4 { + pub code: String, + pub pipelines: HashMap, +} + +#[derive(Clone, Debug)] +pub struct Pipeline3 { + pub nodes: Vec<(NodeId, Node2)>, +} + +pub fn lower(graph: Graph3) -> Graph4 { + let pipelines = graph + .pipelines + .into_iter() + .map(|(id, pipeline)| (id, topological_sort(pipeline))) + .collect(); + Graph4 { + code: graph.code, + pipelines, + } +} + +// Topologically sort the nodes in the pipeline +pub fn topological_sort(mut pipeline: Pipeline2) -> Pipeline3 { + let mut nodes = Vec::new(); + let mut visited = HashSet::new(); + + let mut stack = pipeline + .nodes + .iter() + .filter(|(_, node)| node.is_sink()) + .map(|(id, _)| id) + .copied() + .collect::>(); + + while let Some(id) = stack.pop() { + visited.insert(id); + nodes.push(id); + match pipeline.nodes.get(&id).unwrap() { + Node2::Filter { input, .. } => { + if !visited.contains(input) { + stack.push(*input); + } + } + Node2::Map { input, .. } => { + if !visited.contains(input) { + stack.push(*input); + } + } + Node2::KafkaSource { .. } => {} + Node2::KafkaSink { input, .. } => { + if !visited.contains(input) { + stack.push(*input); + } + } + Node2::ShuffleSink { input, .. } => { + if !visited.contains(input) { + stack.push(*input); + } + } + Node2::ShuffleSource { .. } => {} + Node2::Union { input0, input1 } => { + if !visited.contains(input0) { + stack.push(*input0); + } + if !visited.contains(input0) { + stack.push(*input1); + } + } + Node2::Window { input } => { + if !visited.contains(input) { + stack.push(*input); + } + } + } + } + nodes.reverse(); + Pipeline3 { + nodes: nodes + .into_iter() + .map(|id| (id, pipeline.nodes.remove(&id).unwrap())) + .collect(), + } +} diff --git a/arc-lang/crates/cloud/query-compiler/src/lowering5.rs b/arc-lang/crates/cloud/query-compiler/src/lowering5.rs new file mode 100644 index 000000000..236688da7 --- /dev/null +++ b/arc-lang/crates/cloud/query-compiler/src/lowering5.rs @@ -0,0 +1,96 @@ +use api::Cluster; +use halfbrown::HashMap; +use std::net::IpAddr; +use std::net::SocketAddr; + +use api::Query; +use api::WorkerId; + +use crate::lowering2::Node2; +use crate::lowering2::NodeId; +use crate::lowering3::PipelineId; +use crate::lowering4::Graph4; +use crate::lowering4::Pipeline3; + +#[derive(Debug)] +pub struct Graph5 { + pub code: String, + pub pipelines: HashMap, + pub shards: Vec, + // All sinks need to connect to the same sources. + pub sink_ports: HashMap>, + pub parallelism: usize, +} + +#[derive(Debug)] +pub struct Shard4 { + pub worker_id: WorkerId, + pub pipeline_id: PipelineId, + pub cpu: usize, + pub source_ip: IpAddr, + pub source_ports: HashMap, +} + +/// * Each pipeline is sharded by a parallelism factor, currently specified by the query. +/// * Each shard is mapped to one thread which executes on one CPU. +/// * Multiple threads can be collocated in the same OS-process. +/// * Multiple OS-processes could be collocated on the same worker. +/// * Each machine has one worker and potentially multiple cores. +/// * Each Source and Sink operation needs to be connected to its system (e.g., Kafka). +/// * Each ShuffleSink must open a connection to its respective ShuffleSource operator in the next shard. +pub fn lower(graph: Graph4, cluster: &mut Cluster, query: Query) -> Graph5 { + let mut instances = Vec::new(); + let mut sinks = HashMap::new(); + let mut workers = cluster.workers.iter_mut(); + let (mut worker_id, mut worker) = workers.next().unwrap(); + for (pipeline_id, pipeline) in &graph.pipelines { + // For each physical ShuffleSource we need to allocate one port. + let sources: Vec<_> = pipeline + .nodes + .iter() + .filter_map(|(id, node)| { + if let Node2::ShuffleSource { input, .. } = node { + sinks.insert(*input, Vec::new()); + Some((*id, input)) + } else { + None + } + }) + .collect(); + for _ in 0..query.parallelism { + // Collocate the same pipeline on the same worker if possible. + while worker.available_cpus.is_empty() { + (worker_id, worker) = workers.next().expect("Insufficient cores available"); + } + let cpu = worker.available_cpus.pop_first().unwrap(); + let ports = sources + .iter() + .map(|(id, input)| { + if let Some(port) = worker.available_ports.pop_first() { + sinks + .get_mut(*input) + .unwrap() + .push(SocketAddr::new(worker.ip, port)); + (*id, port) + } else { + panic!("Insufficient ports available"); + } + }) + .collect(); + instances.push(Shard4 { + worker_id: *worker_id, + pipeline_id: *pipeline_id, + source_ip: worker.ip, + cpu, + source_ports: ports, + }); + } + } + Graph5 { + code: graph.code, + sink_ports: sinks, + pipelines: graph.pipelines, + shards: instances, + parallelism: query.parallelism, + } +} diff --git a/arc-lang/crates/cloud/query-compiler/src/lowering6.rs b/arc-lang/crates/cloud/query-compiler/src/lowering6.rs new file mode 100644 index 000000000..0213ec9ed --- /dev/null +++ b/arc-lang/crates/cloud/query-compiler/src/lowering6.rs @@ -0,0 +1,269 @@ +use api::Cluster; +use itertools::multiunzip; +use itertools::Itertools; +use proc_macro2::Ident; +use proc_macro2::Literal; +use proc_macro2::Span; +use proc_macro2::TokenStream; +use quote::quote; +use rust_format::Formatter; + +use api::WorkerId; + +use super::lowering2::Node2; +use super::lowering2::NodeId; +use super::lowering5::Graph5; +use super::lowering5::Shard4; + +#[derive(Debug)] +pub struct Graph6 { + pub code: String, + pub shards: Vec, +} + +pub(crate) fn lower(graph: Graph5, cluster: &Cluster) -> Graph6 { + let (worker_defs, worker_ids): (Vec<_>, Vec<_>) = graph + .shards + .iter() + .group_by(|shard| shard.worker_id) + .into_iter() + .map(|(worker_id, shards)| compile_worker(worker_id, shards, &graph, cluster)) + .unzip(); + let worker_id_strings = worker_ids.iter().map(|i| i.to_string()).collect::>(); + let code: TokenStream = graph.code.parse().unwrap(); + let main = quote! { + use runtime::prelude::*; + + fn main() { + let mut args = std::env::args(); + let _ = args.next(); + let kind = args.next(); + let db = Database::remote("127.0.0.1:2379"); + match kind.unwrap().as_str() { + #( + #worker_id_strings => #worker_ids(db) + ,)* + _ => panic!("Unknown arg, expected instance[N]"), + } + } + + #(#worker_defs)* + + #code + }; + Graph6 { + code: rust_format::RustFmt::default().format_tokens(main).unwrap(), + shards: graph.shards, + } +} + +pub fn compile_worker<'a>( + worker_id: WorkerId, + shards: impl Iterator, + graph: &Graph5, + cluster: &Cluster, +) -> (TokenStream, Ident) { + let worker_id = new_worker_id(worker_id); + let (shard_defs, shard_ids, shard_cpus): (Vec<_>, Vec<_>, Vec<_>) = + multiunzip(shards.map(|s| compile_shard(s, graph, cluster))); + let instance_def = quote! { + fn #worker_id(db: Database) { + Runtime::new()#(.spawn(#shard_ids(db.clone()), #shard_cpus))*; + } + #(#shard_defs)* + }; + (instance_def, worker_id) +} + +pub fn compile_shard( + shard: &Shard4, + graph: &Graph5, + cluster: &Cluster, +) -> (TokenStream, Ident, usize) { + let pipeline = graph.pipelines.get(&shard.pipeline_id).unwrap(); + let mut pre_loop_stmts = Vec::new(); + let mut loop_head_stmts = Vec::new(); + let mut loop_tail_stmts = Vec::new(); + let mut param_ids = Vec::new(); + let mut state_ids = Vec::new(); + let mut source_id = None; + let mut operator_index = 0; + let shard_id = new_shard_id(shard); + let shard_id_string = shard_id.to_string(); + for (id, node) in &pipeline.nodes { + let node_id = new_node_id(id); + match node { + _ if node.is_source() => { + source_id = Some(node_id.clone()); + let init_expr = new(id, node, shard, graph, cluster); + pre_loop_stmts.push(quote!(let mut #node_id = #init_expr;)); + } + _ if node.is_sink() => { + let init_expr = new(id, node, shard, graph, cluster); + let send_expr = send(node, node_id.clone()); + loop_head_stmts.push(quote!(#send_expr;)); + pre_loop_stmts.push(quote!(let mut #node_id = #init_expr;)); + } + _ => { + let node_index = new_index(operator_index); + let param_id = new_param_id(operator_index); + let state_id = new_state_id(operator_index); + let init_expr = new(id, node, shard, graph, cluster); + let process_expr = process(node, node_index.clone()); + param_ids.push(param_id.clone()); + state_ids.push(state_id.clone()); + pre_loop_stmts.push(quote!(let (#param_id, #state_id) = #init_expr;)); + loop_head_stmts.push(quote!(let mut #node_id = #process_expr;)); + loop_tail_stmts.push(quote!(state.#node_index = #node_id.state();)); + operator_index += 1; + } + } + } + loop_tail_stmts.reverse(); + let source_id = source_id.expect("no source node"); + let shard_def = quote! { + async fn #shard_id(db: Database) { + #(#pre_loop_stmts)* + let param = (#(#param_ids,)*); + let mut state = State::new(#shard_id_string, db, (#(#state_ids,)*)); + while let Some((key, mut #source_id)) = #source_id.recv().await { + let mut state = state.get(key); + #(#loop_head_stmts)* + #(#loop_tail_stmts)* + } + } + }; + (shard_def, shard_id, shard.cpu) +} + +fn new( + id: &NodeId, + node: &Node2, + shard: &Shard4, + graph: &Graph5, + cluster: &Cluster, +) -> TokenStream { + match node { + Node2::KafkaSource { + key_type, + data_type, + topic, + } => { + let broker = cluster.broker.to_string(); + let key_type = parse_code(key_type); + let data_type = parse_code(data_type); + quote!(KafkaSource::<#key_type, #data_type>::new(#broker, #topic)) + } + Node2::KafkaSink { topic, .. } => { + let broker = cluster.broker.to_string(); + quote!(KafkaSink::new(#broker, #topic)) + } + Node2::ShuffleSource { fun, .. } => { + let parallellism = graph.parallelism; + let fun = parse_code(fun); + let port = shard.source_ports.get(&id); + quote!(ShuffleSource::new(#port, #parallellism, #fun).await) + } + Node2::ShuffleSink { fun, .. } => { + let fun = parse_code(fun); + let addrs = graph + .sink_ports + .get(id) + .unwrap() + .iter() + .map(|addr| addr.to_string()); + quote!(ShuffleSink::new([#(#addrs),*], #fun).await) + } + Node2::Filter { fun, .. } => { + let fun = parse_code(fun); + quote!(Filter::new(#fun)) + } + Node2::Map { fun, .. } => { + let fun = parse_code(fun); + quote!(Map::new(#fun)) + } + Node2::Union { .. } => { + quote!(Union::new()) + } + Node2::Window { .. } => { + quote!(Window::new()) + } + } +} + +fn process(node: &Node2, node_index: Literal) -> TokenStream { + match node { + Node2::Filter { input, .. } => { + let input = new_node_id(input); + quote!(Filter::process(&mut #input, param.#node_index, state.#node_index)) + } + Node2::Map { input, .. } => { + let input = new_node_id(input); + quote!(Map::process(&mut #input, param.#node_index, state.#node_index)) + } + Node2::Union { input0, input1, .. } => { + let input0 = new_node_id(input0); + let input1 = new_node_id(input1); + quote!(Union::process(&mut #input0, &mut #input1, param.#node_index, state.#node_index)) + } + Node2::Window { input } => { + let input = new_node_id(input); + quote!(Window::process(&mut #input)) + } + Node2::KafkaSource { .. } + | Node2::KafkaSink { .. } + | Node2::ShuffleSource { .. } + | Node2::ShuffleSink { .. } => unreachable!(), + } +} + +fn send(node: &Node2, node_id: Ident) -> TokenStream { + match node { + Node2::ShuffleSink { input, .. } => { + let input = new_node_id(input); + quote!(#node_id.send(&mut #input).await) + } + Node2::KafkaSink { input, .. } => { + let input = new_node_id(input); + quote!(#node_id.send(&mut #input, key).await) + } + Node2::ShuffleSource { .. } + | Node2::Filter { .. } + | Node2::Map { .. } + | Node2::KafkaSource { .. } + | Node2::Union { .. } + | Node2::Window { .. } => unreachable!(), + } +} + +fn new_id(s: &str) -> Ident { + Ident::new(s, Span::call_site()) +} + +fn new_node_id(id: &NodeId) -> Ident { + new_id(&format!("node{}", id.0)) +} + +fn new_param_id(id: usize) -> Ident { + new_id(&format!("param{}", id)) +} + +fn new_state_id(id: usize) -> Ident { + new_id(&format!("state{}", id)) +} + +fn new_index(i: usize) -> Literal { + Literal::usize_unsuffixed(i) +} + +fn parse_code(c: &String) -> TokenStream { + c.parse().unwrap() +} + +fn new_worker_id(id: WorkerId) -> Ident { + new_id(&format!("worker{}", id.0)) +} + +fn new_shard_id(shard: &Shard4) -> Ident { + new_id(&format!("worker{}_shard{}", shard.worker_id.0, shard.cpu)) +} diff --git a/arc-lang/crates/cloud/query-compiler/src/lowering7.rs b/arc-lang/crates/cloud/query-compiler/src/lowering7.rs new file mode 100644 index 000000000..d4a1fa9bb --- /dev/null +++ b/arc-lang/crates/cloud/query-compiler/src/lowering7.rs @@ -0,0 +1,99 @@ +use std::io::BufRead; +use std::io::BufReader; +use std::path::Path; +use std::path::PathBuf; +use std::process::Command; +use std::process::Stdio; + +use api::Cluster; +use itertools::Itertools; + +use crate::lowering6::Graph6; +use api::WorkerId; + +pub struct Graph7 { + pub deployment: Vec<(Vec, PathBuf)>, +} + +const WORKSPACE: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/../workspace"); +const RUNTIME: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/../runtime"); + +pub fn lower(package_name: &str, graph: Graph6, cluster: &mut Cluster) -> Graph7 { + let workspace = Path::new(WORKSPACE); + create_crate(package_name, workspace, &graph); + let target_triples = graph.shards.iter().group_by(|shard| { + &cluster + .workers + .get(&shard.worker_id) + .unwrap() + .arch + .target_triple + }); + let mut deployment = Vec::new(); + for (target_triple, shards) in target_triples.into_iter() { + let path = build_crate(target_triple, package_name, workspace); + let worker_ids = shards.map(|shard| shard.worker_id).collect::>(); + deployment.push((worker_ids, path)); + } + Graph7 { deployment } +} + +fn create_crate(package_name: &str, workspace: &Path, graph: &Graph6) { + let workspace_toml = workspace.join("Cargo.toml"); + let crates = workspace.join("crates"); + let package = crates.join(package_name); + let package_toml = package.join("Cargo.toml"); + let src = package.join("src"); + let main = src.join("main.rs"); + std::fs::create_dir_all(src).expect("Failed to create src directory"); + std::fs::write( + &workspace_toml, + indoc::indoc!( + r#" + [workspace] + members = [ "crates/*" ] + "# + ), + ) + .expect("Unable to write file"); + std::fs::write(&main, &graph.code).expect("Unable to write file"); + std::fs::write( + &package_toml, + indoc::formatdoc!( + r#" + [package] + name = "{package_name}" + version = "0.0.0" + edition = "2021" + + [dependencies] + runtime = {{ path = "{RUNTIME}" }} + "#, + ), + ) + .expect("Unable to write file"); +} + +fn build_crate(target_triple: &str, package_name: &str, workspace: &Path) -> PathBuf { + let mut cmd = Command::new("cargo") + .arg("build") + .arg("--package") + .arg(package_name) + .arg("--target") + .arg(target_triple) + .arg("--release") + .current_dir(workspace) + .stderr(Stdio::piped()) + .spawn() + .expect("Failed to execute process"); + let mut stderr = BufReader::new(cmd.stderr.as_mut().unwrap()).lines(); + while let Some(Ok(line)) = stderr.next() { + tracing::info!("{}", line); + } + cmd.wait().expect("Failed to wait on `cross build`"); + workspace + .join("target") + .join(target_triple) + .join("release") + .join(package_name) +} diff --git a/arc-lang/crates/cloud/worker/Cargo.toml b/arc-lang/crates/cloud/worker/Cargo.toml new file mode 100644 index 000000000..858d9aa90 --- /dev/null +++ b/arc-lang/crates/cloud/worker/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "worker" +version = "0.0.0" +edition = "2021" + +[dependencies] +io = { path = "../io" } +api = { path = "../api" } +axum = { version = "0.6.3" } +clap = { version = "4.1.3", features = ["derive"] } +futures = { version = "0.3.25" } +serde = { version = "1.0.152", features = ["derive"] } +tokio = { version = "1.24.2", features = ["full"] } +tokio-futures = { version = "0.0.0" } +tokio-serde = { version = "0.8.0", features = ["json"] } +tokio-stream = { version = "0.1.11" } +tokio-util = { version = "0.7.4", features = ["full"] } +tracing = { version = "0.1.37" } +raw-cpuid = { version = "10.6.0", features = ["serde"] } +num_cpus = { version = "1.15.0" } diff --git a/arc-lang/crates/cloud/worker/build.rs b/arc-lang/crates/cloud/worker/build.rs new file mode 100644 index 000000000..3a52fcaef --- /dev/null +++ b/arc-lang/crates/cloud/worker/build.rs @@ -0,0 +1,9 @@ +fn main() { + if std::env::var("IGNORE_WORKER_BUILD_SCRIPT").is_ok() { + return; + } + println!( + "cargo:rustc-env=TARGET={}", + std::env::var("TARGET").unwrap() + ); +} diff --git a/arc-lang/crates/cloud/worker/src/coordinator_connector.rs b/arc-lang/crates/cloud/worker/src/coordinator_connector.rs new file mode 100644 index 000000000..31aeb7856 --- /dev/null +++ b/arc-lang/crates/cloud/worker/src/coordinator_connector.rs @@ -0,0 +1,74 @@ +use std::net::SocketAddr; + +use api::Architecture; +use api::CoordinatorAPI; +use api::WorkerAPI; +use futures::SinkExt; +use io::tcp; +use tokio::net::TcpStream; +use tokio_serde::formats::Json; +use tokio_serde::Framed; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; +use tokio_util::codec::LengthDelimitedCodec; + +use crate::coordinator_rx::CoordinatorRx; +use crate::coordinator_tx::CoordinatorTx; + +use super::server::Server; + +struct Actor { + addr: SocketAddr, + server: Server, +} + +impl Actor { + fn new(addr: SocketAddr, server: Server) -> Self { + Self { addr, server } + } + + async fn run(mut self) { + tracing::info!("Connecting to {}", self.addr); + loop { + match TcpStream::connect(self.addr).await { + Ok(msg) => { + self.handle(msg).await; + break; + } + Err(err) => { + tracing::error!("Connection failed: {}", err); + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; + } + } + } + } + + async fn handle(&mut self, stream: TcpStream) { + let (rx, tx) = stream.into_split(); + let rx = FramedRead::new(rx, LengthDelimitedCodec::new()); + let rx: tcp::Rx = Framed::new(rx, Json::default()); + let tx = FramedWrite::new(tx, LengthDelimitedCodec::new()); + let mut tx: tcp::Tx = Framed::new(tx, Json::default()); + tx.send(CoordinatorAPI::RegisterWorker { + arch: Architecture { + target_triple: crate::TARGET.to_string(), + num_cpus: num_cpus::get(), + }, + }) + .await + .expect("Failed to send register message"); + tracing::info!("Handshake successful"); + + self.server.connect(CoordinatorTx::start(tx)).await; + CoordinatorRx::start(rx, self.server.clone()); + } +} + +pub struct CoordinatorConnector; + +impl CoordinatorConnector { + pub fn start(addr: SocketAddr, server: Server) -> Self { + tokio::spawn(Actor::new(addr, server).run()); + Self + } +} diff --git a/arc-lang/crates/cloud/worker/src/coordinator_rx.rs b/arc-lang/crates/cloud/worker/src/coordinator_rx.rs new file mode 100644 index 000000000..5f02d2a53 --- /dev/null +++ b/arc-lang/crates/cloud/worker/src/coordinator_rx.rs @@ -0,0 +1,49 @@ +use api::WorkerAPI; +use io::tcp; +use std::sync::Arc; +use tokio_stream::StreamExt; + +use crate::server::Server; + +struct Actor { + mailbox: tcp::Rx, + server: Server, +} + +impl Actor { + fn new(mailbox: tcp::Rx, server: Server) -> Self { + Self { mailbox, server } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.next().await { + match msg { + Ok(msg) => self.handle(msg).await, + Err(err) => println!("Error: {}", err), + } + } + } + + async fn handle(&mut self, msg: WorkerAPI) { + match msg { + WorkerAPI::Execute { name, binary } => { + self.server + .execute( + Arc::try_unwrap(name).unwrap(), + Arc::try_unwrap(binary).unwrap(), + ) + .await + } + WorkerAPI::Shutdown => self.server.shutdown().await, + } + } +} + +pub struct CoordinatorRx; + +impl CoordinatorRx { + pub fn start(rx: tcp::Rx, server: Server) -> Self { + tokio::spawn(Actor::new(rx, server).run()); + Self + } +} diff --git a/arc-lang/crates/cloud/worker/src/coordinator_tx.rs b/arc-lang/crates/cloud/worker/src/coordinator_tx.rs new file mode 100644 index 000000000..9b7d7411e --- /dev/null +++ b/arc-lang/crates/cloud/worker/src/coordinator_tx.rs @@ -0,0 +1,45 @@ +use futures::SinkExt; +use api::CoordinatorAPI; +use io::tcp; +use tokio::sync::mpsc; + +struct Actor { + mailbox: mpsc::Receiver, + tx: tcp::Tx, +} + +#[allow(unused)] +enum Message { + Cast(CoordinatorAPI), +} + +impl Actor { + fn new(mailbox: mpsc::Receiver, tx: tcp::Tx) -> Self { + Self { mailbox, tx } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.recv().await { + self.handle(msg).await; + } + } + + async fn handle(&mut self, msg: Message) { + match msg { + Message::Cast(msg) => { + self.tx.send(msg).await.expect("failed sending message"); + } + } + } +} + +#[derive(Clone, Debug)] +pub struct CoordinatorTx(mpsc::Sender); + +impl CoordinatorTx { + pub fn start(tx_tcp: tcp::Tx) -> Self { + let (tx, rx) = mpsc::channel(10); + tokio::spawn(Actor::new(rx, tx_tcp).run()); + Self(tx) + } +} diff --git a/arc-lang/crates/cloud/worker/src/main.rs b/arc-lang/crates/cloud/worker/src/main.rs new file mode 100644 index 000000000..0603461d4 --- /dev/null +++ b/arc-lang/crates/cloud/worker/src/main.rs @@ -0,0 +1,30 @@ +// #![feature(arc_unwrap_or_clone)] +// #![allow(unused)] + +mod coordinator_connector; +mod coordinator_rx; +mod coordinator_tx; +mod runtime_rx; +mod runtime_tx; +mod server; + +use clap::Parser; +use io::config::DEFAULT_COORDINATOR_TCP_ADDR; +use io::socket::parse_addr; +use server::Server; +use std::net::SocketAddr; + +#[derive(Parser)] +pub struct Args { + #[clap(short, long, value_parser = parse_addr, default_value = DEFAULT_COORDINATOR_TCP_ADDR)] + coordinator: SocketAddr, +} + +pub const TARGET: &str = env!("TARGET"); + +#[tokio::main(flavor = "current_thread")] +async fn main() { + io::tracing::init(); + tracing::info!("Starting worker on {TARGET}"); + Server::start(Args::parse()).await; +} diff --git a/arc-lang/crates/cloud/worker/src/runtime_rx.rs b/arc-lang/crates/cloud/worker/src/runtime_rx.rs new file mode 100644 index 000000000..2d3f06331 --- /dev/null +++ b/arc-lang/crates/cloud/worker/src/runtime_rx.rs @@ -0,0 +1,46 @@ +use api::RuntimeAPI; +use futures::StreamExt; +use io::term; + +use crate::server::Server; + +#[allow(unused)] +struct Actor { + mailbox: term::Rx, + id: u64, + server: Server, +} + +impl Actor { + fn new(mailbox: term::Rx, id: u64, server: Server) -> Self { + Self { + mailbox, + id, + server, + } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.next().await { + match msg { + Ok(msg) => self.handle(msg).await, + Err(_) => todo!(), + } + } + } + + async fn handle(&mut self, msg: RuntimeAPI) { + match msg { + RuntimeAPI::Shutdown => {} + } + } +} + +pub struct RuntimeRx; + +impl RuntimeRx { + pub fn start(rx: term::Rx, id: u64, server: Server) -> Self { + tokio::spawn(Actor::new(rx, id, server).run()); + Self + } +} diff --git a/arc-lang/crates/cloud/worker/src/runtime_tx.rs b/arc-lang/crates/cloud/worker/src/runtime_tx.rs new file mode 100644 index 000000000..e796b5a70 --- /dev/null +++ b/arc-lang/crates/cloud/worker/src/runtime_tx.rs @@ -0,0 +1,45 @@ +use api::RuntimeAPI; +use futures::SinkExt; +use io::term; +use tokio::sync::mpsc; + +struct Actor { + mailbox: mpsc::Receiver, + tx: term::Tx, +} + +#[allow(unused)] +enum Message { + Cast(RuntimeAPI), +} + +impl Actor { + fn new(mailbox: mpsc::Receiver, tx: term::Tx) -> Self { + Self { mailbox, tx } + } + + async fn run(mut self) { + while let Some(msg) = self.mailbox.recv().await { + self.handle(msg).await; + } + } + + async fn handle(&mut self, msg: Message) { + match msg { + Message::Cast(msg) => { + self.tx.send(msg).await.expect("Failed to send message"); + } + } + } +} + +#[derive(Clone, Debug)] +pub struct RuntimeTx(mpsc::Sender); + +impl RuntimeTx { + pub fn start(tx_tcp: term::Tx) -> Self { + let (tx, rx) = mpsc::channel(8); + tokio::spawn(Actor::new(rx, tx_tcp).run()); + Self(tx) + } +} diff --git a/arc-lang/crates/cloud/worker/src/server.rs b/arc-lang/crates/cloud/worker/src/server.rs new file mode 100644 index 000000000..c0f42da94 --- /dev/null +++ b/arc-lang/crates/cloud/worker/src/server.rs @@ -0,0 +1,111 @@ +use std::collections::HashMap; +use std::env::temp_dir; +use std::fs::File; +use std::io::Write; +use tokio::process::Command; +use tokio::sync::mpsc; +use tokio_serde::formats::Json; +use tokio_serde::Framed; +use tokio_util::codec::FramedRead; +use tokio_util::codec::FramedWrite; +use tokio_util::codec::LengthDelimitedCodec; + +use crate::coordinator_connector::CoordinatorConnector; +use crate::coordinator_tx::CoordinatorTx; +use crate::runtime_rx::RuntimeRx; +use crate::runtime_tx::RuntimeTx; +use crate::Args; + +struct Actor { + mailbox: mpsc::Receiver, + tx: Option, + txs: HashMap, + server: Server, + args: Args, + id: u64, +} + +#[derive(Clone)] +pub struct Server(mpsc::Sender); + +#[derive(Debug)] +enum Message { + Connect { tx: CoordinatorTx }, + Execute { name: String, binary: Vec }, + Shutdown, +} + +impl Actor { + fn new(mailbox: mpsc::Receiver, server: Server, args: Args) -> Self { + Self { + mailbox, + tx: None, + txs: HashMap::new(), + server, + id: 0, + args, + } + } + + async fn run(mut self) { + CoordinatorConnector::start(self.args.coordinator, self.server.clone()); + while let Some(msg) = self.mailbox.recv().await { + self.handle(msg); + } + } + + fn handle(&mut self, msg: Message) { + match msg { + Message::Connect { tx } => { + self.tx = Some(tx); + } + Message::Execute { name, binary } => { + let path = temp_dir().join("arc-lang").join(name); + + let mut file = File::create(&path).unwrap(); + file.write_all(&binary).unwrap(); + file.flush().unwrap(); + drop(file); + + let mut child = Command::new(path).spawn().expect("Spawning failed"); + + let rx = child.stdout.take().expect("Failed to get stdin"); + let tx = child.stdin.take().expect("Failed to get stdin"); + + let rx = FramedRead::new(rx, LengthDelimitedCodec::new()); + let rx = Framed::new(rx, Json::default()); + let tx = FramedWrite::new(tx, LengthDelimitedCodec::new()); + let tx = Framed::new(tx, Json::default()); + + self.txs.insert(self.id, RuntimeTx::start(tx)); + RuntimeRx::start(rx, self.id, self.server.clone()); + } + Message::Shutdown => self.mailbox.close(), + } + } +} + +impl Server { + pub async fn start(args: Args) { + let (tx, rx) = mpsc::channel(100); + let server = Self(tx); + tokio::spawn(Actor::new(rx, server, args).run()) + .await + .expect("Failed to spawn"); + } + + pub async fn connect(&self, tx: CoordinatorTx) { + self.0.send(Message::Connect { tx }).await.unwrap(); + } + + pub async fn execute(&self, name: String, binary: Vec) { + self.0 + .send(Message::Execute { name, binary }) + .await + .expect("failed to forward"); + } + + pub async fn shutdown(&self) { + self.0.send(Message::Shutdown).await.unwrap(); + } +} diff --git a/arc-lang/crates/colors/Cargo.toml b/arc-lang/crates/colors/Cargo.toml new file mode 100644 index 000000000..d94aa1e04 --- /dev/null +++ b/arc-lang/crates/colors/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "colors" +version.workspace = true +edition.workspace = true +authors.workspace = true +homepage.workspace = true +repository.workspace = true +readme.workspace = true + +[dependencies] +colored.workspace = true diff --git a/arc-lang/crates/colors/src/lib.rs b/arc-lang/crates/colors/src/lib.rs new file mode 100644 index 000000000..22f39e422 --- /dev/null +++ b/arc-lang/crates/colors/src/lib.rs @@ -0,0 +1,26 @@ +use colored::Color; +use colored::Color::TrueColor; + +const fn rgb(r: u8, g: u8, b: u8) -> Color { + Color::TrueColor { r, g, b } +} + +pub fn html(c: Color) -> String { + if let TrueColor { r, g, b } = c { + format!("rgb({},{},{})", r, g, b) + } else { + c.to_fg_str().to_string() + } +} + +pub const KEYWORD_COLOR: Color = rgb(0, 95, 135); +pub const MACRO_COLOR: Color = rgb(95, 135, 0); +pub const VAR_COLOR: Color = rgb(215, 95, 0); +pub const VAL_COLOR: Color = rgb(68, 68, 68); +pub const TYPE_COLOR: Color = rgb(0, 135, 0); +pub const DEF_COLOR: Color = rgb(0, 135, 175); +pub const NUMERIC_COLOR: Color = rgb(215, 95, 0); +pub const STRING_COLOR: Color = rgb(95, 135, 0); +pub const BUILTIN_COLOR: Color = rgb(0, 135, 0); +pub const COMMENT_COLOR: Color = rgb(135, 135, 135); + diff --git a/arc-lang/crates/compiler/Cargo.toml b/arc-lang/crates/compiler/Cargo.toml new file mode 100644 index 000000000..6188ac32b --- /dev/null +++ b/arc-lang/crates/compiler/Cargo.toml @@ -0,0 +1,42 @@ +[package] +name = "compiler" +version.workspace = true +edition.workspace = true + +[dependencies] +im-rc.workspace = true +anyhow.workspace = true + +info.workspace = true +codegen.workspace = true +config.workspace = true +build.workspace = true +diagnostics.workspace = true +ast.workspace = true +hir.workspace = true +rust.workspace = true +mlir.workspace = true +sources.workspace = true + +write-ast.workspace = true +write-hir.workspace = true +write-mlir.workspace = true +write-rust.workspace = true +write-value.workspace = true + +parser.workspace = true +lexer.workspace = true +ast-prelude.workspace = true +ast-to-hir.workspace = true +hir-to-mlir.workspace = true +hir-to-rust.workspace = true +hir-lambda-lift.workspace = true +hir-type-inference.workspace = true +hir-patcomp.workspace = true +hir-monomorphise.workspace = true +hir-reachable.workspace = true +hir-interpreter.workspace = true + +logging.workspace = true + +value.workspace = true diff --git a/arc-lang/crates/compiler/codegen/write-ast/Cargo.toml b/arc-lang/crates/compiler/codegen/write-ast/Cargo.toml new file mode 100644 index 000000000..5ab59ea78 --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-ast/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "write-ast" +version.workspace = true +edition.workspace = true + +[dependencies] +ast.workspace = true +codegen.workspace = true +im-rc.workspace = true +quote.workspace = true +prettyplease.workspace = true +syntect.workspace = true diff --git a/arc-lang/crates/compiler/codegen/write-ast/src/lib.rs b/arc-lang/crates/compiler/codegen/write-ast/src/lib.rs new file mode 100644 index 000000000..5ede8e30e --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-ast/src/lib.rs @@ -0,0 +1,863 @@ +#![allow(unused)] + +use codegen::Context; +use std::io::Result; +use std::io::Write; +use syntect::easy::HighlightLines; +use syntect::highlighting::ThemeSet; +use syntect::parsing::SyntaxSet; +use syntect::util::as_24_bit_terminal_escaped; + +use ast::*; + +use im_rc::Vector; + +pub fn write(ctx: &mut Context, ss: &Vector) -> Result<()> { + ctx.each(ss, write_stmt) +} + +pub fn write_stmt(ctx: &mut Context, s: &Stmt) -> Result<()> { + match &s.kind { + SDef(m, x, gs, ps, t, bs, b) => { + write_meta(ctx, m)?; + ctx.keyword("def")?; + ctx.space()?; + ctx.def(x)?; + write_generics(ctx, gs)?; + write_patterns(ctx, ps)?; + ctx.then(t, |ctx, t| { + ctx.colon()?; + write_type(ctx, t) + })?; + write_bounds(ctx, bs)?; + ctx.space()?; + match b { + BExpr(e) => { + ctx.lit("=")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.lit(";")?; + } + BBlock(b) => { + write_block(ctx, b)?; + } + } + } + SEnum(m, x, gs, bs, xts) => { + write_meta(ctx, m)?; + ctx.keyword("enum")?; + ctx.space()?; + ctx.lit(x)?; + ctx.space()?; + write_generics(ctx, gs)?; + write_bounds(ctx, bs)?; + ctx.brace(|ctx| ctx.indented_comma_seq(xts, write_variant))?; + } + SType(m, x, gs, t) => { + write_meta(ctx, m)?; + ctx.keyword("type")?; + ctx.space()?; + ctx.def(x)?; + ctx.space()?; + ctx.lit("=")?; + ctx.space()?; + write_generics(ctx, gs)?; + write_type(ctx, t)?; + ctx.lit(";")?; + } + SNoop => { + ctx.lit(";")?; + } + SVal(p, e) => { + ctx.keyword("val")?; + ctx.space()?; + write_pat(ctx, p)?; + ctx.space()?; + ctx.lit("=")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.lit(";")?; + } + SVar(p, e) => { + ctx.keyword("var")?; + ctx.space()?; + write_pat(ctx, p)?; + ctx.space()?; + ctx.lit("=")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.lit(";")?; + } + SExpr(e) => { + write_expr(ctx, e)?; + ctx.lit(";")?; + } + SBuiltinDef(m, x, gs, ts, t, bs) => { + // write_meta(ctx, m)?; + ctx.keyword("def")?; + ctx.space()?; + ctx.def(x)?; + write_generics(ctx, gs)?; + ctx.paren(|ctx| ctx.seq(ts, write_type))?; + ctx.then(t, |ctx, t| { + ctx.colon()?; + write_type(ctx, t) + })?; + write_bounds(ctx, bs)?; + ctx.lit(";")?; + } + SBuiltinType(m, x, gs, bs) => { + // write_meta(ctx, m)?; + ctx.keyword("type")?; + ctx.space()?; + ctx.def(x)?; + write_generics(ctx, gs)?; + write_bounds(ctx, bs)?; + ctx.lit(";")?; + } + SBuiltinClass(m, x, gs, bs) => { + write_meta(ctx, m)?; + ctx.keyword("trait")?; + ctx.space()?; + ctx.lit(x)?; + write_generics(ctx, gs)?; + write_bounds(ctx, bs)?; + ctx.lit(";")?; + } + SBuiltinInstance(m, x, gs, bs, t) => { + write_meta(ctx, m)?; + ctx.keyword("impl")?; + ctx.space()?; + ctx.lit(x)?; + write_generics(ctx, gs)?; + write_bounds(ctx, bs)?; + ctx.space()?; + ctx.keyword("for")?; + ctx.space()?; + write_type(ctx, t)?; + ctx.space()?; + ctx.lit(";")?; + } + SInject(lang, code) => { + ctx.comment("---")?; + ctx.lit(lang)?; + ctx.lit(code)?; + } + } + ctx.newline()?; + Ok(()) +} + +pub fn write_variant(ctx: &mut Context, v: &Variant) -> Result<()> { + match v { + VUnit(x) => { + ctx.lit(x)?; + } + VRecord(x, xts) => { + ctx.lit(x)?; + ctx.space()?; + write_type_record(ctx, xts)?; + } + VTuple(x, ts) => { + ctx.lit(x)?; + ctx.paren(|ctx| ctx.seq(ts, write_type))?; + } + } + Ok(()) +} + +pub fn write_type_record(ctx: &mut Context, xts: &Vector<(Name, Type)>) -> Result<()> { + ctx.brace(|ctx| { + ctx.seq(xts, |ctx, (x, t)| { + ctx.lit(x)?; + ctx.lit(":")?; + ctx.space()?; + write_type(ctx, t) + }) + }) +} + +pub fn write_patterns(ctx: &mut Context, ps: &Vector) -> Result<()> { + ctx.paren(|ctx| ctx.seq(ps, |ctx, p| write_pat(ctx, p)))?; + Ok(()) +} + +pub fn write_bounds(ctx: &mut Context, bs: &Vector) -> Result<()> { + if !bs.is_empty() { + ctx.keyword("where")?; + ctx.space()?; + ctx.lit(":")?; + ctx.space()?; + ctx.seq(bs, |ctx, (x, ts)| { + ctx.lit(x)?; + ctx.brack(|ctx| ctx.seq(ts, write_type)) + })?; + } + Ok(()) +} + +pub fn write_generics(ctx: &mut Context, gs: &Vector) -> Result<()> { + if !gs.is_empty() { + ctx.brack(|ctx| ctx.seq(gs, |ctx, x| ctx.ty(x))) + } else { + Ok(()) + } +} + +pub fn write_source(ctx: &mut Context, (p, e): &(Pattern, Expr)) -> Result<()> { + write_pat(ctx, p)?; + ctx.space()?; + ctx.keyword("in")?; + ctx.space()?; + write_expr(ctx, e) +} + +pub fn write_meta(ctx: &mut Context, m: &Meta) -> Result<()> { + if !m.is_empty() { + ctx.lit("@")?; + ctx.brace(|ctx| ctx.seq(m, write_attr))?; + ctx.newline()?; + } + Ok(()) +} + +pub fn write_attr(ctx: &mut Context, a: &Attr) -> Result<()> { + ctx.lit(&a.x)?; + ctx.then(&a.c, |ctx, c| { + ctx.lit(":")?; + write_const(ctx, c) + }) +} + +pub fn write_pat(ctx: &mut Context, p: &Pattern) -> Result<()> { + match p.kind.as_ref() { + PParen(p) => { + ctx.paren(|ctx| write_pat(ctx, p))?; + } + PIgnore => { + ctx.lit("_")?; + } + POr(p0, p1) => { + write_pat(ctx, p0)?; + ctx.space()?; + ctx.keyword("or")?; + ctx.space()?; + write_pat(ctx, p1)?; + } + PTypeAnnot(p, t) => { + write_pat(ctx, p)?; + ctx.lit(":")?; + ctx.space()?; + write_type(ctx, t)?; + } + PRecord(xps) => { + write_pat_record(ctx, xps)?; + } + PRecordConcat(p0, p1) => { + write_pat(ctx, p0)?; + ctx.space()?; + ctx.lit("&")?; + ctx.space()?; + write_pat(ctx, p1)?; + } + PTuple(ps) => { + ctx.paren(|ctx| ctx.seq(ps, write_pat))?; + } + PArray(ps) => { + ctx.brack(|ctx| ctx.seq(ps, write_pat))?; + } + PArrayConcat(p0, p1) => { + write_pat(ctx, p0)?; + ctx.space()?; + ctx.lit("++")?; + ctx.space()?; + write_pat(ctx, p1)?; + } + PConst(c) => { + write_const(ctx, c)?; + } + PName(x) => { + ctx.lit(x)?; + } + PVariantTuple(x, ps) => { + ctx.lit(x)?; + ctx.paren(|ctx| ctx.seq(ps, write_pat))?; + } + PVariantRecord(x, xps) => { + ctx.lit(x)?; + write_pat_record(ctx, xps)?; + } + PError => { + ctx.lit("")?; + } + }; + Ok(()) +} + +pub fn write_pat_record( + ctx: &mut Context, + xps: &Vector<(Name, Option)>, +) -> Result<()> { + ctx.brace(|ctx| { + ctx.seq(xps, |ctx, (x, p)| { + ctx.lit(x)?; + ctx.then(p, |ctx, p| { + ctx.lit(":")?; + ctx.space()?; + write_pat(ctx, p) + }) + }) + }) +} + +pub fn write_const(ctx: &mut Context, c: &Const) -> Result<()> { + match c { + CInt(i) => ctx.fmt(format_args!("{i}")), + CFloat(f) => ctx.fmt(format_args!("{f}")), + CString(s) => ctx.fmt(format_args!(r#""{s}""#)), + CBool(b) => ctx.fmt(format_args!("{b}")), + CUnit => ctx.lit("()"), + CChar(c) => ctx.fmt(format_args!("'{c}'")), + } +} + +pub fn write_lit(ctx: &mut Context, c: &Lit) -> Result<()> { + match c { + LInt(i, s) => { + ctx.fmt(format_args!("{i}"))?; + ctx.then(s, |ctx, s| ctx.lit(s)) + } + LFloat(f, s) => { + ctx.fmt(format_args!("{f}"))?; + ctx.then(s, |ctx, s| ctx.lit(s)) + } + LString(s) => ctx.fmt(format_args!(r#""{s}""#)), + LBool(b) => ctx.fmt(format_args!("{b}")), + LUnit => ctx.lit("()"), + LChar(c) => ctx.fmt(format_args!("'{c}'")), + } +} + +pub fn write_expr(ctx: &mut Context, e: &Expr) -> Result<()> { + match e.kind.as_ref() { + EParen(e) => { + ctx.paren(|ctx| write_expr(ctx, e))?; + } + EQuery(p, e, qs) => { + ctx.keyword("from")?; + ctx.space()?; + write_pat(ctx, p)?; + ctx.space()?; + ctx.keyword("in")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.newline_seq(qs, write_query_stmt)?; + } + ERecordAccess(e, x) => { + write_expr(ctx, e)?; + ctx.lit(".")?; + ctx.lit(x)?; + } + ERecordAccessMulti(e, xs) => { + write_expr(ctx, e)?; + ctx.lit(".")?; + ctx.brace(|ctx| ctx.seq(xs, |ctx, x| ctx.lit(x)))?; + } + ERecordConcat(e0, e1) => { + write_expr(ctx, e0)?; + ctx.space()?; + ctx.lit("&")?; + ctx.space()?; + write_expr(ctx, e1)?; + } + EFunCall(e, es) => { + write_expr(ctx, e)?; + ctx.paren(|ctx| ctx.seq(es, write_expr))?; + } + ETypeAnnot(e, t) => { + write_expr(ctx, e)?; + ctx.lit(":")?; + ctx.space()?; + write_type(ctx, t)?; + } + EIfElse(e, b0, b1) => { + ctx.keyword("if")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.space()?; + write_block(ctx, b0)?; + ctx.then(b1, |ctx, b1| { + ctx.space()?; + ctx.keyword("else")?; + ctx.space()?; + write_block(ctx, b1) + })?; + } + ELit(l) => { + write_lit(ctx, l)?; + } + ELoop(b) => { + ctx.keyword("loop")?; + ctx.space()?; + write_block(ctx, b)?; + } + ERecord(xes) => { + write_expr_record(ctx, xes)?; + } + EVariantRecord(x, xes) => { + ctx.lit(x)?; + ctx.space()?; + write_expr_record(ctx, xes)?; + } + EFunReturn(e) => { + ctx.keyword("return")?; + ctx.then(e, |ctx, e| { + ctx.space()?; + write_expr(ctx, e) + })?; + } + ELoopBreak(e) => { + ctx.keyword("break")?; + ctx.then(e, |ctx, e| { + ctx.space()?; + write_expr(ctx, e) + })?; + } + ELoopContinue => { + ctx.keyword("continue")?; + } + EUnop(op, e) => { + write_unop(ctx, op)?; + write_expr(ctx, e)?; + } + EArray(es) => { + ctx.brack(|ctx| ctx.seq(es, write_expr))?; + } + EArrayConcat(e0, e1) => { + write_expr(ctx, e0)?; + ctx.space()?; + ctx.lit("++")?; + ctx.space()?; + write_expr(ctx, e1)?; + } + EArrayAccess(e, es) => { + write_expr(ctx, e)?; + ctx.brack(|ctx| write_expr(ctx, e))?; + } + EBinop(e0, op, e1) => { + write_expr(ctx, e0)?; + ctx.space()?; + write_binop(ctx, op)?; + ctx.space()?; + write_expr(ctx, e1)?; + } + EMut(e0, op, e1) => { + write_expr(ctx, e0)?; + ctx.then(op, write_binop)?; + ctx.space()?; + ctx.lit("=")?; + ctx.space()?; + write_expr(ctx, e1)?; + } + EDo(b) => { + ctx.keyword("do")?; + ctx.space()?; + write_block(ctx, b)?; + } + EFor(p, e, b) => { + ctx.keyword("for")?; + ctx.space()?; + write_pat(ctx, p)?; + ctx.space()?; + ctx.keyword("in")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.space()?; + write_block(ctx, b)?; + } + EFun(ps, t, b) => { + ctx.keyword("fun")?; + ctx.paren(|ctx| ctx.seq(ps, write_pat))?; + ctx.then(t, |ctx, t| { + ctx.lit(":")?; + ctx.space()?; + write_type(ctx, t) + })?; + ctx.space()?; + match b { + BExpr(e) => { + ctx.lit("=")?; + ctx.space()?; + write_expr(ctx, e)?; + } + BBlock(b) => { + write_block(ctx, b)?; + } + } + } + EMethodCall(e, x, ts, es) => { + write_expr(ctx, e)?; + ctx.lit(".")?; + ctx.lit(x)?; + write_qualified_types(ctx, ts)?; + ctx.paren(|ctx| ctx.seq(es, write_expr))?; + } + EMatch(e, arms) => { + ctx.keyword("match")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.space()?; + ctx.brace(|ctx| write_arms(ctx, arms))?; + } + EName(x, ts) => { + ctx.lit(x)?; + write_qualified_types(ctx, ts)?; + } + ETupleAccess(e, i) => { + write_expr(ctx, e)?; + ctx.lit(".")?; + ctx.fmt(format_args!("{i}"))?; + } + EThrow(e) => { + ctx.keyword("throw")?; + ctx.space()?; + write_expr(ctx, e)?; + } + ETry(b0, arms, b1) => { + ctx.keyword("try")?; + ctx.space()?; + write_block(ctx, b0)?; + write_arms(ctx, arms)?; + ctx.then(b1, |ctx, b1| { + ctx.space()?; + ctx.keyword("finally")?; + ctx.space()?; + write_block(ctx, b1) + })?; + } + ETuple(es) => { + ctx.paren(|ctx| ctx.seq(es, write_expr))?; + } + EWhile(e, b) => { + ctx.keyword("while")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.space()?; + write_block(ctx, b)?; + } + EError => { + ctx.lit("")?; + } + } + Ok(()) +} + +pub fn write_types(ctx: &mut Context, ts: &Vector) -> Result<()> { + if !ts.is_empty() { + ctx.brack(|ctx| ctx.seq(ts, write_type))?; + } + Ok(()) +} + +pub fn write_qualified_types(ctx: &mut Context, ts: &Vector) -> Result<()> { + if !ts.is_empty() { + ctx.lit("::")?; + ctx.brack(|ctx| ctx.seq(ts, write_type))?; + } + Ok(()) +} + +pub fn write_expr_record(ctx: &mut Context, xes: &Vector) -> Result<()> { + ctx.brace(|ctx| { + ctx.seq(xes, |ctx, xe| match xe { + FName(x, e) => { + ctx.lit(x)?; + ctx.then(e, |ctx, e| { + ctx.lit(":")?; + ctx.space()?; + write_expr(ctx, e) + }) + } + FExpr(e, x) => { + write_expr(ctx, e)?; + ctx.lit(".")?; + ctx.lit(x) + } + }) + }) +} + +pub fn write_arms(ctx: &mut Context, arms: &Vector) -> Result<()> { + ctx.indented_comma_seq(arms, |ctx, (p, e)| { + write_pat(ctx, &p)?; + ctx.space()?; + ctx.lit("=>")?; + ctx.space()?; + write_expr(ctx, &e) + }) +} + +pub fn write_query_stmt(ctx: &mut Context, s: &QueryStmt) -> Result<()> { + match s { + QFrom(p, e) => { + ctx.keyword("from")?; + ctx.space()?; + write_pat(ctx, p)?; + ctx.space()?; + ctx.keyword("in")?; + ctx.space()?; + write_expr(ctx, e)?; + } + QWhere(e) => { + ctx.keyword("where")?; + ctx.space()?; + write_expr(ctx, e)?; + } + QWith(p, e) => { + ctx.keyword("with")?; + ctx.space()?; + write_pat(ctx, p)?; + ctx.space()?; + ctx.lit("=")?; + ctx.space()?; + write_expr(ctx, e)?; + } + QJoinOn(p, e0, e1) => { + ctx.keyword("join")?; + ctx.space()?; + write_pat(ctx, p)?; + ctx.space()?; + ctx.keyword("in")?; + ctx.space()?; + write_expr(ctx, e0)?; + ctx.space()?; + ctx.keyword("on")?; + ctx.space()?; + write_expr(ctx, e1)?; + ctx.space()?; + ctx.lit("=")?; + ctx.space()?; + } + QJoinOver(p, e, e0) => { + ctx.keyword("join")?; + ctx.space()?; + write_pat(ctx, p)?; + ctx.space()?; + ctx.keyword("in")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.space()?; + ctx.keyword("over")?; + ctx.space()?; + write_expr(ctx, e0)?; + } + QJoinOverOn(p, e, e0, e1, e2, qs) => { + ctx.keyword("join")?; + ctx.space()?; + write_pat(ctx, p)?; + ctx.space()?; + ctx.keyword("in")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.space()?; + ctx.keyword("over")?; + ctx.space()?; + write_expr(ctx, e0)?; + ctx.space()?; + ctx.keyword("on")?; + ctx.space()?; + write_expr(ctx, e1)?; + ctx.space()?; + ctx.lit("=")?; + ctx.space()?; + write_expr(ctx, e2)?; + ctx.space()?; + ctx.brace(|ctx| ctx.newline_seq(qs, write_query_stmt))?; + } + QGroup(e, qs, x) => { + ctx.keyword("group")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.space()?; + ctx.brace(|ctx| ctx.newline_seq(qs, write_query_stmt))?; + ctx.then(x, |ctx, x| { + ctx.space()?; + ctx.keyword("as")?; + ctx.space()?; + ctx.lit(x) + })?; + } + QCompute(e0, e1, x) => { + ctx.keyword("compute")?; + ctx.space()?; + write_expr(ctx, e0)?; + ctx.then(e1, |ctx, e1| { + ctx.space()?; + ctx.keyword("of")?; + ctx.space()?; + write_expr(ctx, e1) + })?; + ctx.then(x, |ctx, x| { + ctx.space()?; + ctx.keyword("as")?; + ctx.space()?; + ctx.lit(x) + })?; + } + QOver(e, qs, x) => { + ctx.keyword("over")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.space()?; + ctx.brace(|ctx| ctx.newline_seq(qs, write_query_stmt))?; + ctx.then(x, |ctx, x| { + ctx.space()?; + ctx.keyword("as")?; + ctx.space()?; + ctx.lit(x) + })?; + } + QRoll(e0, e1, x) => { + ctx.keyword("roll")?; + ctx.space()?; + write_expr(ctx, e0)?; + ctx.then(e1, |ctx, e1| { + ctx.space()?; + ctx.keyword("of")?; + ctx.space()?; + write_expr(ctx, e1) + })?; + ctx.then(x, |ctx, x| { + ctx.space()?; + ctx.keyword("as")?; + ctx.space()?; + ctx.lit(x) + })?; + } + QSelect(e) => { + ctx.keyword("select")?; + ctx.space()?; + write_expr(ctx, e)?; + } + QUnion(e) => { + ctx.keyword("union")?; + ctx.space()?; + write_expr(ctx, e)?; + } + QInto(e) => { + ctx.keyword("into")?; + ctx.space()?; + write_expr(ctx, e)?; + } + QVal(p, e) => { + write_pat(ctx, p)?; + ctx.space()?; + ctx.space()?; + ctx.lit("=")?; + ctx.space()?; + write_expr(ctx, e)?; + } + QOrder(e, o) => { + ctx.keyword("order")?; + ctx.space()?; + write_expr(ctx, e)?; + ctx.space()?; + write_order(ctx, o)?; + } + } + Ok(()) +} + +pub fn write_order(ctx: &mut Context, o: &Order) -> Result<()> { + match o { + OAsc => {} + ODesc => ctx.keyword("desc")?, + } + Ok(()) +} + +pub fn write_block(ctx: &mut Context, b: &Block) -> Result<()> { + ctx.brace(|ctx| { + ctx.indented(|ctx| { + ctx.newline_seq(&b.ss, write_stmt)?; + ctx.then(&b.e, |ctx, e| { + ctx.newline()?; + write_expr(ctx, e) + }) + })?; + ctx.newline() + })?; + Ok(()) +} + +pub fn write_type(ctx: &mut Context, t: &Type) -> Result<()> { + match t.kind.as_ref() { + TParen(t) => { + ctx.paren(|ctx| write_type(ctx, t))?; + } + TFun(ts, t) => { + ctx.keyword("fun")?; + ctx.paren(|ctx| ctx.seq(ts, write_type))?; + ctx.lit(":")?; + write_type(ctx, t)?; + } + TTuple(ts) => { + ctx.paren(|ctx| ctx.seq(ts, write_type))?; + } + TRecord(xts) => { + write_type_record(ctx, xts)?; + } + TName(x, ts) => { + ctx.ty(x)?; + write_types(ctx, ts)?; + } + TArray(t, n) => { + ctx.brack(|ctx| { + write_type(ctx, t)?; + ctx.then(n, |ctx, n| { + ctx.lit(";")?; + ctx.fmt(format_args!("{n}")) + }) + })?; + } + TUnit => { + ctx.lit("()")?; + } + TNever => { + ctx.lit("!")?; + } + TIgnore => { + ctx.lit("_")?; + } + TError => { + ctx.lit("")?; + } + TRecordConcat(t0, t1) => { + ctx.brack(|ctx| { + write_type(ctx, t0)?; + ctx.space()?; + ctx.lit("&")?; + ctx.space()?; + write_type(ctx, t1) + })?; + } + TArrayConcat(t0, t1) => { + ctx.brack(|ctx| { + write_type(ctx, t0)?; + ctx.space()?; + ctx.lit("++")?; + ctx.space()?; + write_type(ctx, t1) + })?; + } + } + Ok(()) +} + +pub fn write_unop(ctx: &mut Context, op: &Unop) -> Result<()> { + ctx.fmt(format_args!("{}", &op.token)) +} + +pub fn write_binop(ctx: &mut Context, op: &Binop) -> Result<()> { + ctx.fmt(format_args!("{}", &op.token)) +} diff --git a/arc-runtime/examples/remote/Cargo.toml b/arc-lang/crates/compiler/codegen/write-flink/Cargo.toml similarity index 60% rename from arc-runtime/examples/remote/Cargo.toml rename to arc-lang/crates/compiler/codegen/write-flink/Cargo.toml index b294bdb46..6fe273873 100644 --- a/arc-runtime/examples/remote/Cargo.toml +++ b/arc-lang/crates/compiler/codegen/write-flink/Cargo.toml @@ -1,10 +1,8 @@ [package] -name = "remote" +name = "write-flink" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -arc-runtime = { path = "../../" } -lazy_static = { version = "1.4.0" } diff --git a/arc-lang/crates/compiler/codegen/write-flink/src/lib.rs b/arc-lang/crates/compiler/codegen/write-flink/src/lib.rs new file mode 100644 index 000000000..7d12d9af8 --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-flink/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: usize, right: usize) -> usize { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/arc-lang/crates/compiler/codegen/write-hir/Cargo.toml b/arc-lang/crates/compiler/codegen/write-hir/Cargo.toml new file mode 100644 index 000000000..d65b4bacd --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-hir/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "write-hir" +version.workspace = true +edition.workspace = true + +[dependencies] +hir.workspace = true +codegen.workspace = true +im-rc.workspace = true +colors.workspace = true diff --git a/arc-lang/crates/compiler/codegen/write-hir/src/lib.rs b/arc-lang/crates/compiler/codegen/write-hir/src/lib.rs new file mode 100644 index 000000000..016dfce9c --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-hir/src/lib.rs @@ -0,0 +1,543 @@ +#![allow(unused)] + +use codegen::*; +use colors::*; +use std::io::Result; +use std::io::Write; + +use hir::*; + +use im_rc::Vector; + +pub fn write(ctx: &mut Context, ss: &Vector) -> Result<()> { + ctx.each(ss.iter(), write_stmt) +} + +pub fn write_stmt(ctx: &mut Context, s: &Stmt) -> Result<()> { + match &s.kind { + SVal(p, e) => { + if let PVar(x) = p.kind.as_ref() { + ctx.keyword("var ")?; + write_name(ctx, x)?; + } else { + ctx.keyword("val ")?; + write_pattern(ctx, p)?; + } + ctx.lit(" = ")?; + write_expr(ctx, e)?; + ctx.lit(";")?; + ctx.newline()?; + } + SExpr(e) => { + write_expr(ctx, e)?; + ctx.lit(";")?; + ctx.newline()?; + } + SDef(m, x, gs, ps, t, b) => { + write_meta(ctx, &m)?; + ctx.keyword("def ")?; + ctx.colored(x, DEF_COLOR)?; + write_generics(ctx, gs)?; + write_patterns(ctx, ps)?; + ctx.lit(":")?; + write_type(ctx, t)?; + ctx.lit(" ")?; + write_block(ctx, b)?; + ctx.newline()?; + } + SEnum(m, x, gs, vs) => { + write_meta(ctx, &m)?; + ctx.keyword("enum ")?; + ctx.colored(x, TYPE_COLOR)?; + write_generics(ctx, gs)?; + ctx.lit(" ")?; + ctx.brace(|ctx| { + ctx.indented_comma_seq(vs, |ctx, (x, t)| { + write_name(ctx, x)?; + ctx.lit(":")?; + write_type(ctx, t) + }) + })?; + ctx.newline()?; + } + SBif(m, x, gs, ts, t) => { + if ctx.opt.prelude { + write_meta(ctx, &m)?; + ctx.keyword("def ")?; + ctx.colored(x, DEF_COLOR)?; + write_generics(ctx, gs)?; + ctx.paren(|ctx| ctx.seq(ts, write_type))?; + ctx.lit(":")?; + ctx.lit(" ")?; + write_type(ctx, t)?; + ctx.lit(";")?; + ctx.newline()?; + } + } + SBit(m, x, gs) => { + if ctx.opt.prelude { + write_meta(ctx, &m)?; + ctx.keyword("type ")?; + ctx.colored(x, TYPE_COLOR)?; + write_generics(ctx, gs)?; + ctx.lit(";")?; + ctx.newline()?; + } + } + SRecDef(_m, _ds) => todo!(), + SNoop => { + ctx.lit(";")?; + ctx.newline()?; + } + } + Ok(()) +} + +pub fn write_patterns(ctx: &mut Context, ps: &Vector) -> Result<()> { + ctx.paren(|ctx| ctx.seq(ps, write_pattern)) +} + +pub fn write_name(ctx: &mut Context, x: &Name) -> Result<()> { + ctx.lit(x) +} + +pub fn write_generics(ctx: &mut Context, gs: &Vector) -> Result<()> { + if !gs.is_empty() { + ctx.brack(|ctx| ctx.seq(gs, write_name))?; + } + Ok(()) +} + +pub fn write_types(ctx: &mut Context, ts: &Vector) -> Result<()> { + if !ts.is_empty() { + ctx.brack(|ctx| ctx.seq(ts, write_type))?; + } + Ok(()) +} + +pub fn write_qualified_types(ctx: &mut Context, ts: &Vector) -> Result<()> { + if !ts.is_empty() { + ctx.lit("::")?; + ctx.brack(|ctx| ctx.seq(ts, write_type))?; + } + Ok(()) +} + +pub fn write_meta(ctx: &mut Context, d: &Meta) -> Result<()> { + if !d.is_empty() { + ctx.lit("@")?; + ctx.brace(|ctx| { + ctx.seq(d, |ctx, (k, v)| { + write_name(ctx, k)?; + ctx.then(v, |ctx, v| { + ctx.lit(":")?; + write_const(ctx, v) + }) + }) + })?; + ctx.newline()?; + } + Ok(()) +} + +pub fn write_pattern(ctx: &mut Context, p: &Pattern) -> Result<()> { + fn write_pattern(ctx: &mut Context, p: &Pattern) -> Result<()> { + match p.kind.as_ref() { + PIgnore => { + ctx.lit("_")?; + } + POr(p0, p1) => { + write_pattern(ctx, p0)?; + ctx.keyword(" or ")?; + write_pattern(ctx, p1)?; + } + PNoop(p) => { + write_pattern(ctx, p)?; + } + PRecord(xps) => { + ctx.brace(|ctx| { + for (x, p) in xps { + write_name(ctx, x)?; + ctx.lit(":")?; + write_pattern(ctx, p)?; + } + Ok(()) + })?; + } + PArray(ps) => { + ctx.brack(|ctx| { + for p in ps { + write_pattern(ctx, p)?; + } + Ok(()) + })?; + } + PConst(c) => { + write_const(ctx, c)?; + } + PVariant(xs, ts, x, p) => { + write_name(ctx, x)?; + write_qualified_types(ctx, ts)?; + ctx.lit(".")?; + write_name(ctx, x)?; + write_pattern(ctx, p)?; + ctx.paren(|ctx| write_pattern(ctx, p))?; + } + PVar(x) => { + ctx.colored(&x, VAR_COLOR)?; + ctx.lit(":")?; + write_type(ctx, &p.t)?; + } + PVal(x) => { + ctx.colored(&x, VAL_COLOR)?; + ctx.lit(":")?; + write_type(ctx, &p.t)?; + } + PTuple(ps) => { + ctx.paren(|ctx| ctx.seq_trailing(ps, write_pattern))?; + } + PError => { + ctx.lit("")?; + } + PRecordConcat(p0, p1) => { + write_pattern(ctx, p0)?; + ctx.lit(" & ")?; + write_pattern(ctx, p1)?; + } + PArrayConcat(p0, p1) => { + write_pattern(ctx, p0)?; + ctx.lit(" ++ ")?; + write_pattern(ctx, p1)?; + } + }; + Ok(()) + } + if ctx.opt.types { + ctx.paren(|ctx| { + write_pattern(ctx, p)?; + ctx.lit(":")?; + write_type(ctx, &p.t) + }) + } else { + write_pattern(ctx, p) + } +} + +pub fn write_const(ctx: &mut Context, c: &Const) -> Result<()> { + match c { + CInt(c) => ctx.colored(&format!("{c}"), NUMERIC_COLOR), + CFloat(c) => ctx.colored(&format!("{c}"), NUMERIC_COLOR), + CString(c) => { + ctx.colored("\"", STRING_COLOR)?; + ctx.colored(c, STRING_COLOR)?; + ctx.colored("\"", STRING_COLOR) + } + CBool(c) => ctx.bold_colored(&format!("{c}"), BUILTIN_COLOR), + CChar(c) => ctx.colored(&format!("'{c}'"), STRING_COLOR), + CUnit => ctx.lit("()"), + } +} + +pub fn write_expr(ctx: &mut Context, e: &Expr) -> Result<()> { + fn write_expr(ctx: &mut Context, e: &Expr) -> Result<()> { + match e.kind.as_ref() { + EMut(e0, e1) => { + write_expr(ctx, e0)?; + ctx.lit(" = ")?; + write_expr(ctx, e1)?; + } + ELoop(b) => { + ctx.keyword("loop ")?; + write_block(ctx, b)?; + } + ERecord(xes) => { + ctx.brace(|ctx| { + ctx.seq(xes, |ctx, (x, e)| { + write_name(ctx, x)?; + ctx.lit(":")?; + write_expr(ctx, e) + }) + })?; + } + ERecordAccess(e, x) => { + write_expr(ctx, e)?; + ctx.lit(".")?; + write_name(ctx, x)?; + } + ERecordConcat(e0, e1) => { + write_expr(ctx, e0)?; + ctx.lit(" ++ ")?; + write_expr(ctx, e1)?; + } + EFunReturn(e) => { + ctx.keyword("return")?; + ctx.lit(" ")?; + write_expr(ctx, e)?; + } + ELoopBreak(e) => { + ctx.keyword("break")?; + } + ELoopContinue => { + ctx.keyword("continue")?; + } + EMatch(e, arms) => { + ctx.keyword("match ")?; + write_expr(ctx, e)?; + ctx.lit(" ")?; + ctx.brace(|ctx| { + ctx.indented_seq(arms, |ctx, (p, b)| { + write_pattern(ctx, p)?; + ctx.lit(" => ")?; + ctx.keyword("do ")?; + write_block(ctx, b)?; + ctx.lit(",") + }) + })?; + } + EFunCall(e, es) => { + write_expr(ctx, e)?; + ctx.paren(|ctx| ctx.seq(es, write_expr))?; + } + EVariant(x0, ts, x1, e) => { + write_name(ctx, x0)?; + write_qualified_types(ctx, ts)?; + ctx.lit("::")?; + write_name(ctx, x1)?; + ctx.paren(|ctx| write_expr(ctx, e))?; + } + EVariantAccess(x0, ts, x1, e) => { + write_expr(ctx, e)?; + ctx.lit(" as ")?; + write_name(ctx, x0)?; + write_qualified_types(ctx, ts)?; + ctx.lit("::")?; + write_name(ctx, x1)?; + } + EVariantCheck(x0, ts, x, e) => { + write_expr(ctx, e)?; + ctx.lit(" is ")?; + write_name(ctx, x0)?; + write_qualified_types(ctx, ts)?; + ctx.lit("::")?; + write_name(ctx, x)?; + } + EFun(ps, t, b) => { + ctx.keyword("fun")?; + ctx.paren(|ctx| ctx.seq(ps, write_pattern))?; + ctx.lit(":")?; + write_type(ctx, t)?; + ctx.lit(" ")?; + write_block(ctx, b)?; + } + EFunCallDirect(x, ts, es) => { + ctx.colored(x, DEF_COLOR)?; + write_qualified_types(ctx, ts)?; + ctx.paren(|ctx| ctx.seq(es, write_expr))?; + } + EConst(c) => { + write_const(ctx, c)?; + } + EIfElse(e, b0, b1) => { + ctx.keyword("if ")?; + write_expr(ctx, e)?; + ctx.lit(" ")?; + write_block(ctx, b0)?; + ctx.keyword(" else ")?; + write_block(ctx, b1)?; + } + ENoop(e) => { + write_expr(ctx, e)?; + } + EDo(b) => { + ctx.keyword("do ")?; + write_block(ctx, b)?; + } + EArray(es) => { + ctx.brack(|ctx| ctx.seq(es, write_expr))?; + } + EArrayConcat(e0, e1) => { + write_expr(ctx, e0)?; + ctx.lit(" ++ ")?; + write_expr(ctx, e1)?; + } + EArrayAccess(e1, e2) => { + write_expr(ctx, e1)?; + ctx.brack(|ctx| write_expr(ctx, e2))?; + } + EVal(x) => { + ctx.colored(&x, VAL_COLOR)?; + } + EVar(x) => { + ctx.colored(&x, VAR_COLOR)?; + } + EDef(x, ts) => { + ctx.colored(&x, DEF_COLOR)?; + write_qualified_types(ctx, ts)?; + } + ETuple(es) => { + ctx.paren(|ctx| ctx.seq_trailing(es, write_expr))?; + } + ETupleAccess(e, i) => { + write_expr(ctx, e)?; + ctx.lit(".")?; + ctx.fmt(format_args!("{i}"))?; + } + EFor(p, e, b) => { + ctx.keyword("for ")?; + write_pattern(ctx, p)?; + ctx.keyword(" in ")?; + write_expr(ctx, e)?; + ctx.lit(" ")?; + write_block(ctx, b)?; + } + EWhile(e, b) => { + ctx.keyword("while ")?; + write_expr(ctx, e)?; + ctx.lit(" ")?; + write_block(ctx, b)?; + } + EError => { + ctx.lit("")?; + } + } + Ok(()) + } + if ctx.opt.types { + ctx.paren(|ctx| { + write_expr(ctx, e)?; + ctx.lit(":")?; + write_type(ctx, &e.t) + }) + } else { + write_expr(ctx, e) + } +} + +pub fn write_block(ctx: &mut Context, b: &Block) -> Result<()> { + ctx.brace(|ctx| { + ctx.indent(); + ctx.newline(); + for s in &b.ss { + write_stmt(ctx, s)?; + } + write_expr(ctx, &b.e)?; + ctx.dedent(); + ctx.newline() + }) +} + +pub fn write_type(ctx: &mut Context, t: &Type) -> Result<()> { + match t.kind.as_ref() { + TFun(ts, t) => { + ctx.keyword("fun")?; + ctx.paren(|ctx| ctx.seq(ts, write_type))?; + ctx.lit(":")?; + write_type(ctx, t)?; + } + TRecord(t) => { + ctx.brace(|ctx| write_type(ctx, t))?; + } + TRowEmpty => { + ctx.lit("Empty")?; + } + TRowExtend((x, t), r) => { + ctx.lit("Row")?; + ctx.paren(|ctx| { + write_name(ctx, x)?; + ctx.colon()?; + write_type(ctx, t)?; + ctx.comma()?; + write_type(ctx, r) + })?; + } + TRecordConcat(t0, t1) => { + write_type(ctx, t0)?; + ctx.lit(" & ")?; + write_type(ctx, t1)?; + } + TNominal(x, ts) => { + ctx.colored(x, TYPE_COLOR)?; + write_types(ctx, ts)?; + } + TTuple(ts, closed) => { + if *closed { + ctx.paren(|ctx| ctx.seq_trailing(ts, write_type))?; + } else { + ctx.paren(|ctx| { + ctx.seq(ts, write_type)?; + ctx.lit(", ..") + })?; + } + } + TArray(t, n) => { + ctx.brack(|ctx| { + write_type(ctx, t)?; + ctx.lit(";")?; + ctx.then_or( + n, + |ctx, n| ctx.fmt(format_args!("{}", n)), + |ctx| ctx.lit("_"), + ) + })?; + } + TArrayConcat(t0, t1) => { + write_type(ctx, t0)?; + ctx.lit(" ++ ")?; + write_type(ctx, t1)?; + } + TGeneric(x) => { + write_name(ctx, x)?; + } + TVar(x) => { + ctx.lit("'")?; + write_name(ctx, x)?; + } + TAlias(_, _, t) => { + write_type(ctx, t)?; + } + TError => { + ctx.lit("")?; + } + TUnit => { + ctx.lit("()")?; + } + TNever => { + ctx.lit("!")?; + } + } + Ok(()) +} + +pub fn print_type(t: &Type) -> Result<()> { + codegen::Context::stderr().typed().writeln(t, write_type)?; + Ok(()) +} + +pub fn print_pattern(t: &Pattern) -> Result<()> { + codegen::Context::stderr() + .typed() + .writeln(t, write_pattern)?; + Ok(()) +} + +pub fn print_expr(e: &Expr) -> Result<()> { + codegen::Context::stderr().typed().writeln(e, write_expr)?; + Ok(()) +} + +pub fn print_stmt(s: &Stmt) -> Result<()> { + codegen::Context::stderr().typed().writeln(s, write_stmt)?; + Ok(()) +} + +pub fn print_block(b: &Block) -> Result<()> { + codegen::Context::stderr().typed().writeln(b, write_block)?; + Ok(()) +} + +pub fn type_to_string(t: &Type) -> String { + codegen::Context::string() + .write(t, write_type) + .unwrap() + .finish() +} diff --git a/arc-lang/crates/compiler/codegen/write-mlir/Cargo.toml b/arc-lang/crates/compiler/codegen/write-mlir/Cargo.toml new file mode 100644 index 000000000..7eea51fa1 --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-mlir/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "write-mlir" +version.workspace = true +edition.workspace = true + +[dependencies] +mlir.workspace = true +hir-interpreter.workspace = true +utils.workspace = true +stack.workspace = true +info.workspace = true +name-gen.workspace = true +codegen.workspace = true +im-rc.workspace = true +ast-prelude.workspace = true diff --git a/arc-lang/crates/compiler/codegen/write-mlir/src/lib.rs b/arc-lang/crates/compiler/codegen/write-mlir/src/lib.rs new file mode 100644 index 000000000..b332eb587 --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-mlir/src/lib.rs @@ -0,0 +1,353 @@ +#![allow(unused)] +use codegen::Context; +use std::io::Result; +use std::io::Write; + +use mlir::*; + +use im_rc::Vector; + +pub fn write(ctx: &mut Context, is: &Vector) -> Result<()> { + ctx.each_newline(is.iter(), write_item) +} + +pub fn write_module(ctx: &mut Context, is: &Vector) -> Result<()> { + ctx.keyword("module")?; + ctx.space()?; + write_symbol(ctx, "@program")?; + ctx.space()?; + ctx.brace(|ctx| { + ctx.newline()?; + ctx.indent(); + for line in ast_prelude::MLIR_PRELUDE.lines() { + ctx.newline()?; + ctx.lit(line)?; + } + ctx.newline()?; + ctx.each_newline(is.iter(), write_item)?; + ctx.dedent(); + ctx.newline() + }) +} + +pub fn write_item(ctx: &mut Context, i: &Item) -> Result<()> { + match &i.kind { + IDef(x, xvs, t, b) => { + ctx.keyword("func.func")?; + ctx.space()?; + write_symbol(ctx, x)?; + write_params(ctx, xvs)?; + ctx.colon()?; + write_type(ctx, t)?; + ctx.lit(" ")?; + write_block(ctx, b)?; + } + IExternDef(x, xvs, t) => { + ctx.keyword("func.func")?; + ctx.space()?; + ctx.keyword("private")?; + ctx.space()?; + write_symbol(ctx, x)?; + write_params(ctx, xvs)?; + ctx.colon()?; + write_type(ctx, t)?; + } + // IDataflow(d) => todo!(), + IError => unreachable!(), + } + Ok(()) +} + +pub fn write_params(ctx: &mut Context, ps: &Vector) -> Result<()> { + ctx.paren(|ctx| { + ctx.seq(ps, |ctx, v| { + write_val(ctx, v)?; + ctx.colon()?; + write_type(ctx, &v.t) + }) + })?; + Ok(()) +} + +pub fn write_stmt(ctx: &mut Context, s: &Stmt) -> Result<()> { + if !s.vs.is_empty() { + ctx.seq(&s.vs, write_val)?; + ctx.lit(" = ")?; + } + match &s.kind { + SRecord(xvs) => { + ctx.keyword("arc.make_struct")?; + ctx.paren(|ctx| { + ctx.seq(xvs, |ctx, (_, v)| write_val(ctx, v))?; + ctx.colon()?; + ctx.seq(xvs, |ctx, (_, v)| write_typeof(ctx, v))?; + Ok(()) + })?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + SRecordAccess(v, x) => { + ctx.quote(|ctx| ctx.lit("arc.struct_access"))?; + ctx.paren(|ctx| write_val(ctx, v))?; + ctx.brace(|ctx| { + ctx.lit("field")?; + ctx.lit(" = ")?; + ctx.quote(|ctx| ctx.lit(x)) + })?; + ctx.colon()?; + ctx.paren(|ctx| write_type(ctx, &v.t))?; + ctx.lit(" -> ")?; + ctx.seq(&s.vs, write_typeof)?; + } + SWhileBreak(vs) => { + ctx.quote(|ctx| ctx.lit("arc.loop.break"))?; + ctx.paren(|ctx| ctx.seq(vs, write_val))?; + ctx.colon()?; + ctx.paren(|ctx| ctx.seq(vs, write_typeof))?; + ctx.lit(" -> ")?; + ctx.seq(&s.vs, write_typeof)?; + } + SWhileContinue(vs) => { + ctx.quote(|ctx| ctx.lit("arc.loop.continue"))?; + ctx.paren(|ctx| ctx.seq(vs, write_val))?; + ctx.colon()?; + ctx.paren(|ctx| ctx.seq(vs, write_typeof))?; + ctx.lit(" -> ")?; + ctx.seq(&s.vs, write_typeof)?; + } + SWhileYield(vs) => { + ctx.quote(|ctx| ctx.lit("scf.yield"))?; + ctx.paren(|ctx| ctx.seq(vs, write_val))?; + ctx.colon()?; + ctx.paren(|ctx| ctx.seq(vs, write_typeof))?; + ctx.lit(" -> ")?; + ctx.seq(&s.vs, write_typeof)?; + } + SFunCallDirect(x, vs) => { + ctx.lit("call ")?; + write_symbol(ctx, x)?; + ctx.colon()?; + ctx.paren(|ctx| ctx.seq(vs, write_typeof))?; + ctx.lit(" -> ")?; + ctx.seq(&s.vs, write_typeof)?; + } + SFunCallIndirect(v, vs) => { + ctx.lit("call_indirect ")?; + write_val(ctx, v)?; + ctx.paren(|ctx| ctx.seq(vs, write_val))?; + ctx.colon()?; + ctx.paren(|ctx| ctx.seq(vs, write_typeof))?; + ctx.lit(" -> ")?; + ctx.seq(&s.vs, write_typeof)?; + } + SVariant(x, v) => { + ctx.lit("arc.make_enum")?; + ctx.paren(|ctx| write_val(ctx, v))?; + ctx.lit(" as ")?; + ctx.quote(|ctx| ctx.lit(x))?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + SVariantCheck(x, v) => { + ctx.lit("arc.check_enum")?; + ctx.paren(|ctx| write_val(ctx, v))?; + ctx.lit(" in ")?; + ctx.quote(|ctx| ctx.lit(x))?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + SVariantAccess(x, v) => { + ctx.lit("arc.enum_access")?; + ctx.quote(|ctx| ctx.lit(x))?; + ctx.lit(" in ")?; + ctx.paren(|ctx| write_val(ctx, v))?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + SFun(x) => { + ctx.lit("constant ")?; + write_symbol(ctx, x)?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + SConst(c) => match c { + CInt(c) => { + ctx.lit("arc.constant ")?; + ctx.fmt(format_args!("{c}"))?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + CFloat(c) => { + ctx.lit("arith.constant ")?; + ctx.fmt(format_args!("{c}"))?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + CString(c) => { + ctx.lit("arc.adt_constant ")?; + ctx.fmt(format_args!(r#"String::new("{c}")"#))?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + CBool(c) => { + ctx.lit("arith.constant ")?; + ctx.fmt(format_args!("{c}"))?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + CChar(c) => { + ctx.lit("arc.adt_constant ")?; + ctx.fmt(format_args!("'{c}'"))?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + CUnit => { + ctx.lit("arc.make_struct()")?; + ctx.colon()?; + ctx.seq(&s.vs, write_typeof)?; + } + }, + SIfElse(v, b0, b1) => { + ctx.lit("arc.if")?; + ctx.paren(|ctx| write_val(ctx, v))?; + ctx.paren(|ctx| { + write_block(ctx, b0)?; + ctx.lit(",")?; + write_block(ctx, b1) + })?; + ctx.colon()?; + ctx.paren(|ctx| write_type(ctx, &v.t))?; + ctx.lit(" -> ")?; + ctx.seq(&s.vs, write_typeof)?; + } + SFunReturn(v) => { + ctx.lit("return ")?; + write_val(ctx, v)?; + ctx.colon()?; + write_type(ctx, &v.t)?; + } + SBlockResult(v) => { + ctx.quote(|ctx| ctx.lit("arc.block.result"))?; + ctx.paren(|ctx| write_val(ctx, v))?; + ctx.colon()?; + ctx.paren(|ctx| write_type(ctx, &v.t))?; + ctx.lit(" -> ")?; + ctx.seq(&s.vs, write_typeof)?; + } + SWhile(vs0, vs1, b0, b1) => { + ctx.lit("scf.while")?; + ctx.paren(|ctx| { + ctx.seq(vs0.into_iter().zip(vs1), |ctx, (v0, v1)| { + write_val(ctx, v0)?; + ctx.lit(" = ")?; + write_val(ctx, v1) + }) + })?; + ctx.colon()?; + ctx.paren(|ctx| ctx.seq(vs0, write_typeof))?; + ctx.lit(" -> ")?; + ctx.paren(|ctx| ctx.seq(vs1, write_typeof))?; + ctx.brace(|ctx| { + write_block(ctx, b0)?; + ctx.lit(",")?; + write_block(ctx, b1) + })?; + ctx.lit(" do ")?; + ctx.brace(|ctx| { + ctx.lit("bb0^")?; + ctx.paren(|ctx| ctx.seq(vs0, write_val))?; + ctx.indent(); + for s in &b1.ss { + ctx.newline()?; + write_stmt(ctx, s)?; + } + ctx.dedent(); + ctx.newline() + })?; + } + SError => unreachable!(), + } + Ok(()) +} + +pub fn write_block(ctx: &mut Context, b: &Block) -> Result<()> { + ctx.brace(|ctx| { + ctx.indent(); + for s in &b.ss { + ctx.newline()?; + write_stmt(ctx, s)?; + } + ctx.dedent(); + ctx.newline() + }) +} + +pub fn write_type(ctx: &mut Context, t: &Type) -> Result<()> { + match t.kind.as_ref() { + TFun(ts, t) => { + ctx.paren(|ctx| ctx.seq(ts, write_type))?; + ctx.lit(" -> ")?; + write_type(ctx, t)?; + } + TRecord(xts) => { + ctx.lit("!arc.struct")?; + ctx.angle(|ctx| { + ctx.seq(xts, |ctx, (x, t)| { + ctx.lit(x)?; + ctx.lit(": ")?; + write_type(ctx, t) + }) + })?; + } + TNative(x, ts) => { + ctx.lit(x)?; + if !ts.is_empty() { + ctx.angle(|ctx| ctx.seq(ts, write_type))?; + } + } + TEnum(xts) => { + ctx.lit("!arc.enum")?; + ctx.angle(|ctx| { + ctx.seq(xts, |ctx, (x, t)| { + ctx.lit(x)?; + ctx.lit(": ")?; + write_type(ctx, t) + }) + })?; + } + TAdt(x, ts) => { + if ts.is_empty() { + ctx.lit("!arc.adt")?; + ctx.angle(|ctx| ctx.quote(|ctx| ctx.lit(x)))?; + } else { + ctx.lit("!arc.generic_adt")?; + ctx.angle(|ctx| { + ctx.quote(|ctx| ctx.lit(x))?; + ctx.lit(", ")?; + ctx.seq(ts, write_type) + })?; + } + } + TError => unreachable!(), + } + Ok(()) +} + +pub fn write_val(ctx: &mut Context, v: &Val) -> Result<()> { + match &v.kind { + VName(x) => { + ctx.lit("%")?; + ctx.lit(&x) + } + VError => unreachable!(), + } +} + +pub fn write_typeof(ctx: &mut Context, v: &Val) -> Result<()> { + write_type(ctx, &v.t) +} + +pub fn write_symbol(ctx: &mut Context, x: &str) -> Result<()> { + ctx.def("@")?; + ctx.def(&x) +} diff --git a/arc-lang/crates/compiler/codegen/write-rust/Cargo.toml b/arc-lang/crates/compiler/codegen/write-rust/Cargo.toml new file mode 100644 index 000000000..b60f64304 --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-rust/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "write-rust" +version.workspace = true +edition.workspace = true + +[dependencies] +builtins.workspace = true +rust.workspace = true +utils.workspace = true +im-rc.workspace = true +time.workspace = true +codegen.workspace = true +value.workspace = true diff --git a/arc-lang/crates/compiler/codegen/write-rust/src/context.rs b/arc-lang/crates/compiler/codegen/write-rust/src/context.rs new file mode 100644 index 000000000..f88521248 --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-rust/src/context.rs @@ -0,0 +1,112 @@ +// use im_rc::Vector; +// +// pub struct Context { +// pub ir: mir::IR, +// functions: Vec, +// structs: Vec, +// enums: Vec, +// +// function_ids: OrdMap<(mir::Name, Vector), syn::Ident>, +// struct_ids: OrdMap, +// enum_ids: OrdMap<(mir::Name, Vector), syn::Ident>, +// } +// +// pub fn id(x: impl AsRef) -> syn::Ident { +// syn::Ident::new(x.as_ref(), proc_macro2::Span::call_site()) +// } +// +// impl Context { +// pub fn new(ir: mir::IR) -> Self { +// Context { +// ir, +// functions: Vec::new(), +// structs: Vec::new(), +// enums: Vec::new(), +// function_ids: OrdMap::new(), +// struct_ids: OrdMap::new(), +// enum_ids: OrdMap::new(), +// } +// } +// +// pub fn add_function(mut self, item: syn::ItemFn) -> Self { +// self.functions.push(item); +// self +// } +// +// pub fn add_struct(mut self, item: syn::ItemStruct) -> Self { +// self.structs.push(item); +// self +// } +// +// pub fn add_enum(mut self, item: syn::ItemEnum) -> Self { +// self.enums.push(item); +// self +// } +// +// pub fn has_function(&self, x: &mir::Name, ts: &Vector) -> bool { +// self.function_ids.contains_key(&(x.clone(), ts.clone())) +// } +// +// pub fn has_struct(&self, id: &mir::Type) -> bool { +// self.struct_ids.contains_key(id) +// } +// +// pub fn has_enum(&self, id: &(mir::Name, Vector)) -> bool { +// self.enum_ids.contains_key(id) +// } +// +// pub fn get_function_id(mut self, x: mir::Name, ts: Vector) -> (Self, Ident) { +// todo!() +// //let len = self.function_ids.len(); +// //let x = self +// // .function_ids +// // .entry((x.clone(), ts)) +// // .or_insert_with(|| id(format!("{x}{len}", x = x.last().unwrap()))) +// // .clone(); +// //(self, x) +// } +// +// pub fn get_struct_id(mut self, t: mir::Type) -> (Self, Ident) { +// let len = self.struct_ids.len(); +// let x = self +// .struct_ids +// .entry(t) +// .or_insert_with(|| syn::Ident::new(&format!("S{len}"), Span::call_site())) +// .clone(); +// (self, x) +// } +// +// pub fn get_enum_id(mut self, x: mir::Name, ts: Vector) -> (Self, Ident) { +// let len = self.enum_ids.len(); +// let x = self +// .enum_ids +// .entry((x.clone(), ts)) +// .or_insert_with(|| syn::Ident::new(&format!("E{len}"), Span::call_site())) +// .clone(); +// (self, x) +// } +// +// pub fn get_func(&self, x: &mir::Name, ts: &Vector) -> mir::ItemFunc { +// self.ir +// .functions +// .get(&(x.clone(), ts.clone())) +// .unwrap() +// .clone() +// } +// +// pub fn get_type(&self, x: &mir::Name, ts: &Vector) -> mir::ItemType { +// self.ir +// .types +// .get(&(x.clone(), ts.clone())) +// .unwrap() +// .clone() +// } +// +// pub fn consume(self) -> Rust { +// Rust { +// functions: self.functions, +// structs: self.structs, +// enums: self.enums, +// } +// } +// } diff --git a/arc-lang/crates/compiler/codegen/write-rust/src/lib.rs b/arc-lang/crates/compiler/codegen/write-rust/src/lib.rs new file mode 100644 index 000000000..6d69f1659 --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-rust/src/lib.rs @@ -0,0 +1,574 @@ +#![allow(unused)] + +use builtins::aggregator::Aggregator; +use builtins::discretizer::Discretizer; +use builtins::duration::Duration; +use builtins::encoding::Encoding; +use builtins::path::Path; +use builtins::reader::Reader; +use builtins::socket::SocketAddr; +use builtins::time_source::TimeSource; +use builtins::writer::Writer; +use codegen::*; +use std::io::Result; +use std::io::Write; +use value::dynamic::Dataflow; +use value::dynamic::Function; +use value::dynamic::Sink; +use value::dynamic::Stream; +use value::dynamic::StreamKind::DApply; +use value::dynamic::StreamKind::DFilter; +use value::dynamic::StreamKind::DFlatMap; +use value::dynamic::StreamKind::DFlatten; +use value::dynamic::StreamKind::DKeyby; +use value::dynamic::StreamKind::DMap; +use value::dynamic::StreamKind::DMerge; +use value::dynamic::StreamKind::DScan; +use value::dynamic::StreamKind::DSource; +use value::dynamic::StreamKind::DUnkey; +use value::dynamic::StreamKind::DWindow; + +use rust::*; + +use im_rc::Vector; + +pub fn write(ctx: &mut Context, ss: &Vector) -> Result<()> { + ctx.keyword("use")?; + ctx.space()?; + ctx.lit("runtime::prelude::*;")?; + ctx.newline()?; + ctx.each(ss.iter(), write_item) +} + +pub fn write_dataflow(ctx: &mut Context, d: &Dataflow) -> Result<()> { + let cwd = std::env::current_dir()?; + ctx.keyword("fn")?; + ctx.space()?; + ctx.def("main")?; + ctx.paren(|_| Ok(()))?; + ctx.space()?; + ctx.block(|ctx| { + ctx.fmt(format_args!("std::env::set_current_dir({cwd:?}).unwrap();"))?; + ctx.newline()?; + ctx.lit(r#"let db = Database::new(concat!(env!("CARGO_MANIFEST_DIR"), "/db"));"#)?; + ctx.newline()?; + ctx.lit(r#"Runner::new(concat!(env!("CARGO_MANIFEST_DIR"), "/log")).spawn(instance(db.clone()));"#) + })?; + ctx.newline()?; + ctx.keyword("async")?; + ctx.space()?; + ctx.keyword("fn")?; + ctx.space()?; + ctx.def("instance")?; + ctx.paren(|ctx| ctx.lit("_db: Database"))?; + ctx.space()?; + ctx.block(|ctx| { + d.streams.iter().try_for_each(|n| write_stream(ctx, n))?; + d.sinks.iter().try_for_each(|n| write_sink(ctx, n))?; + Ok(()) + })?; + Ok(()) +} + +pub fn write_sink(ctx: &mut Context, s: &Sink) -> Result<()> { + let (x, w, e) = s.0.as_ref(); + ctx.def("Stream::sink")?; + ctx.paren(|ctx| { + ctx.val(&x)?; + ctx.comma()?; + write_writer(ctx, w)?; + ctx.comma()?; + write_encoding(ctx, e)?; + Ok(()) + }) +} + +pub fn write_stream(ctx: &mut Context, s: &Stream) -> Result<()> { + ctx.newline()?; + ctx.keyword("let")?; + ctx.space()?; + ctx.val(&s.name)?; + ctx.lit(" = ")?; + match s.kind.as_ref() { + DSource(a0, a1, a2) => { + ctx.def("Stream::source")?; + ctx.paren(|ctx| { + write_reader(ctx, a0)?; + ctx.comma()?; + write_encoding(ctx, a1)?; + ctx.comma()?; + write_time_source(ctx, a2) + })?; + } + DMap(a0, a1) => { + ctx.def("Stream::map")?; + ctx.paren(|ctx| { + ctx.val(&a0)?; + ctx.comma()?; + write_function(ctx, a1) + })?; + } + DFilter(a0, a1) => { + ctx.def("Stream::filter")?; + ctx.paren(|ctx| { + ctx.val(&a0)?; + ctx.comma()?; + write_function(ctx, a1) + })?; + } + DApply(a0, a1) => { + ctx.def("Stream::apply")?; + ctx.paren(|ctx| { + ctx.val(&a0)?; + ctx.comma()?; + write_function(ctx, a1) + })?; + } + DMerge(a0) => { + ctx.def("Stream::merge")?; + ctx.paren(|ctx| ctx.seq(a0, |ctx, s| ctx.val(&s)))?; + } + DKeyby(a0, a1) => { + ctx.def("Stream::keyby")?; + ctx.paren(|ctx| { + ctx.val(&a0)?; + ctx.comma()?; + write_function(ctx, a1) + })?; + } + DWindow(a0, a1, a2) => { + ctx.def("Stream::window")?; + ctx.paren(|ctx| { + ctx.val(&a0)?; + ctx.comma()?; + write_discretizer(ctx, a1)?; + ctx.comma()?; + write_aggregator(ctx, a2) + })?; + } + DFlatten(a0) => { + ctx.def("Stream::flatten")?; + ctx.paren(|ctx| ctx.val(&a0))?; + } + DFlatMap(a0, a1) => { + ctx.def("Stream::flat_map")?; + ctx.paren(|ctx| { + ctx.val(&a0)?; + ctx.comma()?; + write_function(ctx, a1) + })?; + } + DScan(a0, a1) => { + ctx.def("Stream::scan")?; + ctx.paren(|ctx| { + ctx.val(&a0)?; + ctx.comma()?; + write_function(ctx, a1) + })?; + } + DUnkey(a0) => { + ctx.def("Stream::unkey")?; + ctx.paren(|ctx| ctx.val(&a0))?; + } + DFlatten(x) => { + ctx.def("Stream::flatten")?; + ctx.paren(|ctx| ctx.val(&x))?; + } + } + ctx.lit(";")?; + ctx.newline()?; + Ok(()) +} + +fn write_aggregator( + ctx: &mut Context, + a: &Aggregator, +) -> Result<()> { + match a { + Aggregator::Monoid { + lift, + combine, + identity, + lower, + } => { + ctx.def("monoid")?; + ctx.paren(|ctx| { + write_function(ctx, lift)?; + ctx.comma()?; + write_function(ctx, combine)?; + ctx.comma()?; + write_function(ctx, identity)?; + ctx.comma()?; + write_function(ctx, lower) + }) + } + } +} + +fn write_discretizer(ctx: &mut Context, d: &Discretizer) -> Result<()> { + match d { + Discretizer::Tumbling { length } => { + ctx.def("Discretizer::tumbling")?; + ctx.paren(|ctx| ctx.dbg(length)) + } + Discretizer::Sliding { length, step } => { + ctx.def("Discretizer::sliding")?; + ctx.paren(|ctx| { + ctx.dbg(length)?; + ctx.comma()?; + write_duration(ctx, step) + }) + } + Discretizer::Session { gap } => { + ctx.def("Discretizer::session")?; + ctx.paren(|ctx| write_duration(ctx, gap)) + } + Discretizer::Counting { length } => { + ctx.def("Discretizer::counting")?; + ctx.paren(|ctx| ctx.lit(length)) + } + Discretizer::Moving { length, step } => { + ctx.def("Discretizer::moving")?; + ctx.paren(|ctx| { + ctx.lit(length)?; + ctx.comma()?; + ctx.lit(step) + }) + } + } +} + +fn write_duration(ctx: &mut Context, d: &Duration) -> Result<()> { + ctx.lit("Duration::from_seconds")?; + ctx.paren(|ctx| ctx.lit(d.0.whole_seconds())) +} + +fn write_function(ctx: &mut Context, f: &Function) -> Result<()> { + ctx.def(&f.0) +} + +fn write_time_source(ctx: &mut Context, e: &TimeSource) -> Result<()> { + match e { + TimeSource::Ingestion { watermark_interval } => { + ctx.def("TimeSource::ingestion")?; + ctx.paren(|ctx| write_duration(ctx, watermark_interval)) + } + TimeSource::Event { + extractor, + watermark_interval, + slack, + } => { + ctx.def("TimeSource::event")?; + ctx.paren(|ctx| { + write_function(ctx, extractor)?; + ctx.comma()?; + write_duration(ctx, watermark_interval)?; + ctx.comma()?; + write_duration(ctx, slack) + }) + } + } +} + +pub fn write_reader(ctx: &mut Context, r: &Reader) -> Result<()> { + match r { + Reader::Stdin => { + ctx.def("Reader::stdin")?; + ctx.paren(|_| Ok(()))?; + } + Reader::File { path, watch } => { + ctx.def("Reader::file")?; + ctx.paren(|ctx| { + write_path(ctx, path)?; + ctx.comma()?; + ctx.dbg(watch) + })?; + } + Reader::Http { url } => { + ctx.def("Reader::http")?; + ctx.paren(|ctx| ctx.dbg(url))?; + } + Reader::Tcp { addr } => { + ctx.def("Reader::tcp")?; + ctx.paren(|ctx| write_socket_addr(ctx, addr))?; + } + Reader::Kafka { addr, topic } => { + ctx.def("Reader::kafka")?; + ctx.paren(|ctx| { + ctx.dbg(addr)?; + ctx.comma()?; + ctx.dbg(topic) + })?; + } + } + Ok(()) +} + +pub fn write_writer(ctx: &mut Context, w: &Writer) -> Result<()> { + match w { + Writer::Stdout => { + ctx.def("Writer::stdout")?; + ctx.paren(|_| Ok(()))?; + } + Writer::File { path } => { + ctx.def("Writer::file")?; + ctx.paren(|ctx| write_path(ctx, path))?; + } + Writer::Http { url } => { + ctx.def("Writer::http")?; + ctx.paren(|ctx| ctx.dbg(url))?; + } + Writer::Tcp { addr } => { + ctx.def("Writer::tcp")?; + ctx.paren(|ctx| write_socket_addr(ctx, addr))?; + } + Writer::Kafka { addr, topic } => { + ctx.def("Writer::kafka")?; + ctx.paren(|ctx| { + ctx.dbg(addr)?; + ctx.comma()?; + ctx.lit(topic) + })?; + } + } + Ok(()) +} + +pub fn write_path(ctx: &mut Context, p: &Path) -> Result<()> { + ctx.def("Path::new")?; + ctx.paren(|ctx| ctx.dbg(&p.0)) +} + +pub fn write_socket_addr(ctx: &mut Context, s: &SocketAddr) -> Result<()> { + ctx.def("SocketAddr::new")?; + ctx.paren(|ctx| { + ctx.quote(|ctx| ctx.dbg(s.0.ip()))?; + ctx.comma()?; + ctx.dbg(s.0.port()) + }) +} + +pub fn write_encoding(ctx: &mut Context, e: &Encoding) -> Result<()> { + match e { + Encoding::Json => { + ctx.def("Encoding::json")?; + ctx.paren(|_| Ok(()))?; + } + Encoding::Csv { sep } => { + ctx.def("Encoding::csv")?; + ctx.paren(|ctx| ctx.dbg(sep))?; + } + } + Ok(()) +} + +pub fn write_item(ctx: &mut Context, i: &Item) -> Result<()> { + match &i.kind { + IDef(m, x, vs, t, b) => { + ctx.keyword("fn")?; + ctx.space()?; + ctx.lit(x)?; + write_params(ctx, vs)?; + ctx.lit(" -> ")?; + write_type(ctx, t)?; + ctx.space()?; + write_block(ctx, b)?; + ctx.newline()?; + } + IEnum(m, x, xts) => { + ctx.keyword("enum")?; + ctx.space()?; + ctx.lit(x)?; + ctx.space()?; + ctx.brace(|ctx| { + ctx.indented_comma_seq(xts, |ctx, (x, t)| { + ctx.lit(x)?; + write_type(ctx, t) + }) + })?; + ctx.newline()?; + } + IStruct(x, xts) => { + ctx.lit("#[data]")?; + ctx.keyword("struct")?; + ctx.space()?; + ctx.lit(x)?; + ctx.space()?; + ctx.brace(|ctx| { + ctx.indented_comma_seq(xts, |ctx, (x, t)| { + ctx.lit(x)?; + ctx.lit(":")?; + write_type(ctx, t) + }) + })?; + ctx.newline()?; + } + IError => unreachable!(), + } + Ok(()) +} + +pub fn write_params(ctx: &mut Context, ps: &Vector) -> Result<()> { + ctx.paren(|ctx| { + ctx.seq(ps, |ctx, v| { + write_val(ctx, v)?; + ctx.lit(":")?; + ctx.space()?; + write_type(ctx, &v.t) + }) + })?; + Ok(()) +} + +pub fn write_stmt(ctx: &mut Context, s: &Stmt) -> Result<()> { + if !s.vs.is_empty() { + ctx.keyword("let")?; + ctx.space()?; + ctx.seq(&s.vs, write_val)?; + ctx.lit(" = ")?; + } + match &s.kind { + SStruct(x, xvs) => { + ctx.lit(x)?; + ctx.space()?; + ctx.brace(|ctx| { + ctx.seq(xvs, |ctx, (x, v)| { + ctx.lit(x)?; + ctx.lit(":")?; + write_val(ctx, &v) + }) + })?; + } + SStructAccess(v, x) => { + write_val(ctx, v)?; + ctx.lit(".")?; + ctx.lit(x)?; + } + SWhileBreak(vs) => { + ctx.keyword("break")?; + } + SWhileContinue(vs) => { + ctx.keyword("continue")?; + } + SWhileYield(vs) => { + todo!() + } + SFunCallDirect(x, vs) => { + ctx.def(x)?; + ctx.paren(|ctx| ctx.seq(vs, write_val))?; + } + SFunCallIndirect(v, vs) => { + write_val(ctx, v)?; + ctx.paren(|ctx| ctx.seq(vs, write_val))?; + } + SVariant(x, v) => { + ctx.lit(x)?; + ctx.paren(|ctx| write_val(ctx, v))?; + } + SVariantCheck(x, v) => { + ctx.mac("matches!")?; + ctx.paren(|ctx| { + write_val(ctx, v)?; + ctx.comma()?; + ctx.lit(x)?; + ctx.paren(|ctx| ctx.lit("_")) + })?; + } + SVariantAccess(x, v) => { + ctx.mac("unwrap!")?; + ctx.paren(|ctx| { + write_val(ctx, v)?; + ctx.comma()?; + ctx.lit(x) + })?; + } + SFun(x) => { + ctx.def(x)?; + } + SConst(c) => match c { + CInt(c) => { + ctx.lit(c)?; + } + CFloat(c) => { + ctx.lit(c)?; + } + CString(c) => { + ctx.text(&format!(r#""{c}""#))?; + } + CBool(c) => { + ctx.fmt(format_args!("{c}"))?; + } + CChar(c) => { + ctx.text(&format!("'{c}'"))?; + } + CUnit => { + ctx.lit("()")?; + } + }, + SIfElse(v, b0, b1) => { + ctx.keyword("if")?; + ctx.space()?; + write_val(ctx, v)?; + ctx.space()?; + write_block(ctx, b0)?; + ctx.space()?; + ctx.keyword("else")?; + ctx.space()?; + write_block(ctx, b1)?; + } + SFunReturn(v) => { + ctx.keyword("return")?; + ctx.space()?; + write_val(ctx, v)?; + } + SBlockResult(v) => { + write_val(ctx, v)?; + } + SWhile(vs0, vs1, b0, b1) => { + todo!() + } + SError => unreachable!(), + } + ctx.lit(";")?; + Ok(()) +} + +pub fn write_block(ctx: &mut Context, b: &Block) -> Result<()> { + ctx.block(|ctx| { + for s in &b.ss { + ctx.newline()?; + write_stmt(ctx, s)?; + } + Ok(()) + }) +} + +pub fn write_type(ctx: &mut Context, t: &Type) -> Result<()> { + match t.kind.as_ref() { + TFun(ts, t) => { + ctx.keyword("fn")?; + ctx.paren(|ctx| ctx.seq(ts, write_type))?; + ctx.lit(" -> ")?; + write_type(ctx, t)?; + } + TNominal(x, ts) => { + ctx.ty(x)?; + if !ts.is_empty() { + ctx.angle(|ctx| ctx.seq(ts, write_type))?; + } + } + TError => unreachable!(), + } + Ok(()) +} + +pub fn write_val(ctx: &mut Context, v: &Val) -> Result<()> { + match &v.kind { + VName(x) => ctx.lit(&x), + VError => unreachable!(), + } +} + +pub fn write_typeof(ctx: &mut Context, v: &Val) -> Result<()> { + write_type(ctx, &v.t) +} diff --git a/arc-lang/crates/compiler/codegen/write-value/Cargo.toml b/arc-lang/crates/compiler/codegen/write-value/Cargo.toml new file mode 100644 index 000000000..badeb4fef --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-value/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "write-value" +version.workspace = true +edition.workspace = true + +[dependencies] +hir.workspace = true +value.workspace = true +builtins.workspace = true +codegen.workspace = true +write-hir.workspace = true +colors.workspace = true diff --git a/arc-lang/crates/compiler/codegen/write-value/src/lib.rs b/arc-lang/crates/compiler/codegen/write-value/src/lib.rs new file mode 100644 index 000000000..1b9d575c8 --- /dev/null +++ b/arc-lang/crates/compiler/codegen/write-value/src/lib.rs @@ -0,0 +1,470 @@ +#![allow(unused)] +use builtins::aggregator::Aggregator; +use builtins::discretizer::Discretizer; +use builtins::encoding::Encoding; +use builtins::model::Model; +use builtins::path::Path; +use builtins::reader::Reader; +use builtins::time_source::TimeSource; +use builtins::writer::Writer; +use codegen::Context; +use colors::BUILTIN_COLOR; +use colors::NUMERIC_COLOR; +use colors::STRING_COLOR; +use std::io::Result; +use std::io::Write; +use value::dynamic::Dataflow; +use value::dynamic::Function; +use value::dynamic::Sink; +use value::dynamic::Stream; +use value::dynamic::StreamKind; + +use hir::*; +use value::*; + +pub fn write_value_type(ctx: &mut Context, (v, t): &(Value, Type)) -> Result<()> { + write_value(ctx, v)?; + ctx.colon()?; + write_hir::write_type(ctx, t) +} + +pub fn write_value(ctx: &mut Context, v: &Value) -> Result<()> { + match v.kind.as_ref() { + VBool(v) => { + ctx.bold_colored(&format!("{}", v), BUILTIN_COLOR)?; + } + VString(v) => { + ctx.colored("\"", STRING_COLOR)?; + ctx.colored(&v.as_ref(), STRING_COLOR)?; + ctx.colored("\"", STRING_COLOR)?; + } + VDuration(v) => { + ctx.fmt(format_args!("{:?}", v.0))?; + } + VI32(v) => { + ctx.colored(&format!("{}", &v), NUMERIC_COLOR)?; + } + VF32(v) => { + ctx.colored(&format!("{}", &v), NUMERIC_COLOR)?; + } + VUnit(()) => { + ctx.lit("()")?; + } + VChar(v) => { + ctx.colored(&format!("'{}'", v), STRING_COLOR)?; + } + VFunction(v) => { + write_function(ctx, v)?; + } + VRecord(v) => { + ctx.brace(|ctx| { + ctx.seq(&v.0, |ctx, (x, v)| { + ctx.lit(&x)?; + ctx.colon()?; + write_value(ctx, v) + }) + })?; + } + VVariant(v) => { + write_value(ctx, &v.v)?; + ctx.lit(" as ")?; + ctx.lit(&v.x)?; + } + VTime(v) => { + ctx.fmt(format_args!("{:?}", v.0))?; + } + VStream(v) => { + ctx.lit("Stream(..)")?; + } + VDiscretizer(v) => { + write_discretizer(ctx, v)?; + } + VAggregator(v) => { + write_aggregator(ctx, v)?; + } + VReader(v) => { + write_reader(ctx, v)?; + } + VWriter(v) => { + write_writer(ctx, v)?; + } + VEncoding(v) => { + write_encoding(ctx, v)?; + } + VTimeSource(v) => { + write_time_source(ctx, v)?; + } + VModel(v) => { + write_model(ctx, v)?; + } + VArray(v) => { + ctx.brack(|ctx| ctx.indented_seq(&v.0, write_value))?; + } + VTuple(v) => { + ctx.paren(|ctx| ctx.indented_seq(&v.0, write_value))?; + } + VResult(v) => { + write_result(ctx, v)?; + } + VPath(v) => { + write_path(ctx, v)?; + } + VFile(v) => { + ctx.fmt(format_args!("{:?}", v.0.borrow().metadata().unwrap()))?; + } + VBlob(v) => { + ctx.fmt(format_args!("{:?}", v.0))?; + } + VDict(v) => { + ctx.brace(|ctx| { + ctx.indented_seq(v.0.iter(), |ctx, (k, v)| { + write_value(ctx, k)?; + ctx.colon()?; + write_value(ctx, v) + }) + })?; + } + VF64(v) => { + ctx.colored(&format!("{}", &v), NUMERIC_COLOR)?; + } + VI128(v) => { + ctx.colored(&format!("{}", &v), NUMERIC_COLOR)?; + } + VI16(v) => { + ctx.colored(&format!("{}", &v), NUMERIC_COLOR)?; + } + VI64(v) => { + ctx.colored(&format!("{}", &v), NUMERIC_COLOR)?; + } + VI8(v) => { + ctx.colored(&format!("{}", &v), NUMERIC_COLOR)?; + } + VMatrix(v) => { + ctx.lit(&format!("{:?}", v))?; + } + VOption(v) => todo!(), + VSet(v) => todo!(), + VSocketAddr(v) => todo!(), + VDataflow(v) => { + ctx.lit("Dataflow(...)")?; + } + VU128(v) => todo!(), + VU16(v) => todo!(), + VU32(v) => todo!(), + VU64(v) => todo!(), + VU8(v) => todo!(), + VUrl(v) => todo!(), + VUsize(v) => todo!(), + VVec(v) => todo!(), + VInstance(v) => { + ctx.lit("Instance(...)")?; + } + } + Ok(()) +} + +pub fn write_writer(ctx: &mut Context, d: &Writer) -> Result<()> { + match d { + Writer::Stdout => { + ctx.def("stdout")?; + ctx.paren(|_| Ok(()))?; + } + Writer::File { path } => { + ctx.def("file")?; + ctx.paren(|ctx| ctx.text(&format!("{:?}", path.0.display())))?; + } + Writer::Http { url } => { + ctx.def("http")?; + ctx.paren(|ctx| ctx.text(&format!("{}", url.0)))?; + } + Writer::Tcp { addr: ip } => { + ctx.def("tcp")?; + ctx.paren(|ctx| ctx.text(&format!("{}", ip.0)))?; + } + Writer::Kafka { + addr: broker, + topic, + } => { + ctx.def("kafka")?; + ctx.paren(|ctx| { + ctx.text(&format!("{}", broker.0))?; + ctx.comma()?; + ctx.text(&format!("{}", topic.as_ref())) + })?; + } + } + Ok(()) +} + +pub fn write_reader(ctx: &mut Context, d: &Reader) -> Result<()> { + match d { + Reader::Stdin => { + ctx.def("stdin")?; + ctx.paren(|_| Ok(()))?; + } + Reader::File { path, watch } => { + ctx.def("file")?; + ctx.paren(|ctx| ctx.text(&format!("{:?}", path.0.display())))?; + } + Reader::Http { url } => { + ctx.def("http")?; + ctx.paren(|ctx| ctx.text(&format!("{}", url.0)))?; + } + Reader::Tcp { addr: ip } => { + ctx.def("tcp")?; + ctx.paren(|ctx| ctx.text(&format!("{}", ip.0)))?; + } + Reader::Kafka { + addr: broker, + topic, + } => { + ctx.def("kafka")?; + ctx.paren(|ctx| { + ctx.text(&format!("{}", broker.0))?; + ctx.comma()?; + ctx.text(&format!("{}", topic.as_ref())) + })?; + } + } + Ok(()) +} + +pub fn write_dataflow(ctx: &mut Context, d: &Dataflow) -> Result<()> { + ctx.lit("Dataflow")?; + ctx.brace(|ctx| { + ctx.seq(&d.streams, write_stream)?; + ctx.seq(&d.sinks, write_sink) + }) +} + +pub fn write_sink(ctx: &mut Context, s: &Sink) -> Result<()> { + let (x, w, e) = s.0.as_ref(); + ctx.def("sink")?; + ctx.paren(|ctx| { + ctx.val(&x)?; + ctx.comma()?; + write_writer(ctx, w)?; + ctx.comma()?; + write_encoding(ctx, e) + }) +} + +pub fn write_stream(ctx: &mut Context, s: &Stream) -> Result<()> { + fn write_stream(ctx: &mut Context, s: &Stream) -> Result<()> { + match s.kind.as_ref() { + StreamKind::DSource(r, e, f) => { + ctx.def("source")?; + ctx.paren(|ctx| { + write_reader(ctx, r)?; + ctx.comma()?; + write_encoding(ctx, e)?; + ctx.comma()?; + write_time_source(ctx, f) + })?; + } + StreamKind::DMap(x, f) => { + ctx.def("map")?; + ctx.paren(|ctx| { + ctx.val(&x)?; + ctx.comma()?; + write_function(ctx, f) + })?; + } + StreamKind::DFilter(x, f) => { + ctx.def("filter")?; + ctx.paren(|ctx| { + ctx.val(&x)?; + ctx.comma()?; + write_function(ctx, f) + })?; + } + StreamKind::DFlatten(x) => { + ctx.def("flatten")?; + ctx.paren(|ctx| ctx.val(&x))?; + } + StreamKind::DFlatMap(x, f) => { + ctx.def("flat_map")?; + ctx.paren(|ctx| { + ctx.val(&x)?; + ctx.comma()?; + write_function(ctx, f) + })?; + } + StreamKind::DScan(x, f) => { + ctx.def("scan")?; + ctx.paren(|ctx| { + ctx.val(&x)?; + ctx.comma()?; + write_function(ctx, f) + })?; + } + StreamKind::DKeyby(x, f) => { + ctx.def("keyby")?; + ctx.paren(|ctx| { + ctx.val(&x)?; + ctx.comma()?; + write_function(ctx, f) + })?; + } + StreamKind::DUnkey(x) => { + ctx.def("unkey")?; + ctx.paren(|ctx| ctx.val(&x))?; + } + StreamKind::DApply(x, f) => { + ctx.def("apply")?; + ctx.paren(|ctx| { + ctx.val(&x)?; + ctx.comma()?; + write_function(ctx, f) + })?; + } + StreamKind::DWindow(x, d, a) => { + ctx.def("window")?; + ctx.paren(|ctx| { + ctx.val(&x)?; + ctx.comma()?; + write_discretizer(ctx, d)?; + ctx.comma()?; + write_aggregator(ctx, a) + })?; + } + StreamKind::DMerge(xs) => { + ctx.def("merge")?; + ctx.paren(|ctx| ctx.seq(xs, |ctx, x| ctx.val(&x)))?; + } + } + Ok(()) + } + ctx.keyword("val ")?; + ctx.val(&s.name)?; + ctx.lit(" = ")?; + write_stream(ctx, s)?; + ctx.lit(";") +} + +fn write_function(ctx: &mut Context, f: &Function) -> Result<()> { + ctx.def(&f.0) +} + +fn write_encoding(ctx: &mut Context, e: &Encoding) -> Result<()> { + match e { + Encoding::Csv { sep } => { + ctx.def("csv")?; + ctx.paren(|ctx| ctx.fmt(format_args!("{sep}"))) + } + Encoding::Json => { + ctx.def("json")?; + ctx.paren(|_| Ok(())) + } + } +} + +fn write_time_source(ctx: &mut Context, e: &TimeSource) -> Result<()> { + match e { + TimeSource::Ingestion { watermark_interval } => { + ctx.def("ingestion")?; + ctx.paren(|ctx| ctx.numeric(&format!("{:?}", watermark_interval))) + } + TimeSource::Event { + extractor, + watermark_interval, + slack, + } => { + ctx.def("event")?; + ctx.paren(|ctx| { + write_function(ctx, extractor)?; + ctx.comma()?; + ctx.numeric(&format!("{:?}", watermark_interval))?; + ctx.comma()?; + ctx.numeric(&format!("{:?}", slack)) + }) + } + } +} + +fn write_discretizer(ctx: &mut Context, d: &Discretizer) -> Result<()> { + match d { + Discretizer::Tumbling { length } => { + ctx.def("tumbling")?; + ctx.paren(|ctx| ctx.numeric(&format!("{:?}", length))) + } + Discretizer::Sliding { length, step } => { + ctx.def("sliding")?; + ctx.paren(|ctx| { + ctx.numeric(&format!("{:?}", length))?; + ctx.comma()?; + ctx.numeric(&format!("{:?}", step)) + }) + } + Discretizer::Session { gap } => { + ctx.def("session")?; + ctx.paren(|ctx| ctx.numeric(&format!("{:?}", gap))) + } + Discretizer::Counting { length } => { + ctx.def("counting")?; + ctx.paren(|ctx| ctx.numeric(&format!("{}", length))) + } + Discretizer::Moving { length, step } => { + ctx.def("moving")?; + ctx.paren(|ctx| { + ctx.numeric(&format!("{}", length))?; + ctx.comma()?; + ctx.numeric(&format!("{}", step)) + }) + } + } +} + +fn write_aggregator( + ctx: &mut Context, + a: &Aggregator, +) -> Result<()> { + match a { + Aggregator::Monoid { + lift, + combine, + identity, + lower, + } => { + ctx.def("Aggregator::monoid")?; + ctx.paren(|ctx| { + write_function(ctx, lift)?; + ctx.comma()?; + write_function(ctx, combine)?; + ctx.comma()?; + write_function(ctx, identity)?; + ctx.comma()?; + write_function(ctx, lower) + }) + } // Aggregator::Compose { a0, a1 } => { + // ctx.def("Aggregator::compose")?; + // ctx.paren(|ctx| { + // write_aggregator(ctx, a0)?; + // ctx.comma()?; + // write_aggregator(ctx, a1) + // }) + // } + } +} + +fn write_result(ctx: &mut Context, v: &builtins::result::Result) -> Result<()> { + match &v.0 { + Ok(x) => { + ctx.def("ok")?; + ctx.paren(|ctx| write_value(ctx, x)) + } + Err(x) => { + ctx.def("err")?; + ctx.paren(|ctx| ctx.fmt(format_args!("{x}"))) + } + } +} + +fn write_path(ctx: &mut Context, v: &Path) -> Result<()> { + ctx.def("path")?; + ctx.paren(|ctx| ctx.fmt(format_args!("{:?}", v.0.display()))) +} + +fn write_model(ctx: &mut Context, a: &Model) -> Result<()> { + todo!() +} diff --git a/arc-lang/crates/compiler/infra/build/Cargo.toml b/arc-lang/crates/compiler/infra/build/Cargo.toml new file mode 100644 index 000000000..3dc015178 --- /dev/null +++ b/arc-lang/crates/compiler/infra/build/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "build" +version.workspace = true +edition.workspace = true + +[dependencies] +indoc.workspace = true +names.workspace = true +time.workspace = true +diagnostics.workspace = true +anyhow.workspace = true +tracing.workspace = true +directories.workspace = true diff --git a/arc-lang/crates/compiler/infra/build/src/context.rs b/arc-lang/crates/compiler/infra/build/src/context.rs new file mode 100644 index 000000000..4629115da --- /dev/null +++ b/arc-lang/crates/compiler/infra/build/src/context.rs @@ -0,0 +1,119 @@ +use std::path::PathBuf; + +use anyhow::Result; +use diagnostics::Diagnostics; +use names::Generator; + +use crate::Package; + +const RUNTIME: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/../../../runtime"); + +pub struct Context { + pub(crate) name_generator: Generator<'static>, + pub(crate) workspace: PathBuf, + pub(crate) crates: PathBuf, + pub(crate) target: PathBuf, + pub diagnostics: Diagnostics, + pub pids: Vec, +} + +impl std::fmt::Debug for Context { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Context") + .field("workspace", &self.workspace) + .field("crates", &self.crates) + .field("diagnostics", &self.diagnostics) + .finish() + } +} + +impl Default for Context { + fn default() -> Self { + let dir = directories::ProjectDirs::from("org", "cda-group", "arc-lang") + .expect("Unable to find project directories"); + let cache = dir.cache_dir(); + tracing::info!("Cache directory: {}", cache.display()); + let workspace = cache.join("workspace"); + let workspace_toml = workspace.join("Cargo.toml"); + let crates = workspace.join("crates"); + let target = workspace.join("target"); + std::fs::create_dir_all(&crates).expect("Failed to create crates directory"); + std::fs::write( + &workspace_toml, + indoc::formatdoc!( + r#"[workspace] + members = [ "crates/*" ] + resolver = "2" + + [workspace.package] + version = "0.0.0" + edition = "2021" + + [workspace.dependencies] + runtime = {{ path = "{RUNTIME}" }}"#, + ), + ) + .expect("Unable to write file"); + Self { + name_generator: Generator::new(names::ADJECTIVES, names::NOUNS, names::Name::Plain), + workspace, + crates, + target, + diagnostics: Diagnostics::default(), + pids: Vec::new(), + } + } +} + +impl Context { + pub fn new() -> Self { + Self::default() + } + + pub fn clear_caches(&mut self) { + std::fs::remove_dir_all(&self.crates).expect("Failed to remove crates directory"); + std::fs::create_dir_all(&self.crates).expect("Failed to create crates directory"); + std::fs::remove_dir_all(&self.target).expect("Failed to remove target directory"); + } + + pub fn show_caches(&self) { + for entry in std::fs::read_dir(&self.crates).expect("Failed to read crates directory") { + println!("{}", entry.expect("Failed to read entry").path().display()); + } + } + + pub fn new_package(&mut self) -> Result { + let base = self.name_generator.next().unwrap(); + let time = std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH)? + .as_secs(); + let workspace = self.workspace.clone(); + let name = format!("{base}-{time}"); + let root = self.crates.join(&name); + let src = root.join("src"); + let main = src.join("main.rs"); + let toml = root.join("Cargo.toml"); + std::fs::create_dir_all(&src)?; + std::fs::write( + &toml, + indoc::formatdoc!( + r#"[package] + name = "{name}" + version.workspace = true + edition.workspace = true + + [dependencies] + runtime.workspace = true"#, + name = name + ), + )?; + Ok(Package { + workspace, + target: self.target.clone(), + root, + main, + toml, + name, + }) + } +} diff --git a/arc-lang/crates/compiler/infra/build/src/lib.rs b/arc-lang/crates/compiler/infra/build/src/lib.rs new file mode 100644 index 000000000..ba706e42a --- /dev/null +++ b/arc-lang/crates/compiler/infra/build/src/lib.rs @@ -0,0 +1,77 @@ +#![allow(unused)] +pub mod context; + +use anyhow::Result; +use std::error::Error; +use std::io::BufRead; +use std::io::BufReader; +use std::path::Path; +use std::path::PathBuf; +use std::process::Command; +use std::process::Stdio; + +use context::Context; + +pub struct Package { + pub workspace: PathBuf, + pub target: PathBuf, + pub name: String, + pub root: PathBuf, + pub main: PathBuf, + pub toml: PathBuf, +} + +pub struct Executable { + pub path: PathBuf, +} + +impl Package { + pub fn build(&self) -> Result { + tracing::info!( + "Building {}", + self.workspace.join("crates").join(&self.name).display() + ); + let mut cmd = Command::new("cargo") + .arg("build") + .arg("--package") + .arg(&self.name) + .arg("--release") + .arg("--color") + .arg("always") + .arg("--target-dir") + .arg(&self.workspace.join("target")) + .current_dir(&self.workspace) + .stderr(Stdio::piped()) + .spawn() + .expect("Failed to execute process"); + for line in BufReader::new(cmd.stderr.as_mut().unwrap()).lines() { + tracing::info!("{}", line?); + } + if cmd.wait()?.success() { + tracing::info!("Succeeded building crate {}", self.name); + let path = self.workspace.join("target/release").join(&self.name); + Ok(Executable { path }) + } else { + tracing::error!("Failed building crate {}", self.name); + return Err(anyhow::anyhow!("Build failed")); + } + } +} + +impl Executable { + pub fn run(&self) -> Result<()> { + let dir = std::env::current_dir()?; + tracing::info!("Running `{}` from `{}`", self.path.display(), dir.display()); + let mut cmd = Command::new(&self.path) + .current_dir(std::env::current_dir()?) + .stderr(Stdio::piped()) + .spawn() + .expect("Failed to execute process"); + for line in BufReader::new(cmd.stderr.as_mut().unwrap()).lines() { + tracing::info!("{}", line?); + } + cmd.wait() + .expect(&format!("Failed to wait on `{}`", self.path.display())); + Ok(()) + } +} diff --git a/arc-lang/crates/compiler/infra/codegen/Cargo.toml b/arc-lang/crates/compiler/infra/codegen/Cargo.toml new file mode 100644 index 000000000..184483da8 --- /dev/null +++ b/arc-lang/crates/compiler/infra/codegen/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "codegen" +version.workspace = true +edition.workspace = true + +[dependencies] +config.workspace = true +colored.workspace = true +colors.workspace = true diff --git a/arc-lang/crates/compiler/infra/codegen/src/lib.rs b/arc-lang/crates/compiler/infra/codegen/src/lib.rs new file mode 100644 index 000000000..f9a870d4a --- /dev/null +++ b/arc-lang/crates/compiler/infra/codegen/src/lib.rs @@ -0,0 +1,447 @@ +use std::fmt; +use std::fmt::Debug; +use std::fmt::Display; +use std::io; +use std::io::LineWriter; +use std::io::Write; +use std::path::PathBuf; + +use colored::Color; +pub use colored::Color::*; + +use colored::Colorize; +use colors::*; +use config::Show; + +pub struct Context { + writer: W, + indent: usize, + depth: usize, + pub opt: Show, +} + +impl Context> { + pub fn string() -> Self { + Self::new(Vec::new()) + } + + pub fn finish(&mut self) -> String { + String::from_utf8(std::mem::take(&mut self.writer)).unwrap() + } +} + +impl Context> { + pub fn file(path: PathBuf) -> Self { + let file = std::fs::File::create(path).unwrap(); + Self::new(LineWriter::new(file)) + } +} + +impl Context> { + pub fn stderr() -> Self { + Self::new(LineWriter::new(io::stderr())) + } +} + +impl Context { + pub fn new(writer: W) -> Self { + Self { + writer, + indent: 0, + depth: 0, + opt: Show::default(), + } + } + + pub fn with_opt(&mut self, opt: Show) -> &mut Self { + self.opt = opt; + self + } + + pub fn colors(&mut self, colors: bool) -> &mut Self { + self.opt.colors = colors; + self + } + + pub fn write( + &mut self, + x: T, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<&mut Self> { + f(self, x)?; + self.flush(); + Ok(self) + } + + pub fn writeln( + &mut self, + x: T, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<&mut Self> { + f(self, x)?; + self.writer.write(b"\n")?; + self.flush(); + Ok(self) + } + + pub fn typed(&mut self) -> &mut Self { + self.opt.types = true; + self + } + + pub fn debug(&mut self) -> &mut Self { + self.opt.prelude = true; + self + } + + pub fn flush(&mut self) { + self.writer.flush().unwrap(); + } + + pub fn indent(&mut self) { + self.indent += 1; + } + + pub fn dedent(&mut self) { + self.indent -= 1; + } + + pub fn indented(&mut self, f: impl FnOnce(&mut Self) -> io::Result<()>) -> io::Result<()> { + self.indent(); + f(self)?; + self.dedent(); + Ok(()) + } + + pub fn indented_if_toplevel( + &mut self, + f: impl FnOnce(&mut Self) -> io::Result<()>, + ) -> io::Result<()> { + if self.depth == 0 { + self.indent(); + self.newline()?; + self.dedent(); + } + f(self) + } + + pub fn comma(&mut self) -> io::Result<()> { + self.lit(", ") + } + + pub fn colon(&mut self) -> io::Result<()> { + self.lit(": ") + } + + pub fn space(&mut self) -> io::Result<()> { + self.lit(" ") + } + + pub fn keyword(&mut self, s: &str) -> io::Result<()> { + self.bold_colored(s, KEYWORD_COLOR) + } + + pub fn mac(&mut self, s: &str) -> io::Result<()> { + self.bold_colored(s, MACRO_COLOR) + } + + pub fn dbg(&mut self, s: impl Debug) -> io::Result<()> { + self.fmt(format_args!("{:?}", s)) + } + + pub fn lit(&mut self, s: impl Display) -> io::Result<()> { + self.fmt(format_args!("{}", s)) + } + + pub fn def(&mut self, s: &str) -> io::Result<()> { + self.colored(s, DEF_COLOR) + } + + pub fn var(&mut self, s: &str) -> io::Result<()> { + self.colored(s, VAR_COLOR) + } + + pub fn val(&mut self, s: &str) -> io::Result<()> { + self.colored(s, VAL_COLOR) + } + + pub fn builtin(&mut self, s: &str) -> io::Result<()> { + self.colored(s, BUILTIN_COLOR) + } + + pub fn numeric(&mut self, s: &str) -> io::Result<()> { + self.colored(s, NUMERIC_COLOR) + } + + pub fn comment(&mut self, s: &str) -> io::Result<()> { + self.colored(s, COMMENT_COLOR) + } + + pub fn ty(&mut self, s: &str) -> io::Result<()> { + self.colored(s, TYPE_COLOR) + } + + pub fn text(&mut self, s: &str) -> io::Result<()> { + self.colored(s, STRING_COLOR) + } + + pub fn colored(&mut self, s: &str, c: Color) -> io::Result<()> { + if self.opt.colors { + self.fmt(format_args!("{}", s.color(c))) + } else { + self.lit(s) + } + } + + pub fn bold_colored(&mut self, s: &str, c: Color) -> io::Result<()> { + if self.opt.colors { + self.fmt(format_args!("{}", s.color(c).bold())) + } else { + self.lit(s) + } + } + + pub fn display(&mut self, x: impl fmt::Display) -> io::Result<()> { + self.fmt(format_args!("{}", x)) + } + + pub fn fmt(&mut self, args: fmt::Arguments) -> io::Result<()> { + self.writer.write_fmt(args) + } + + pub fn newline(&mut self) -> io::Result<()> { + self.lit("\n")?; + self.tab()?; + Ok(()) + } + + pub fn tab(&mut self) -> io::Result<()> { + for _ in 0..self.indent { + self.lit(" ")?; + } + Ok(()) + } + + pub fn newline_if_toplevel(&mut self) -> io::Result<()> { + if self.depth == 0 { + self.newline()?; + } + Ok(()) + } + + pub fn newline_seq<'a, T>( + &mut self, + v: impl IntoIterator, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<()> { + for x in v { + self.newline()?; + f(self, x)?; + } + Ok(()) + } + + pub fn indented_seq<'a, T>( + &mut self, + v: impl IntoIterator, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<()> { + self.indent(); + self.newline_seq(v, f)?; + self.dedent(); + self.newline() + } + + pub fn indented_comma_seq<'a, T>( + &mut self, + v: impl IntoIterator, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<()> { + self.indent(); + self.newline()?; + let mut iter = v.into_iter(); + if let Some(x) = iter.next() { + f(self, x)?; + } + for x in iter { + self.lit(",")?; + self.newline()?; + f(self, x)?; + } + self.dedent(); + self.newline() + } + + pub fn then( + &mut self, + x: &Option, + f: impl FnOnce(&mut Self, &T) -> io::Result<()>, + ) -> io::Result<()> { + if let Some(x) = x { + f(self, x)?; + } + Ok(()) + } + + pub fn then_or( + &mut self, + x: &Option, + f0: impl FnOnce(&mut Self, &T) -> io::Result<()>, + f1: impl FnOnce(&mut Self) -> io::Result<()>, + ) -> io::Result<()> { + if let Some(x) = x { + f0(self, x)?; + } else { + f1(self)?; + } + Ok(()) + } + + pub fn each_newline( + &mut self, + v: impl IntoIterator, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<()> { + let mut iter = v.into_iter(); + if let Some(x) = iter.next() { + f(self, x)?; + while let Some(x) = iter.next() { + self.newline()?; + f(self, x)?; + } + } + Ok(()) + } + + pub fn each( + &mut self, + v: impl IntoIterator, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<()> { + for i in v { + f(self, i)?; + } + Ok(()) + } + + pub fn sep( + &mut self, + v: impl IntoIterator, + sep: &str, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<()> { + let mut iter = v.into_iter(); + if let Some(x) = iter.next() { + f(self, x)?; + while let Some(x) = iter.next() { + self.lit(sep)?; + self.lit(" ")?; + f(self, x)?; + } + } + Ok(()) + } + + pub fn sep_trailing( + &mut self, + v: impl IntoIterator, + sep: &str, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<()> { + let mut iter = v.into_iter(); + if let Some(x) = iter.next() { + f(self, x)?; + self.lit(sep)?; + if let Some(x) = iter.next() { + self.lit(" ")?; + f(self, x)?; + while let Some(x) = iter.next() { + self.lit(sep)?; + self.lit(" ")?; + f(self, x)?; + } + } + } + Ok(()) + } + + pub fn seq( + &mut self, + v: impl IntoIterator, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<()> { + self.sep(v, ",", f) + } + + pub fn seq_trailing( + &mut self, + v: impl IntoIterator, + f: impl Fn(&mut Self, T) -> io::Result<()>, + ) -> io::Result<()> { + self.sep_trailing(v, ",", f) + } + + pub fn delim( + &mut self, + l: &str, + r: &str, + f: impl FnOnce(&mut Self) -> io::Result<()>, + ) -> io::Result<()> { + self.lit(l)?; + f(self)?; + self.lit(r)?; + Ok(()) + } + + pub fn block(&mut self, f: impl FnOnce(&mut Self) -> io::Result<()>) -> io::Result<()> { + self.depth += 1; + self.lit("{")?; + self.indent(); + f(self)?; + self.dedent(); + self.newline()?; + self.lit("}")?; + self.depth -= 1; + Ok(()) + } + + pub fn brace(&mut self, f: impl FnOnce(&mut Self) -> io::Result<()>) -> io::Result<()> { + self.depth += 1; + self.delim("{", "}", f)?; + self.depth -= 1; + Ok(()) + } + + pub fn quote(&mut self, f: impl FnOnce(&mut Self) -> io::Result<()>) -> io::Result<()> { + self.depth += 1; + self.delim("\"", "\"", f)?; + self.depth -= 1; + Ok(()) + } + + pub fn paren(&mut self, f: impl FnOnce(&mut Self) -> io::Result<()>) -> io::Result<()> { + self.depth += 1; + self.delim("(", ")", f)?; + self.depth -= 1; + Ok(()) + } + + pub fn brack(&mut self, f: impl FnOnce(&mut Self) -> io::Result<()>) -> io::Result<()> { + self.depth += 1; + self.delim("[", "]", f)?; + self.depth -= 1; + Ok(()) + } + + pub fn angle(&mut self, f: impl FnOnce(&mut Self) -> io::Result<()>) -> io::Result<()> { + self.depth += 1; + self.delim("<", ">", f)?; + self.depth -= 1; + Ok(()) + } + + pub fn annot(&mut self, f: impl FnOnce(&mut Self) -> io::Result<()>) -> io::Result<()> { + self.lit(": ")?; + f(self) + } +} diff --git a/arc-lang/crates/compiler/infra/diagnostics/Cargo.toml b/arc-lang/crates/compiler/infra/diagnostics/Cargo.toml new file mode 100644 index 000000000..68cf8b623 --- /dev/null +++ b/arc-lang/crates/compiler/infra/diagnostics/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "diagnostics" +version.workspace = true +edition.workspace = true + +[dependencies] +info.workspace = true +ariadne.workspace = true +config.workspace = true +sources.workspace = true +backtrace.workspace = true +syn.workspace = true diff --git a/arc-lang/crates/compiler/infra/diagnostics/src/builder.rs b/arc-lang/crates/compiler/infra/diagnostics/src/builder.rs new file mode 100644 index 000000000..f0dc275ac --- /dev/null +++ b/arc-lang/crates/compiler/infra/diagnostics/src/builder.rs @@ -0,0 +1,52 @@ +use std::borrow::Cow; + +use info::Info; + +pub struct DiagnosticAt { + text: Cow<'static, str>, + info: Info, +} + +pub struct DiagnosticAtAnd { + text0: Cow<'static, str>, + info0: Info, + text1: Cow<'static, str>, + info1: Info, +} + +pub trait DiagnoseAt { + fn at(self, info: Info) -> DiagnosticAt; +} + +impl DiagnoseAt for &'static str { + fn at(self, info: Info) -> DiagnosticAt { + DiagnosticAt { + text: self.into(), + info, + } + } +} + +impl DiagnoseAt for String { + fn at(self, info: Info) -> DiagnosticAt { + DiagnosticAt { + text: self.into(), + info, + } + } +} + +trait DiagnoseAtAnd { + fn and(self, info: Info) -> DiagnosticAtAnd; +} + +impl DiagnosticAt { + pub fn and(self, text1: &'static str, info1: Info) -> DiagnosticAtAnd { + DiagnosticAtAnd { + text0: self.text, + info0: self.info, + text1: text1.into(), + info1: self.info, + } + } +} diff --git a/arc-lang/crates/compiler/infra/diagnostics/src/lib.rs b/arc-lang/crates/compiler/infra/diagnostics/src/lib.rs new file mode 100644 index 000000000..d88205504 --- /dev/null +++ b/arc-lang/crates/compiler/infra/diagnostics/src/lib.rs @@ -0,0 +1,769 @@ +#![allow(unused)] + +mod builder; + +use std::borrow::Cow; +use std::fmt::Display; +use std::path::PathBuf; + +use ariadne::Cache; +use ariadne::Label; +use ariadne::Report; +use ariadne::ReportKind; +use ariadne::Source; +use config::Config; +use info::Info; +use sources::Sources; + +#[derive(Debug, Clone, Default)] +pub struct Diagnostics { + pub backtrace: bool, + pub failfast: bool, + pub(crate) errors: Vec, + pub(crate) warnings: Vec, + pub(crate) hints: Vec, +} + +impl Diagnostics { + pub fn new(backtrace: bool, failfast: bool) -> Self { + Self { + backtrace, + failfast, + errors: Vec::new(), + warnings: Vec::new(), + hints: Vec::new(), + } + } + + #[track_caller] + pub fn push_error(&mut self, error: Error) { + if self.backtrace { + println!("{}", std::panic::Location::caller()); + } + if self.failfast { + println!("{:?}", error); + std::process::exit(1); + } + self.errors.push(error); + } + + pub fn push_warning(&mut self, warning: Warning) { + self.warnings.push(warning); + } + + pub fn push_hint(&mut self, hint: Hint) { + self.hints.push(hint); + } + + pub fn has_errors(&self) -> bool { + !self.errors.is_empty() + } + + pub fn has_warnings(&self) -> bool { + !self.warnings.is_empty() + } + + pub fn has_hints(&self) -> bool { + !self.hints.is_empty() + } + + pub fn is_empty(&self) -> bool { + self.errors.is_empty() && self.warnings.is_empty() && self.hints.is_empty() + } + + pub fn report_if_some(&mut self, sources: &mut Sources, opt: &Config) { + if self.has_errors() { + self.emit_errors(sources, opt); + } + if self.has_warnings() { + self.emit_warnings(sources, opt); + } + if self.has_hints() { + self.emit_hints(sources, opt); + } + } + + pub fn emit(&mut self, sources: &mut Sources, opt: &Config) { + self.emit_errors(sources, opt); + if opt.show.warnings { + self.emit_warnings(sources, opt); + } + if opt.show.hints { + self.emit_hints(sources, opt); + } + } + + pub fn emit_errors(&mut self, sources: &mut Sources, opt: &Config) { + for error in self.errors.drain(..) { + if error.emit(sources).is_none() { + eprintln!("Internal Compiler Error: {:?}", error); + } + } + } + + pub fn emit_warnings(&mut self, sources: &mut Sources, opt: &Config) { + for warning in self.warnings.drain(..) { + if warning.emit(sources).is_none() { + eprintln!("Internal Compiler Warning: {:?}", warning); + } + } + } + + pub fn emit_hints(&mut self, sources: &mut Sources, opt: &Config) { + for hint in self.hints.drain(..) { + if hint.emit(sources).is_none() { + eprintln!("Internal Compiler Hint: {:?}", hint); + } + } + } + + pub fn append(&mut self, other: &mut Self) { + self.errors.append(&mut other.errors); + self.warnings.append(&mut other.warnings); + self.hints.append(&mut other.hints); + } + + pub fn take(&mut self) -> Self { + Self { + backtrace: self.backtrace, + failfast: self.failfast, + errors: std::mem::take(&mut self.errors), + warnings: std::mem::take(&mut self.warnings), + hints: std::mem::take(&mut self.hints), + } + } +} + +/// Compile-time info reported by the compiler. +#[derive(Debug, Clone)] +pub enum Hint {} + +/// Compile-time warnings reported by the compiler. +#[derive(Debug, Clone)] +pub enum Warning { + UnusedVariable { + /// Name of the unused variable. + name: String, + /// Location of the unused variable. + info: Info, + }, + ShadowedVariable { + info0: Info, + info1: Info, + }, +} + +/// Compile-time errors reported by the compiler. +#[derive(Debug, Clone)] +pub enum Error { + /// Error when the importer fails to find a source file. + FileNotFound { + path: PathBuf, + }, + + /// Error when the lexer comes across an invalid token. + LexerInvalidToken { + /// Location of the error. + info: Info, + err: LexerError, + }, + + /// Error when the parser comes across an extra token. + ParserExtraToken { + /// Extra token found while parsing. + found: String, + /// Location of the error. + info: Info, + }, + + /// Error when the parser comes across an unrecognized end-of-file. + ParserUnrecognizedEof { + /// Location of the error. + info: Info, + /// List of tokens expected by LALRPOP. + expected: Vec, + }, + + /// Error when the parser comes across an unrecognized token. + ParserUnrecognizedToken { + /// Unrecognized token found while parsing. + found: String, + /// Location of the token. + info: Info, + /// List of tokens expected by LALRPOP. + expected: Vec, + }, + + DuplicateMetaKey { + /// Location of the error. + info: Info, + /// Name of the duplicate key. + key: String, + }, + + GenericWithArgs { + /// Location of the error. + info: Info, + /// Name of the generic type. + name: String, + }, + + UnresolvedTypeName { + /// Location of the error. + info: Info, + /// Name of the unresolved type. + name: String, + }, + + ExpectedVariant { + info: Info, + }, + + /// Error when two types fail to unify. + TypeMismatch { + /// First type. + lhs: String, + /// Second type. + rhs: String, + /// Location of the error. + info: Info, + }, + + /// Error when a match is non-exhaustive. + NonExhaustiveMatch { + /// Location of the error. + info: Info, + }, + + /// Error when two items in the same namespace have the same name. + NameClash { + info0: Info, + info1: Info, + }, + + /// Error when a struct contains two fields with the same name. + DuplicateRow { + info: Info, + }, + + /// Error when placing a type in value position. + TypeInValuePosition { + info: Info, + }, + + /// Error when placing a value in type position. + ValueInTypePosition { + info: Info, + }, + + /// Error when a function is expected, but a type or class is found. + ExpectedFunction { + info: Info, + }, + + /// Error when a path cannot be resolved. + UnresolvedName { + info: Info, + }, + + ExpectedPlaceExpr { + info: Info, + }, + UnexpectedTypeArgs { + info: Info, + }, + + ExpectedVar { + info: Info, + }, + DuplicateVariant { + info: Info, + }, + BreakOutsideInfiniteLoop { + info: Info, + }, + BreakOutsideLoop { + info: Info, + }, + ContinueOutsideLoop { + info: Info, + }, + GenericError { + info: Info, + text: Cow<'static, str>, + }, + InfiniteType { + info: Info, + t: String, + }, + WrongNumberOfTypeArgs { + name: String, + expected: usize, + found: usize, + info0: Info, + info1: Info, + }, + UncompileableCode { + info: Info, + msg: &'static str, + }, + ExpectedVarOrVal { + info: Info, + }, + NameNotFound { + info: Info, + name: String, + }, + ExpectedIrrefutablePattern { + info: Info, + }, + RowNotFound { + info: Info, + x: String, + }, + InterpreterError { + info: Info, + s: &'static str, + }, + WrongNumberOfArguments { + info: Info, + expected: usize, + found: usize, + }, + SynError { + info: Info, + e: syn::Error, + }, +} + +impl Hint { + fn emit(&self, _sources: &mut Sources) -> Option<()> { + Some(()) + } +} + +impl Warning { + fn emit(&self, sources: &mut Sources) -> Option<()> { + match self { + Warning::UnusedVariable { name, info } => { + Report::build(ReportKind::Warning, info.id()?, 0) + .with_message("Unused variable") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Variable `{name}` is unused")), + ) + .finish() + .eprint(sources) + .ok()?; + } + Warning::ShadowedVariable { info0, info1 } => { + Report::build(ReportKind::Warning, info0.id()?, 0) + .with_message("Shadowed variable") + .with_label( + Label::new((info0.id()?, info0.span())) + .with_message(&format!("Variable is shadowed")), + ) + .with_label( + Label::new((info1.id()?, info1.span())) + .with_message(&format!("Shadowed by this variable")), + ) + .finish() + .eprint(sources) + .ok()?; + } + }; + Some(()) + } +} + +impl Error { + pub fn emit(&self, sources: &mut Sources) -> Option<()> { + match self { + Error::FileNotFound { path } => { + eprintln!("File not found: {}", path.display()) + } + Error::ParserExtraToken { found, info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Unused variable") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Variable `{}` is unused", "")), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::LexerInvalidToken { info, err } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Invalid token") + .with_label(Label::new((info.id()?, info.span())).with_message(err)) + .finish() + .eprint(sources) + .ok()?; + } + Error::ParserUnrecognizedEof { info, expected } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Unexpected end of file") + .with_label( + Label::new((info.id()?, info.span())) + .with_message("Unexpected end of file"), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::ParserUnrecognizedToken { + found, + info, + expected, + } => { + let e = expected + .iter() + .take(10) + .map(String::as_str) + .collect::>() + .join(", "); + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Unexpected token") + .with_label(Label::new((info.id()?, info.span())).with_message( + &if expected.len() > 10 { + format!(r#"Unexpected token "{found}", expected: {e}, ..."#) + } else { + format!(r#"Unexpected token "{found}", expected: {e}"#) + }, + )) + .finish() + .eprint(sources) + .ok()?; + } + Error::DuplicateMetaKey { info, key } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Duplicate meta key") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Duplicate meta key `{}`", key)), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::GenericWithArgs { info, name } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Generic type with arguments") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Generic type `{}` with arguments", name)), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::UnresolvedTypeName { info, name } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Unresolved type name") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Unresolved type name `{}`", name)), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::ExpectedVariant { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Expected variant") + .with_label( + Label::new((info.id()?, info.span())).with_message("Expected variant"), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::ExpectedPlaceExpr { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Expected place expression") + .with_label( + Label::new((info.id()?, info.span())).with_message( + "Expected place expression, e.g., `x` or `x.y` or `x[0]`", + ), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::UnexpectedTypeArgs { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Unexpected type arguments") + .with_label( + Label::new((info.id()?, info.span())) + .with_message("Unexpected type arguments"), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::ExpectedVar { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Expected variable") + .with_label( + Label::new((info.id()?, info.span())).with_message("Expected variable"), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::TypeMismatch { lhs, rhs, info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Type mismatch") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Expected `{}`, found `{}`", lhs, rhs)), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::NonExhaustiveMatch { info: _ } => todo!(), + Error::NameClash { info0, info1 } => { + Report::build(ReportKind::Error, info0.id()?, info0.span().start) + .with_message("Name clash") + .with_label( + Label::new((info0.id()?, info0.span())) + .with_message("Name already defined in this scope."), + ) + .with_label(Label::new((info1.id()?, info1.span())).with_message("Here.")) + .finish() + .eprint(sources) + .ok()?; + } + Error::DuplicateVariant { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Duplicate variant") + .with_label( + Label::new((info.id()?, info.span())).with_message("Duplicate variant"), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::BreakOutsideLoop { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Break outside loop") + .with_label( + Label::new((info.id()?, info.span())).with_message("Break outside loop"), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::BreakOutsideInfiniteLoop { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Break with argument outside infinite loop") + .with_label( + Label::new((info.id()?, info.span())) + .with_message("Break with argument outside infinite loop"), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::ContinueOutsideLoop { info } => todo!(), + Error::DuplicateRow { info: _ } => todo!(), + Error::TypeInValuePosition { info: _ } => todo!(), + Error::ValueInTypePosition { info: _ } => todo!(), + Error::ExpectedFunction { info: _ } => todo!(), + Error::UnresolvedName { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Unresolved name") + .with_label( + Label::new((info.id()?, info.span())).with_message("Unresolved name"), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::GenericError { info, text } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Generic error") + .with_label(Label::new((info.id()?, info.span())).with_message(text)) + .finish() + .eprint(sources) + .ok()?; + } + Error::InfiniteType { info, t } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Infinite type") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Infinite type: `{}`", t)), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::WrongNumberOfTypeArgs { + name, + expected, + found, + info0, + info1, + } => { + Report::build(ReportKind::Error, info0.id()?, info0.span().start) + .with_message("Wrong number of type arguments") + .with_label( + Label::new((info0.id()?, info0.span())).with_message(&format!( + "`{}` expected `{}`, found `{}`", + name, expected, found + )), + ) + .with_label(Label::new((info1.id()?, info1.span())).with_message("Here.")) + .finish() + .eprint(sources) + .ok()?; + } + Error::UncompileableCode { info, msg } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Found un-compileable code") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(format!("This code cannot (yet) be compiled. {msg}.")), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::ExpectedVarOrVal { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Expected `var` or `val`") + .with_label( + Label::new((info.id()?, info.span())) + .with_message("Expected `var` or `val`, found this."), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::NameNotFound { info, name } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Name not found") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Name `{}` not found", name)), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::ExpectedIrrefutablePattern { info } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Expected irrefutable pattern") + .with_label( + Label::new((info.id()?, info.span())) + .with_message("Expected irrefutable pattern"), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::RowNotFound { info, x } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Row not found") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Row `{}` not found", x)), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::InterpreterError { info, s } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Interpreter error") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Interpreter error: `{}`", s)), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::WrongNumberOfArguments { + info, + expected, + found, + } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Wrong number of arguments") + .with_label( + Label::new((info.id()?, info.span())) + .with_message(&format!("Expected {}, found {}", expected, found)), + ) + .finish() + .eprint(sources) + .ok()?; + } + Error::SynError { info, e } => { + Report::build(ReportKind::Error, info.id()?, info.span().start) + .with_message("Syntax error") + .with_label( + Label::new((info.id()?, info.span())).with_message(&format!("{}", e)), + ) + .finish() + .eprint(sources) + .ok()?; + } + }; + Some(()) + } +} + +#[derive(Debug, Clone, PartialEq)] +pub enum LexerError { + ParseBoolError(std::str::ParseBoolError), + ParseCharError(std::char::ParseCharError), + ParseFloatError(std::num::ParseFloatError), + ParseIntError(std::num::ParseIntError), + InvalidToken, +} + +impl Default for LexerError { + fn default() -> Self { + Self::InvalidToken + } +} + +impl From for LexerError { + fn from(err: std::str::ParseBoolError) -> Self { + Self::ParseBoolError(err) + } +} + +impl From for LexerError { + fn from(err: std::char::ParseCharError) -> Self { + Self::ParseCharError(err) + } +} + +impl From for LexerError { + fn from(err: std::num::ParseFloatError) -> Self { + Self::ParseFloatError(err) + } +} + +impl From for LexerError { + fn from(err: std::num::ParseIntError) -> Self { + Self::ParseIntError(err) + } +} + +impl Display for LexerError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::ParseBoolError(err) => write!(f, "Invalid token: {}", err), + Self::ParseCharError(err) => write!(f, "Invalid token: {}", err), + Self::ParseFloatError(err) => write!(f, "Invalid token: {}", err), + Self::ParseIntError(err) => write!(f, "Invalid token: {}", err), + Self::InvalidToken => write!(f, "Invalid token"), + } + } +} diff --git a/arc-lang/crates/compiler/infra/info/Cargo.toml b/arc-lang/crates/compiler/infra/info/Cargo.toml new file mode 100644 index 000000000..52248581a --- /dev/null +++ b/arc-lang/crates/compiler/infra/info/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "info" +version.workspace = true +edition.workspace = true + +[dependencies] +text-size.workspace = true diff --git a/arc-lang/crates/compiler/infra/info/src/lib.rs b/arc-lang/crates/compiler/infra/info/src/lib.rs new file mode 100644 index 000000000..37222ccf7 --- /dev/null +++ b/arc-lang/crates/compiler/infra/info/src/lib.rs @@ -0,0 +1,65 @@ +use std::ops::Range; + +use text_size::TextRange; +use text_size::TextSize; + +/// A structure which keeps the start and end position of an AST node plus its source. +pub type Spanned = (T, Info); + +/// An index of a character in a source. +pub type ByteIndex = TextSize; + +/// A span between two characters in a source. +pub type Span = TextRange; + +/// An identifier of a source. Can be used to access the source code of the source. +pub type SourceId = usize; + +/// Stores a code location. +#[derive(Debug, Clone, Copy)] +pub enum Info { + Source { id: SourceId, span: Span }, + Builtin, +} + +impl Info { + pub fn new(id: SourceId, start: ByteIndex, end: ByteIndex) -> Self { + Self::Source { + id, + span: Span::new(start, end), + } + } + + /// Constructs a source from an id and a byte index range. + pub fn from_range(id: SourceId, range: Range) -> Self { + Self::Source { + id, + span: Span::new(range.start, range.end), + } + } + + /// Joins two locations into a potentially larger location. + pub fn join(self, other: Self) -> Self { + match (self, other) { + (Self::Source { id, span }, Self::Source { span: span2, .. }) => Self::Source { + id, + span: span.cover(span2), + }, + (Self::Builtin, x) | (x, Self::Builtin) => x, + } + } + + pub fn span(self) -> Range { + match self { + Self::Source { span, .. } => span.start().into()..span.end().into(), + Self::Builtin => 0..0, + } + } + + pub fn id(self) -> Option { + match self { + Self::Source { id, .. } => Some(id), + Self::Builtin => None, + } + } +} diff --git a/arc-lang/crates/compiler/infra/kafka/Cargo.toml b/arc-lang/crates/compiler/infra/kafka/Cargo.toml new file mode 100644 index 000000000..e55047762 --- /dev/null +++ b/arc-lang/crates/compiler/infra/kafka/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "kafka" +version.workspace = true +edition.workspace = true + +[dependencies] +rdkafka.workspace = true +tokio.workspace = true +anyhow.workspace = true diff --git a/arc-lang/crates/compiler/infra/kafka/src/context.rs b/arc-lang/crates/compiler/infra/kafka/src/context.rs new file mode 100644 index 000000000..bba10a288 --- /dev/null +++ b/arc-lang/crates/compiler/infra/kafka/src/context.rs @@ -0,0 +1,58 @@ +#![allow(unused)] + +use std::time::Duration; + +use anyhow::Result; +use rdkafka::config::ClientConfig; +use rdkafka::consumer::stream_consumer::StreamConsumer; +use rdkafka::consumer::Consumer; +use rdkafka::producer::FutureProducer; +use rdkafka::util::Timeout; + +pub struct Context { + pub consumer: StreamConsumer, + pub producer: FutureProducer, + pub broker: String, +} + +impl std::fmt::Debug for Context { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Context").finish() + } +} + +impl Context { + pub fn new(broker: Option) -> Result { + let broker = broker.unwrap_or("localhost:9092".to_string()); + let producer: FutureProducer = ClientConfig::new() + .set("bootstrap.servers", broker.clone()) + .create()?; + let consumer: StreamConsumer = ClientConfig::new() + .set("group.id", "kafka-cli") + .set("bootstrap.servers", broker.clone()) + .create()?; + let metadata = + consumer.fetch_metadata(None, Timeout::After(Duration::from_millis(1000)))?; + Ok(Self { + consumer, + producer, + broker, + }) + } + + pub fn list(&self) -> Result<()> { + let metadata = self + .consumer + .fetch_metadata(None, Timeout::After(Duration::from_millis(1000)))?; + + eprintln!("Kafka Topics:"); + for topic in metadata.topics() { + eprintln!( + "* {} {} partition(s)", + topic.name(), + topic.partitions().len() + ); + } + Ok(()) + } +} diff --git a/arc-lang/crates/compiler/infra/kafka/src/lib.rs b/arc-lang/crates/compiler/infra/kafka/src/lib.rs new file mode 100644 index 000000000..9efb2ab19 --- /dev/null +++ b/arc-lang/crates/compiler/infra/kafka/src/lib.rs @@ -0,0 +1 @@ +pub mod context; diff --git a/arc-lang/crates/compiler/infra/name-gen/Cargo.toml b/arc-lang/crates/compiler/infra/name-gen/Cargo.toml new file mode 100644 index 000000000..a3899cf7d --- /dev/null +++ b/arc-lang/crates/compiler/infra/name-gen/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "name-gen" +version.workspace = true +edition.workspace = true + +[dependencies] diff --git a/arc-lang/crates/compiler/infra/name-gen/src/lib.rs b/arc-lang/crates/compiler/infra/name-gen/src/lib.rs new file mode 100644 index 000000000..f8412fba3 --- /dev/null +++ b/arc-lang/crates/compiler/infra/name-gen/src/lib.rs @@ -0,0 +1,21 @@ +type Name = String; + +#[derive(Clone, Debug)] +pub struct NameGen { + base: String, + next: usize, +} + +impl NameGen { + pub fn new(base: impl Into) -> Self { + NameGen { + base: base.into(), + next: 0, + } + } + pub fn fresh(&mut self) -> Name { + let uid = self.next; + self.next += 1; + Name::from(format!("{}{}", self.base, uid)) + } +} diff --git a/arc-lang/crates/compiler/infra/sources/Cargo.toml b/arc-lang/crates/compiler/infra/sources/Cargo.toml new file mode 100644 index 000000000..72b5b2e89 --- /dev/null +++ b/arc-lang/crates/compiler/infra/sources/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "sources" +version.workspace = true +edition.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +ariadne.workspace = true diff --git a/arc-lang/crates/compiler/infra/sources/src/lib.rs b/arc-lang/crates/compiler/infra/sources/src/lib.rs new file mode 100644 index 000000000..44d6f742d --- /dev/null +++ b/arc-lang/crates/compiler/infra/sources/src/lib.rs @@ -0,0 +1,51 @@ +use std::fmt::Debug; +use std::fmt::Display; + +use ariadne::Cache; +use ariadne::Source; + +#[derive(Default)] +pub struct Sources { + sources: Vec<(String, Source)>, +} + +impl Sources { + pub fn new() -> Self { + Self { sources: vec![] } + } + pub fn add(&mut self, name: impl Into, source: impl Into) -> usize { + let id = self.sources.len(); + self.sources + .push((name.into(), Source::from(source.into()))); + id + } + pub fn len(&self) -> usize { + self.sources.len() + } +} + +impl std::fmt::Debug for Sources { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Sources") + .field( + "sources", + &self.sources.iter().map(|x| &x.0).collect::>(), + ) + .finish() + } +} + +impl Cache for Sources { + fn fetch(&mut self, id: &usize) -> Result<&Source, Box> { + self.sources.get(*id).map(|x| &x.1).ok_or_else(|| { + Box::new(format!("Source with id {} not found in cache", id)) + as Box + }) + } + + fn display<'a>(&self, id: &'a usize) -> Option> { + self.sources + .get(*id) + .map(|x| Box::new(x.0.clone()) as Box) + } +} diff --git a/arc-lang/crates/compiler/infra/stack/Cargo.toml b/arc-lang/crates/compiler/infra/stack/Cargo.toml new file mode 100644 index 000000000..4eec02771 --- /dev/null +++ b/arc-lang/crates/compiler/infra/stack/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "stack" +version.workspace = true +edition.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/arc-lang/crates/compiler/infra/stack/src/lib.rs b/arc-lang/crates/compiler/infra/stack/src/lib.rs new file mode 100644 index 000000000..5fba4fb50 --- /dev/null +++ b/arc-lang/crates/compiler/infra/stack/src/lib.rs @@ -0,0 +1,108 @@ +#![allow(unused)] + +#[derive(Clone, Debug)] +pub struct Stack(Vec>); + +pub type Name = String; + +#[derive(Clone, Debug)] +pub struct Scope { + pub kind: K, + pub expr_namespace: Namespace, + pub type_namespace: Namespace, +} + +impl Scope { + fn new(kind: K) -> Self { + Scope { + kind, + expr_namespace: Namespace::new(), + type_namespace: Namespace::new(), + } + } +} + +#[derive(Clone, Debug)] +pub struct Namespace(Vec<(Name, D)>); + +impl Namespace { + pub fn new() -> Self { + Self(vec![]) + } + + fn bind(&mut self, x: Name, decl: D) { + self.0.push((x, decl)); + } + + pub fn find(&self, x0: &Name) -> Option<&D> { + self.0 + .iter() + .rev() + .find_map(|(x1, decl)| if x0 == x1 { Some(decl) } else { None }) + } + + fn find_mut(&mut self, x0: &Name) -> Option<&mut D> { + self.0 + .iter_mut() + .rev() + .find_map(|(x1, decl)| if x0 == x1 { Some(decl) } else { None }) + } + + pub fn iter(&self) -> impl Iterator { + self.0.iter().rev() + } +} + +impl Stack { + pub fn new(kind: K) -> Self { + Self(vec![Scope::new(kind)]) + } + + pub fn depth(&self) -> usize { + self.0.len() + } + + pub fn iter(&self) -> impl Iterator> { + self.0.iter().rev() + } + + pub fn iter_mut(&mut self) -> impl Iterator> { + self.0.iter_mut().rev() + } + + pub fn current(&mut self) -> &mut K { + &mut self.0.last_mut().unwrap().kind + } + + pub fn push_scope(&mut self, kind: K) { + self.0.push(Scope::new(kind)); + } + + pub fn pop_scope(&mut self) -> K { + self.0.pop().expect("ICE: Tried to pop empty scope").kind + } + + pub fn bind_expr_decl(&mut self, x: Name, decl: E) { + self.0.last_mut().unwrap().expr_namespace.bind(x, decl); + } + + pub fn bind_type_decl(&mut self, x: Name, decl: T) { + self.0.last_mut().unwrap().type_namespace.bind(x, decl); + } + + pub fn find_expr_decl(&self, x0: &Name) -> Option { + self.iter().find_map(|s| s.expr_namespace.find(x0).cloned()) + } + + pub fn find_type_decl(&self, x0: &Name) -> Option { + self.iter().find_map(|s| s.type_namespace.find(x0).cloned()) + } + + pub fn find_expr_decl_mut(&mut self, x0: &Name) -> Option<&mut E> { + self.iter_mut().find_map(|s| s.expr_namespace.find_mut(x0)) + } + + pub fn find_type_decl_mut(&mut self, x0: &Name) -> Option<&mut T> { + self.iter_mut().find_map(|s| s.type_namespace.find_mut(x0)) + } +} diff --git a/arc-lang/crates/compiler/infra/utils/Cargo.toml b/arc-lang/crates/compiler/infra/utils/Cargo.toml new file mode 100644 index 000000000..c42c7dc89 --- /dev/null +++ b/arc-lang/crates/compiler/infra/utils/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "utils" +version.workspace = true +edition.workspace = true + +[dependencies] +im-rc.workspace = true diff --git a/arc-lang/crates/compiler/infra/utils/src/lib.rs b/arc-lang/crates/compiler/infra/utils/src/lib.rs new file mode 100644 index 000000000..f4efce4ee --- /dev/null +++ b/arc-lang/crates/compiler/infra/utils/src/lib.rs @@ -0,0 +1,209 @@ +use im_rc::OrdMap; +use im_rc::Vector; + +pub trait VectorUtils { + fn mapm(self, ctx: &mut C, f: impl FnMut(&mut C, T0) -> T1) -> Vector + where + T1: Clone; + + fn zip(&self, other: &Vector) -> Vector<(T0, T1)> + where + T1: Clone; + + fn filter_mapm(self, ctx: &mut C, f: impl FnMut(&mut C, T0) -> Option) -> Vector + where + T1: Clone; + + fn map(self, f: impl FnMut(T0) -> T1) -> Vector + where + T1: Clone; + + fn concat(self, other: Vector) -> Vector; +} + +pub trait AssocVectorUtils { + fn mapm_assoc(self, ctx: &mut C, f: impl FnMut(&mut C, T0) -> T1) -> Vector<(K, T1)> + where + K: Clone, + T1: Clone; + + fn find_assoc(&self, k: &K) -> Option<&T0> + where + K: Clone + PartialEq, + T0: Clone; + + fn remove_assoc(&mut self, k: &K) -> Option + where + K: Clone + PartialEq, + T0: Clone; +} + +impl AssocVectorUtils for Vector<(K, T0)> +where + K: Clone, + T0: Clone, +{ + fn mapm_assoc(self, ctx: &mut C, mut f: impl FnMut(&mut C, T0) -> T1) -> Vector<(K, T1)> + where + K: Clone, + T1: Clone, + { + self.map(|(k, v)| (k, f(ctx, v))) + } + + fn find_assoc(&self, k: &K) -> Option<&T0> + where + K: Clone + PartialEq, + T0: Clone, + { + self.iter() + .find_map(|(k1, v)| if k1 == k { Some(v) } else { None }) + } + + fn remove_assoc(&mut self, k: &K) -> Option + where + K: Clone + PartialEq, + T0: Clone, + { + for (i, (k1, _)) in self.iter().enumerate() { + if k1 == k { + let (_, v) = self.remove(i); + return Some(v); + } + } + None + } +} + +impl VectorUtils for Vector +where + T0: Clone, +{ + fn mapm(self, ctx: &mut C, mut f: impl FnMut(&mut C, T0) -> T1) -> Vector + where + T1: Clone, + { + let mut v = Vector::new(); + for x in self { + let y = f(ctx, x); + v.push_back(y); + } + v + } + + fn zip(&self, other: &Vector) -> Vector<(T0, T1)> + where + T1: Clone, + { + self.clone() + .into_iter() + .zip(other.clone().into_iter()) + .map(|(x, y)| (x, y)) + .collect() + } + + fn filter_mapm( + self, + ctx: &mut C, + mut f: impl FnMut(&mut C, T0) -> Option, + ) -> Vector + where + T1: Clone, + { + let mut v = Vector::new(); + for x in self { + let y = f(ctx, x); + if let Some(y) = y { + v.push_back(y); + } + } + v + } + + fn map(self, f: impl FnMut(T0) -> T1) -> Vector + where + T1: Clone, + { + self.into_iter().map(f).collect() + } + + fn concat(mut self, other: Vector) -> Vector { + self.append(other); + self + } +} + +pub trait OrdMapUtils { + fn to_vector(self) -> Vector<(K0, T0)> + where + K0: Clone, + T0: Clone; + fn mapm(self, ctx: C, f: F) -> (C, OrdMap) + where + F: Fn(C, T0) -> (C, T1), + T1: Clone; +} + +impl OrdMapUtils for OrdMap +where + K0: std::hash::Hash + Eq + Clone + std::cmp::Ord, + T0: Clone, +{ + fn to_vector(self) -> Vector<(K0, T0)> + where + K0: Clone, + T0: Clone, + { + self.into_iter().collect() + } + fn mapm(self, mut ctx: C, f: F) -> (C, OrdMap) + where + F: Fn(C, T0) -> (C, T1), + T1: Clone, + { + let mut map = OrdMap::new(); + for (k, v) in self.into_iter() { + let (ctx1, v1) = f(ctx, v); + ctx = ctx1; + map.insert(k, v1); + } + (ctx, map) + } +} + +pub trait OptionUtils { + fn mapm(self, ctx: &mut C, f: F) -> Option + where + F: FnMut(&mut C, T0) -> T1; + + fn mapm_or_else(self, ctx: &mut C, f: F, g: G) -> T1 + where + F: FnMut(&mut C, T0) -> T1, + G: FnMut(&mut C) -> T1; +} + +impl OptionUtils for Option { + fn mapm(self, ctx: &mut C, mut f: F) -> Option + where + F: FnMut(&mut C, T0) -> T1, + { + match self { + None => None, + Some(x) => { + let y = f(ctx, x); + Some(y) + } + } + } + + fn mapm_or_else(self, ctx: &mut C, mut f: F, mut g: G) -> T1 + where + F: FnMut(&mut C, T0) -> T1, + G: FnMut(&mut C) -> T1, + { + match self { + None => g(ctx), + Some(x) => f(ctx, x), + } + } +} diff --git a/arc-lang/crates/compiler/irs/ast/Cargo.toml b/arc-lang/crates/compiler/irs/ast/Cargo.toml new file mode 100644 index 000000000..6374adef7 --- /dev/null +++ b/arc-lang/crates/compiler/irs/ast/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "ast" +version.workspace = true +edition.workspace = true + +[dependencies] +info.workspace = true +codegen.workspace = true +im-rc.workspace = true +lexer.workspace = true +syn.workspace = true diff --git a/arc-lang/crates/compiler/irs/ast/src/lib.rs b/arc-lang/crates/compiler/irs/ast/src/lib.rs new file mode 100644 index 000000000..bbe360cec --- /dev/null +++ b/arc-lang/crates/compiler/irs/ast/src/lib.rs @@ -0,0 +1,362 @@ +#![allow(unused)] + +use im_rc::Vector; +use info::Info; +use lexer::tokens::Token; +use std::rc::Rc; + +pub mod ops; + +pub use Splice::*; +#[derive(Clone, Debug)] +pub enum Splice { + SName(Name), + SBlock(Block), +} + +pub type Name = String; +pub type Arm = (Pattern, Expr); + +pub type Index = i32; + +pub use ExprField::*; +#[derive(Clone, Debug)] +pub enum ExprField { + FName(Name, Option), + FExpr(Expr, Name), +} + +pub use Body::*; +#[derive(Clone, Debug)] +pub enum Body { + BBlock(Block), + BExpr(Expr), +} + +#[derive(Clone, Debug)] +pub struct Block { + pub ss: Vector, + pub e: Option, + pub info: Info, +} + +pub type Generic = Name; + +pub type Meta = Vector; + +#[derive(Clone, Debug)] +pub struct Attr { + pub x: Name, + pub c: Option, + pub info: Info, +} +pub type Bound = (Name, Vector); + +pub use UseSuffix::*; +#[derive(Clone, Debug)] +pub enum UseSuffix { + UAlias(Name), + UGlob, +} + +#[derive(Clone, Debug)] +pub struct Pattern { + pub info: Info, + pub kind: Rc, +} + +pub use PatternKind::*; +#[derive(Clone, Debug)] +pub enum PatternKind { + PParen(Pattern), + PIgnore, + POr(Pattern, Pattern), + PTypeAnnot(Pattern, Type), + PRecord(Vector<(Name, Option)>), + PRecordConcat(Pattern, Pattern), + PTuple(Vector), + PArray(Vector), + PArrayConcat(Pattern, Pattern), + PConst(Const), + PName(Name), + PVariantRecord(Name, Vector<(Name, Option)>), + PVariantTuple(Name, Vector), + PError, +} + +#[derive(Clone, Debug)] +pub struct Type { + pub info: Info, + pub kind: Rc, +} + +pub use TypeKind::*; +#[derive(Clone, Debug)] +pub enum TypeKind { + TParen(Type), + TFun(Vector, Type), + TTuple(Vector), + TRecord(Vector<(Name, Type)>), + TRecordConcat(Type, Type), + TName(Name, Vector), + TArray(Type, Option), + TArrayConcat(Type, Type), + TUnit, + TNever, + TIgnore, + TError, +} + +#[derive(Clone, Debug)] +pub struct Binop { + pub token: Token, + pub kind: BinopKind, +} + +pub use BinopKind::*; +#[derive(Clone, Copy, Debug)] +pub enum BinopKind { + BAdd, + BAnd, + BDiv, + BEq, + BGeq, + BGt, + BLeq, + BLt, + BMul, + BNeq, + BOr, + BSub, + BRExc, + BRInc, +} + +impl BinopKind { + pub fn with(self, token: Token) -> Binop { + Binop { token, kind: self } + } +} + +#[derive(Clone, Debug)] +pub struct Unop { + pub token: Token, + pub kind: UnopKind, +} + +pub use UnopKind::*; +#[derive(Clone, Copy, Debug)] +pub enum UnopKind { + UNot, + UNeg, + UPos, +} + +impl UnopKind { + pub fn with(self, token: Token) -> Unop { + Unop { token, kind: self } + } +} + +pub use Lit::*; +#[derive(Clone, Debug)] +pub enum Lit { + LInt(i32, Option), + LFloat(f32, Option), + LBool(bool), + LString(String), + LUnit, + LChar(char), +} + +pub use Const::*; +#[derive(Clone, Debug)] +pub enum Const { + CInt(i32), + CFloat(f32), + CBool(bool), + CString(String), + CUnit, + CChar(char), +} + +pub use StmtKind::*; +#[derive(Clone, Debug)] +pub struct Stmt { + pub info: Info, + pub kind: StmtKind, +} + +#[derive(Clone, Debug)] +pub enum StmtKind { + SDef( + Meta, + Name, + Vector, + Vector, + Option, + Vector, + Body, + ), + SEnum(Meta, Name, Vector, Vector, Vector), + SType(Meta, Name, Vector, Type), + SNoop, + SVal(Pattern, Expr), + SVar(Pattern, Expr), + SExpr(Expr), + SInject(String, String), + // Internal + SBuiltinDef( + Meta, + Name, + Vector, + Vector, + Option, + Vector, + ), + SBuiltinType(Meta, Name, Vector, Vector), + SBuiltinClass(Meta, Name, Vector, Vector), + SBuiltinInstance(Meta, Name, Vector, Vector, Type), +} + +impl StmtKind { + pub fn with(self, info: Info) -> Stmt { + Stmt { info, kind: self } + } +} + +pub use Variant::*; +#[derive(Clone, Debug)] +pub enum Variant { + VUnit(Name), + VRecord(Name, Vector<(Name, Type)>), + VTuple(Name, Vector), +} + +#[derive(Clone, Debug)] +pub struct Expr { + pub info: Info, + pub kind: Rc, +} + +impl Expr { + pub fn kind(&self) -> ExprKind { + (*self.kind).clone() + } +} + +impl ExprKind { + pub fn with(self, info: Info) -> Expr { + Expr { + info, + kind: Rc::new(self), + } + } +} + +impl PatternKind { + pub fn with(self, info: Info) -> Pattern { + Pattern { + info, + kind: Rc::new(self), + } + } +} + +impl TypeKind { + pub fn with(self, info: Info) -> Type { + Type { + info, + kind: Rc::new(self), + } + } +} + +impl Type { + pub fn kind(&self) -> TypeKind { + (*self.kind).clone() + } +} + +impl Pattern { + pub fn kind(&self) -> PatternKind { + (*self.kind).clone() + } +} + +pub use ExprKind::*; +#[derive(Clone, Debug)] +pub enum ExprKind { + EParen(Expr), + EQuery(Pattern, Expr, Vector), + EFunCall(Expr, Vector), + EFunReturn(Option), + EIfElse(Expr, Block, Option), + ELit(Lit), + ELoop(Block), + ELoopBreak(Option), + ELoopContinue, + ERecord(Vector), + ERecordAccess(Expr, Name), + ERecordAccessMulti(Expr, Vector), + ERecordConcat(Expr, Expr), + ETypeAnnot(Expr, Type), + EVariantRecord(Name, Vector), + EDo(Block), + EArray(Vector), + EArrayConcat(Expr, Expr), + EArrayAccess(Expr, Expr), + EBinop(Expr, Binop, Expr), + EMut(Expr, Option, Expr), + EFor(Pattern, Expr, Block), + EFun(Vector, Option, Body), + EMatch(Expr, Vector), + EMethodCall(Expr, Name, Vector, Vector), + EName(Name, Vector), + EThrow(Expr), + ETry(Block, Vector, Option), + ETuple(Vector), + ETupleAccess(Expr, Index), + EUnop(Unop, Expr), + EWhile(Expr, Block), + EError, +} + +pub use QueryStmt::*; +#[derive(Clone, Debug)] +pub enum QueryStmt { + QFrom(Pattern, Expr), + QWhere(Expr), + QWith(Pattern, Expr), + QJoinOn(Pattern, Expr, Expr), + QJoinOver(Pattern, Expr, Expr), + QJoinOverOn(Pattern, Expr, Expr, Expr, Expr, Vector), + QGroup(Expr, Vector, Option), + QCompute(Expr, Option, Option), + QOver(Expr, Vector, Option), + QRoll(Expr, Option, Option), + QSelect(Expr), + QUnion(Expr), + QInto(Expr), + QVal(Pattern, Expr), + QOrder(Expr, Order), +} + +pub use Order::*; +#[derive(Clone, Debug)] +pub enum Order { + OAsc, + ODesc, +} + +impl Stmt { + pub fn kind(&self) -> StmtKind { + self.kind.clone() + } +} + +impl Block { + pub fn new(ss: Vector, e: Option, info: Info) -> Self { + Self { ss, e, info } + } +} diff --git a/arc-lang/crates/compiler/irs/ast/src/ops.rs b/arc-lang/crates/compiler/irs/ast/src/ops.rs new file mode 100644 index 000000000..92302c1c9 --- /dev/null +++ b/arc-lang/crates/compiler/irs/ast/src/ops.rs @@ -0,0 +1,56 @@ +use crate::BinopKind; +use crate::BinopKind::*; +use crate::UnopKind; +use crate::UnopKind::*; + +#[macro_export] +macro_rules! binop { + {+} => {"_add_"}; + {and} => {"_and_"}; + {/} => {"_div_"}; + {==} => {"_eq_"}; + {>=} => {"_geq_"}; + {>} => {"_gt_"}; + {<=} => {"_leq_"}; + {<} => {"_lt_"}; + {*} => {"_mul_"}; + {!=} => {"_neq_"}; + {or} => {"_or_"}; + {-} => {"_sub_"}; + {..} => {"_rexc_"}; + {..=} => {"_rinc_"}; +} + +#[macro_export] +macro_rules! unop { + {+} => {"_pos_"}; + {-} => {"_neg_"}; + {!} => {"_not_"}; +} + +pub const fn unop(kind: UnopKind) -> &'static str { + match kind { + UPos => unop!(+), + UNeg => unop!(-), + UNot => unop!(!), + } +} + +pub const fn binop(kind: BinopKind) -> &'static str { + match kind { + BAdd => binop!(+), + BAnd => binop!(and), + BDiv => binop!(/), + BEq => binop!(==), + BGeq => binop!(>=), + BGt => binop!(>), + BLeq => binop!(<=), + BLt => binop!(<), + BMul => binop!(*), + BNeq => binop!(!=), + BOr => binop!(or), + BSub => binop!(-), + BRExc => binop!(..), + BRInc => binop!(..=), + } +} diff --git a/arc-lang/crates/compiler/irs/flink/Cargo.toml b/arc-lang/crates/compiler/irs/flink/Cargo.toml new file mode 100644 index 000000000..8f7d1bb4b --- /dev/null +++ b/arc-lang/crates/compiler/irs/flink/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "flink" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/arc-lang/crates/compiler/irs/flink/src/lib.rs b/arc-lang/crates/compiler/irs/flink/src/lib.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/arc-lang/crates/compiler/irs/flink/src/lib.rs @@ -0,0 +1 @@ + diff --git a/arc-lang/crates/compiler/irs/hir/Cargo.toml b/arc-lang/crates/compiler/irs/hir/Cargo.toml new file mode 100644 index 000000000..9bac246f7 --- /dev/null +++ b/arc-lang/crates/compiler/irs/hir/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "hir" +version.workspace = true +edition.workspace = true + +[dependencies] +info.workspace = true +codegen.workspace = true +utils.workspace = true +im-rc.workspace = true diff --git a/arc-lang/crates/compiler/irs/hir/src/lib.rs b/arc-lang/crates/compiler/irs/hir/src/lib.rs new file mode 100644 index 000000000..944a2ccff --- /dev/null +++ b/arc-lang/crates/compiler/irs/hir/src/lib.rs @@ -0,0 +1,574 @@ +#![allow(unused)] +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use std::rc::Rc; +use utils::VectorUtils; + +pub type Arm = (Pattern, Block); + +pub type Name = String; +pub type Index = i32; +pub type Generic = Name; +pub type Meta = OrdMap>; + +#[derive(Clone, Debug)] +pub struct Block { + pub ss: Vector, + pub e: Expr, + pub info: Info, +} + +impl Block { + pub fn new(ss: Vector, e: Expr, info: Info) -> Self { + Block { ss, e, info } + } +} + +#[derive(Clone, Debug)] +pub struct Pattern { + pub t: Type, + pub info: Info, + pub kind: Rc, +} + +pub use PatternKind::*; +#[derive(Clone, Debug)] +pub enum PatternKind { + PIgnore, + POr(Pattern, Pattern), + PNoop(Pattern), + PRecord(Vector<(Name, Pattern)>), + PRecordConcat(Pattern, Pattern), + PArray(Vector), + PArrayConcat(Pattern, Pattern), + PTuple(Vector), + PConst(Const), + PVal(Name), + PVar(Name), + PVariant(Name, Vector, Name, Pattern), + PError, +} + +#[derive(Clone, Debug, Eq, PartialEq, Hash, PartialOrd, Ord)] +pub struct Type { + pub kind: Rc, +} + +pub use TypeKind::*; +#[derive(Clone, Debug)] +pub enum TypeKind { + TFun(Vector, Type), + TTuple(Vector, bool), + TRecord(Type), + TNominal(Name, Vector), + TAlias(Info, Info, Type), + TRowEmpty, + TRowExtend((Name, Type), Type), + TRecordConcat(Type, Type), + TGeneric(Name), + TArray(Type, Option), + TArrayConcat(Type, Type), + TUnit, + TNever, + TVar(Name), + TError, +} + +impl Ord for TypeKind { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + self.partial_cmp(other).unwrap_or(std::cmp::Ordering::Less) + } +} + +impl PartialOrd for TypeKind { + fn partial_cmp(&self, other: &Self) -> Option { + match (self, other) { + (TFun(ts0, t0), TFun(ts1, t1)) => ts0.partial_cmp(ts1).and_then(|o| { + if o == std::cmp::Ordering::Equal { + t0.partial_cmp(t1) + } else { + Some(o) + } + }), + (TTuple(ts, c0), TTuple(ts1, c1)) => ts.partial_cmp(ts1).and_then(|o| { + if o == std::cmp::Ordering::Equal { + c0.partial_cmp(c1) + } else { + Some(o) + } + }), + (TRecord(t0), TRecord(t1)) => t0.partial_cmp(t1), + (TNominal(x0, ts0), TNominal(x1, ts1)) => x0.partial_cmp(x1).and_then(|o| { + if o == std::cmp::Ordering::Equal { + ts0.partial_cmp(ts1) + } else { + Some(o) + } + }), + (TAlias(_, _, t0), TAlias(_, _, t1)) => t0.partial_cmp(t1), + (TRowEmpty, TRowEmpty) => Some(std::cmp::Ordering::Equal), + (TRowExtend(xt0, t0), TRowExtend(xt1, t1)) => xt0.partial_cmp(xt1).and_then(|o| { + if o == std::cmp::Ordering::Equal { + t0.partial_cmp(t1) + } else { + Some(o) + } + }), + (TRecordConcat(t00, t01), TRecordConcat(t10, t11)) => { + t00.partial_cmp(t10).and_then(|o| { + if o == std::cmp::Ordering::Equal { + t01.partial_cmp(t11) + } else { + Some(o) + } + }) + } + (TGeneric(x0), TGeneric(x1)) => x0.partial_cmp(x1), + (TArray(t0, n0), TArray(t1, n1)) => t0.partial_cmp(t1).and_then(|o| { + if o == std::cmp::Ordering::Equal { + n0.partial_cmp(n1) + } else { + Some(o) + } + }), + (TArrayConcat(t0, t1), TArrayConcat(t2, t3)) => t0.partial_cmp(t2).and_then(|o| { + if o == std::cmp::Ordering::Equal { + t1.partial_cmp(t3) + } else { + Some(o) + } + }), + (TUnit, TUnit) => Some(std::cmp::Ordering::Equal), + (TNever, TNever) => Some(std::cmp::Ordering::Equal), + (TVar(x0), TVar(x1)) => x0.partial_cmp(x1), + (TError, TError) => Some(std::cmp::Ordering::Equal), + _ => None, + } + } +} + +impl PartialEq for TypeKind { + fn eq(&self, other: &Self) -> bool { + match (self, other) { + (TFun(ts0, t0), TFun(ts1, t1)) => ts0 == ts1 && t0 == t1, + (TTuple(ts, c0), TTuple(ts1, c1)) => ts == ts1 && c0 == c1, + (TRecord(t0), TRecord(t1)) => t0 == t1, + (TNominal(x0, ts0), TNominal(x1, ts1)) => x0 == x1 && ts0 == ts1, + (TAlias(_, _, t0), TAlias(_, _, t1)) => t0 == t1, + (TRowEmpty, TRowEmpty) => true, + (TRowExtend(xt0, t0), TRowExtend(xt1, t1)) => xt0 == xt1 && t0 == t1, + (TRecordConcat(t00, t01), TRecordConcat(t10, t11)) => t00 == t10 && t01 == t11, + (TGeneric(x0), TGeneric(x1)) => x0 == x1, + (TArray(t0, n0), TArray(t1, n1)) => t0 == t1 && n0 == n1, + (TUnit, TUnit) => true, + (TNever, TNever) => true, + (TVar(x0), TVar(x1)) => x0 == x1, + (TError, TError) => true, + _ => false, + } + } +} + +impl Eq for TypeKind {} + +impl std::hash::Hash for TypeKind { + fn hash(&self, state: &mut H) { + match self { + TFun(a, b) => { + state.write_u8(0); + a.hash(state); + b.hash(state); + } + TTuple(a, b) => { + state.write_u8(1); + a.hash(state); + b.hash(state); + } + TRecord(a) => { + state.write_u8(2); + a.hash(state); + } + TNominal(a, b) => { + state.write_u8(3); + a.hash(state); + b.hash(state); + } + TAlias(a, b, c) => { + c.hash(state); + } + TRowEmpty => { + state.write_u8(5); + } + TRowExtend(a, b) => { + state.write_u8(6); + a.hash(state); + b.hash(state); + } + TRecordConcat(a, b) => { + state.write_u8(7); + a.hash(state); + b.hash(state); + } + TGeneric(a) => { + state.write_u8(8); + a.hash(state); + } + TArray(a, b) => { + state.write_u8(9); + a.hash(state); + b.hash(state); + } + TArrayConcat(t0, t1) => { + state.write_u8(10); + t0.hash(state); + t1.hash(state); + } + TUnit => { + state.write_u8(11); + } + TNever => { + state.write_u8(12); + } + TVar(a) => { + state.write_u8(13); + a.hash(state); + } + TError => { + state.write_u8(14); + } + } + } +} + +pub use Const::*; +#[derive(Clone, Debug)] +pub enum Const { + CInt(i32), + CFloat(f32), + CBool(bool), + CString(String), + CUnit, + CChar(char), +} + +impl Eq for Const {} +impl PartialEq for Const { + fn eq(&self, other: &Self) -> bool { + match (self, other) { + (CInt(a), CInt(b)) => a == b, + (CFloat(a), CFloat(b)) => a == b, + (CBool(a), CBool(b)) => a == b, + (CString(a), CString(b)) => a == b, + (CUnit, CUnit) => true, + (CChar(a), CChar(b)) => a == b, + _ => false, + } + } +} + +#[derive(Clone, Debug)] +pub struct Stmt { + pub info: Info, + pub kind: StmtKind, +} + +pub use StmtKind::*; +#[derive(Clone, Debug)] +pub enum StmtKind { + SDef(Meta, Name, Vector, Vector, Type, Block), + SRecDef( + Meta, + Vector<(Name, Vector, Vector, Type, Block)>, + ), + SBif(Meta, Name, Vector, Vector, Type), + SEnum(Meta, Name, Vector, Vector<(Name, Type)>), + SBit(Meta, Name, Vector), + SVal(Pattern, Expr), + SExpr(Expr), + SNoop, +} + +#[derive(Clone, Debug)] +pub struct Expr { + pub info: Info, + pub t: Type, + pub kind: Rc, +} + +pub use ExprKind::*; +#[derive(Clone, Debug)] +pub enum ExprKind { + EConst(Const), + EFun(Vector, Type, Block), + EFunCall(Expr, Vector), + EFunCallDirect(Name, Vector, Vector), + EFunReturn(Expr), + ELoop(Block), + ELoopBreak(Expr), + ELoopContinue, + EMatch(Expr, Vector), + EArray(Vector), + EArrayConcat(Expr, Expr), + EArrayAccess(Expr, Expr), + EIfElse(Expr, Block, Block), + ERecord(Vector<(Name, Expr)>), + ERecordAccess(Expr, Name), + ERecordConcat(Expr, Expr), + EMut(Expr, Expr), + EVal(Name), + EVar(Name), + EDef(Name, Vector), + EVariant(Name, Vector, Name, Expr), + EVariantAccess(Name, Vector, Name, Expr), // After pattern compilation + EVariantCheck(Name, Vector, Name, Expr), + EDo(Block), + ENoop(Expr), + ETuple(Vector), + ETupleAccess(Expr, Index), + EFor(Pattern, Expr, Block), + EWhile(Expr, Block), + EError, +} + +impl From for Type { + fn from(kind: TypeKind) -> Self { + Type { + kind: Rc::new(kind), + } + } +} + +impl ExprKind { + pub fn with(self, t: Type, info: Info) -> Expr { + Expr { + t, + info, + kind: Rc::new(self), + } + } +} + +impl PatternKind { + pub fn with(self, t: Type, info: Info) -> Pattern { + Pattern { + t, + info, + kind: Rc::new(self), + } + } +} + +impl Type { + pub fn kind(&self) -> TypeKind { + (*self.kind).clone() + } +} + +impl Expr { + pub fn kind(&self) -> ExprKind { + (*self.kind).clone() + } + pub fn map_type(self, f: &impl Fn(Type) -> Type) -> Self { + let t = f(self.t.clone()); + match self.kind() { + EConst(l) => EConst(l), + EMut(l, r) => EMut(l.map_type(f), r.map_type(f)), + EDo(b) => EDo(b.map_type(f)), + EFun(ps, t, b) => EFun(ps.map(|p| p.map_type(f)), f(t), b.map_type(f)), + EFunCall(e, es) => { + let e = e.map_type(f); + let es = es.map(|e| e.map_type(f)); + EFunCall(e, es) + } + EFunCallDirect(x, ts, es) => { + let ts = ts.map(f); + let es = es.map(|e| e.map_type(f)); + EFunCallDirect(x, ts, es) + } + ELoop(b) => ELoop(b.map_type(f)), + ELoopBreak(e) => ELoopBreak(e.map_type(f)), + ELoopContinue => ELoopContinue, + EMatch(e, arms) => { + let e = e.map_type(f); + let arms = arms.map(|(p, b)| (p.map_type(f), b.map_type(f))); + EMatch(e, arms) + } + ERecord(xes) => { + let xes = xes.map(|(x, e)| (x, e.map_type(f))); + ERecord(xes) + } + ERecordAccess(e, x) => { + let e = e.map_type(f); + ERecordAccess(e, x) + } + EFunReturn(e) => { + let e = e.map_type(f); + EFunReturn(e) + } + EVal(x) => EVal(x), + EVariant(xs, ts, x, e) => { + let e = e.map_type(f); + let ts = ts.map(f); + EVariant(xs, ts, x, e) + } + ENoop(e) => { + let e = e.map_type(f); + ENoop(e) + } + EIfElse(e, b0, b1) => { + let e = e.map_type(f); + let b0 = b0.map_type(f); + let b1 = b1.map_type(f); + EIfElse(e, b0, b1) + } + EArray(es) => { + let es = es.map(|e| e.map_type(f)); + EArray(es) + } + EArrayAccess(e0, e1) => { + let e0 = e0.map_type(f); + let e1 = e1.map_type(f); + EArrayAccess(e0, e1) + } + EDef(x, ts) => EDef(x, ts.map(f)), + EVar(x) => EVar(x), + EError => EError, + ETuple(es) => ETuple(es.map(|e| e.map_type(f))), + ETupleAccess(e, i) => ETupleAccess(e.map_type(f), i), + EFor(p, e, b) => EFor(p.map_type(f), e.map_type(f), b.map_type(f)), + EWhile(e, b) => EWhile(e.map_type(f), b.map_type(f)), + ERecordConcat(e0, e1) => ERecordConcat(e0.map_type(f), e1.map_type(f)), + EVariantAccess(..) => unreachable!(), + EVariantCheck(_, _, _, _) => unreachable!(), + EArrayConcat(e0, e1) => EArrayConcat(e0.map_type(f), e1.map_type(f)), + } + .with(t, self.info) + } +} + +impl Block { + pub fn map_type(mut self, f: &impl Fn(Type) -> Type) -> Self { + self.ss = self.ss.map(|s| s.map_type(f)); + self.e = self.e.map_type(f); + self + } +} + +impl Stmt { + pub fn map_type(self, f: &impl Fn(Type) -> Type) -> Self { + match self.kind { + SVal(p, e) => { + let p = p.map_type(f); + let e = e.map_type(f); + SVal(p, e) + } + SExpr(e) => { + let e = e.map_type(f); + SExpr(e) + } + SDef(m, x, gs, ps, t, b) => { + let ps = ps.map(|p| p.map_type(f)); + let t = f(t); + let b = b.map_type(f); + SDef(m, x, gs, ps, t, b) + } + SBif(m, x, gs, ts, t) => { + let ts = ts.map(f); + let t = f(t); + SBif(m, x, gs, ts, t) + } + SEnum(m, x, gs, xts) => { + let xts = xts.map(|(x, t)| (x, f(t))); + SEnum(m, x, gs, xts) + } + SBit(m, x, gs) => SBit(m, x, gs), + SNoop => SNoop, + SRecDef(m, ds) => todo!(), + } + .with(self.info) + } +} + +impl StmtKind { + pub fn with(self, info: Info) -> Stmt { + Stmt { info, kind: self } + } +} + +impl Pattern { + pub fn kind(&self) -> PatternKind { + (*self.kind).clone() + } + + pub fn map_type(self, f: &impl Fn(Type) -> Type) -> Self { + let t = f(self.t.clone()); + match self.kind() { + PConst(l) => PConst(l), + PVar(x) => PVar(x), + PVal(x) => PVal(x), + PRecord(xps) => { + let xps = xps.map(|(x, p)| (x, p.map_type(f))); + PRecord(xps) + } + PRecordConcat(p0, p1) => { + let p0 = p0.map_type(f); + let p1 = p1.map_type(f); + PRecordConcat(p0, p1) + } + PTuple(ps) => { + let ps = ps.map(|p| p.map_type(f)); + PTuple(ps) + } + PIgnore => PIgnore, + PVariant(xs, ts, x, p) => { + let p = p.map_type(f); + let ts = ts.map(f); + PVariant(xs, ts, x, p) + } + POr(p0, p1) => { + let p0 = p0.map_type(f); + let p1 = p1.map_type(f); + POr(p0, p1) + } + PNoop(p) => { + let p = p.map_type(f); + PNoop(p) + } + PArray(ps) => { + let ps = ps.map(|p| p.map_type(f)); + PArray(ps) + } + PArrayConcat(p0, p1) => { + let p0 = p0.map_type(f); + let p1 = p1.map_type(f); + PArrayConcat(p0, p1) + } + PError => PError, + } + .with(t, self.info) + } +} + +pub fn row_to_fields(t: Type) -> Vector<(Name, Type)> { + fn f(t: Type, xts: &mut Vector<(Name, Type)>) { + match t.kind.as_ref().clone() { + TRowEmpty => {} + TRowExtend((x, t), r) => { + xts.push_back((x, t)); + f(r, xts); + } + _ => unreachable!(), + } + } + let mut xts = Vector::new(); + f(t, &mut xts); + xts +} + +pub fn fields_to_row(xts: Vector<(Name, Type)>) -> Type { + xts.into_iter() + .fold(TypeKind::TRowEmpty.into(), |r, (x, t)| { + TypeKind::TRowExtend((x, t).into(), r).into() + }) +} diff --git a/arc-lang/crates/compiler/irs/mlir/Cargo.toml b/arc-lang/crates/compiler/irs/mlir/Cargo.toml new file mode 100644 index 000000000..08faec292 --- /dev/null +++ b/arc-lang/crates/compiler/irs/mlir/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "mlir" +version.workspace = true +edition.workspace = true + +[dependencies] +value.workspace = true +info.workspace = true +codegen.workspace = true +im-rc.workspace = true diff --git a/arc-lang/crates/compiler/irs/mlir/src/lib.rs b/arc-lang/crates/compiler/irs/mlir/src/lib.rs new file mode 100644 index 000000000..64898417a --- /dev/null +++ b/arc-lang/crates/compiler/irs/mlir/src/lib.rs @@ -0,0 +1,132 @@ +// use hir_value::Dataflow; +use im_rc::OrdMap; +use im_rc::Vector; +use std::hash::Hash; +use std::rc::Rc; + +pub type Name = String; +pub type Index = i128; +pub type Generic = Name; +pub type Meta = OrdMap>; + +#[derive(Clone, Debug)] +pub struct Item { + pub meta: Meta, + pub kind: ItemKind, +} +pub use ItemKind::*; +#[derive(Clone, Debug)] +pub enum ItemKind { + IDef(Name, Vector, Type, Block), + IExternDef(Name, Vector, Type), + // IDataflow(Dataflow), + IError, +} + +pub use Const::*; +#[derive(Clone, Debug)] +pub enum Const { + CInt(i32), + CFloat(f32), + CBool(bool), + CString(String), + CUnit, + CChar(char), +} + +#[derive(Clone, Debug)] +pub struct Val { + pub kind: ValKind, + pub t: Type, +} + +pub use ValKind::*; +#[derive(Clone, Debug)] +pub enum ValKind { + VName(Name), + VError, +} + +impl ValKind { + pub fn with(self, t: Type) -> Val { + Val { kind: self, t } + } +} + +#[derive(Clone, Debug)] +pub struct Block { + pub ss: Vector, +} + +impl Block { + pub fn new(ss: Vector) -> Self { + Block { ss } + } +} + +#[derive(Clone, Debug, Hash, Eq, PartialEq)] +pub struct Type { + pub kind: Rc, +} + +pub use TypeKind::*; +#[derive(Clone, Debug, Eq, Hash, PartialEq)] +pub enum TypeKind { + TFun(Vector, Type), + TRecord(Vector<(Name, Type)>), + TEnum(Vector<(Name, Type)>), + TNative(Name, Vector), + TAdt(Name, Vector), + TError, +} + +#[derive(Clone, Debug)] +pub struct Stmt { + pub vs: Vector, + pub kind: StmtKind, +} + +pub use StmtKind::*; +#[derive(Clone, Debug)] +pub enum StmtKind { + SConst(Const), + SFun(Name), + SFunCallDirect(Name, Vector), + SFunCallIndirect(Val, Vector), + SIfElse(Val, Block, Block), + SRecord(Vector<(Name, Val)>), + SRecordAccess(Val, Name), + SVariant(Name, Val), + SVariantAccess(Name, Val), + SVariantCheck(Name, Val), + SWhile(Vector, Vector, Block, Block), + SWhileBreak(Vector), + SWhileContinue(Vector), + SWhileYield(Vector), + SBlockResult(Val), + SFunReturn(Val), + SError, +} + +impl From for Type { + fn from(kind: TypeKind) -> Type { + Type { + kind: Rc::new(kind), + } + } +} + +impl ItemKind { + pub fn with(self, meta: Meta) -> Item { + Item { kind: self, meta } + } +} + +impl StmtKind { + pub fn with(self, vs: impl IntoIterator) -> Stmt { + Stmt { + vs: vs.into_iter().collect(), + kind: self, + } + } +} diff --git a/arc-lang/crates/compiler/irs/rust/Cargo.toml b/arc-lang/crates/compiler/irs/rust/Cargo.toml new file mode 100644 index 000000000..07875ee88 --- /dev/null +++ b/arc-lang/crates/compiler/irs/rust/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "rust" +version.workspace = true +edition.workspace = true + +[dependencies] +im-rc.workspace = true +value.workspace = true +info.workspace = true diff --git a/arc-lang/crates/compiler/irs/rust/src/lib.rs b/arc-lang/crates/compiler/irs/rust/src/lib.rs new file mode 100644 index 000000000..c09beb387 --- /dev/null +++ b/arc-lang/crates/compiler/irs/rust/src/lib.rs @@ -0,0 +1,129 @@ +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use std::hash::Hash; +use std::rc::Rc; + +pub type Name = String; +pub type Index = i128; +pub type Generic = Name; +pub type Meta = OrdMap>; + +#[derive(Clone, Debug)] +pub struct Item { + pub info: Info, + pub kind: ItemKind, +} +pub use ItemKind::*; +#[derive(Clone, Debug)] +pub enum ItemKind { + IDef(Meta, Name, Vector, Type, Block), + IEnum(Meta, Name, Vector<(Name, Type)>), + IStruct(Name, Vector<(Name, Type)>), + IError, +} + +pub use Const::*; +#[derive(Clone, Debug)] +pub enum Const { + CInt(i32), + CFloat(f32), + CBool(bool), + CString(String), + CUnit, + CChar(char), +} + +#[derive(Clone, Debug)] +pub struct Val { + pub kind: ValKind, + pub t: Type, +} + +pub use ValKind::*; +#[derive(Clone, Debug)] +pub enum ValKind { + VName(Name), + VError, +} + +impl ValKind { + pub fn with(self, t: Type) -> Val { + Val { kind: self, t } + } +} + +#[derive(Clone, Debug)] +pub struct Block { + pub ss: Vector, +} + +impl Block { + pub fn new(ss: Vector) -> Self { + Block { ss } + } +} + +#[derive(Clone, Debug, Hash, Eq, PartialEq)] +pub struct Type { + pub kind: Rc, +} + +pub use TypeKind::*; +#[derive(Clone, Debug, Eq, Hash, PartialEq)] +pub enum TypeKind { + TFun(Vector, Type), + TNominal(Name, Vector), + TError, +} + +#[derive(Clone, Debug)] +pub struct Stmt { + pub vs: Vector, + pub kind: StmtKind, +} + +pub use StmtKind::*; +#[derive(Clone, Debug)] +pub enum StmtKind { + SConst(Const), + SFun(Name), + SFunCallDirect(Name, Vector), + SFunCallIndirect(Val, Vector), + SIfElse(Val, Block, Block), + SStruct(Name, Vector<(Name, Val)>), + SStructAccess(Val, Name), + SVariant(Name, Val), + SVariantAccess(Name, Val), + SVariantCheck(Name, Val), + SWhile(Vector, Vector, Block, Block), + SWhileBreak(Vector), + SWhileContinue(Vector), + SWhileYield(Vector), + SBlockResult(Val), + SFunReturn(Val), + SError, +} + +impl From for Type { + fn from(kind: TypeKind) -> Type { + Type { + kind: Rc::new(kind), + } + } +} + +impl ItemKind { + pub fn with(self, info: Info) -> Item { + Item { kind: self, info } + } +} + +impl StmtKind { + pub fn with(self, vs: impl IntoIterator) -> Stmt { + Stmt { + vs: vs.into_iter().collect(), + kind: self, + } + } +} diff --git a/arc-lang/crates/compiler/irs/value/Cargo.toml b/arc-lang/crates/compiler/irs/value/Cargo.toml new file mode 100644 index 000000000..6125898fd --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "value" +version.workspace = true +edition.workspace = true + +[dependencies] +serde.workspace = true +builtins.workspace = true +im-rc.workspace = true +hir.workspace = true +ast.workspace = true +info.workspace = true + +[dev-dependencies] +serde_json.workspace = true diff --git a/arc-lang/crates/compiler/irs/value/rustfmt.toml b/arc-lang/crates/compiler/irs/value/rustfmt.toml new file mode 100644 index 000000000..1116a3d48 --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/rustfmt.toml @@ -0,0 +1,2 @@ +max_width = 200 +fn_call_width = 200 diff --git a/arc-lang/crates/compiler/irs/value/src/conv.rs b/arc-lang/crates/compiler/irs/value/src/conv.rs new file mode 100644 index 000000000..5c4f170b1 --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/src/conv.rs @@ -0,0 +1,96 @@ +use builtins::aggregator::Aggregator; +use builtins::blob::Blob; +use builtins::dict::Dict; +use builtins::discretizer::Discretizer; +use builtins::duration::Duration; +use builtins::encoding::Encoding; +use builtins::file::File; +use builtins::model::Model; +use builtins::path::Path; +use builtins::reader::Reader; +use builtins::set::Set; +use builtins::socket::SocketAddr; +use builtins::time::Time; +use builtins::time_source::TimeSource; +use builtins::url::Url; +use builtins::writer::Writer; + +use crate::dynamic::Array; +use crate::dynamic::Dataflow; +use crate::dynamic::Function; +use crate::dynamic::Instance; +use crate::dynamic::Matrix; +use crate::dynamic::Record; +use crate::dynamic::Stream; +use crate::dynamic::Tuple; +use crate::dynamic::Variant; +use crate::Value; +use crate::ValueKind; + +macro_rules! conv { + { + $type:ty, $variant:ident, $as:ident + } => { + impl Value { + #[track_caller] + pub fn $as(&self) -> $type { + if let ValueKind::$variant(v) = &*self.kind { + v.clone() + } else { + unreachable!("{}{:?}", std::panic::Location::caller(), self); + } + } + } + impl From<$type> for Value { + fn from(v: $type) -> Self { + Value::new(ValueKind::$variant(v)) + } + } + } +} + +conv!((), VUnit, as_unit); +conv!(Array, VArray, as_array); +conv!(Tuple, VTuple, as_tuple); +conv!(Function, VFunction, as_function); +conv!(Matrix, VMatrix, as_matrix); +conv!(Record, VRecord, as_record); +conv!(Stream, VStream, as_stream); +conv!(Variant, VVariant, as_variant); +conv!(bool, VBool, as_bool); +conv!(Aggregator, VAggregator, as_aggregator); +conv!(Blob, VBlob, as_blob); +conv!(Dict, VDict, as_dict); +conv!(Discretizer, VDiscretizer, as_discretizer); +conv!(Duration, VDuration, as_duration); +conv!(Dataflow, VDataflow, as_dataflow); +conv!(Encoding, VEncoding, as_encoding); +conv!(File, VFile, as_file); +conv!(Model, VModel, as_model); +conv!(builtins::option::Option, VOption, as_option); +conv!(Path, VPath, as_path); +conv!(Reader, VReader, as_reader); +conv!(builtins::result::Result, VResult, as_result); +conv!(Set, VSet, as_set); +conv!(SocketAddr, VSocketAddr, as_socket_addr); +conv!(builtins::string::String, VString, as_string); +conv!(Time, VTime, as_time); +conv!(TimeSource, VTimeSource, as_time_source); +conv!(Url, VUrl, as_url); +conv!(builtins::vec::Vec, VVec, as_vec); +conv!(Writer, VWriter, as_writer); +conv!(char, VChar, as_char); +conv!(f32, VF32, as_f32); +conv!(f64, VF64, as_f64); +conv!(i128, VI128, as_i128); +conv!(i16, VI16, as_i16); +conv!(i32, VI32, as_i32); +conv!(i64, VI64, as_i64); +conv!(i8, VI8, as_i8); +conv!(u128, VU128, as_u128); +conv!(u16, VU16, as_u16); +conv!(u32, VU32, as_u32); +conv!(u64, VU64, as_u64); +conv!(u8, VU8, as_u8); +conv!(usize, VUsize, as_usize); +conv!(Instance, VInstance, as_instance); diff --git a/arc-lang/crates/compiler/irs/value/src/de.rs b/arc-lang/crates/compiler/irs/value/src/de.rs new file mode 100644 index 000000000..93debf35d --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/src/de.rs @@ -0,0 +1,317 @@ +use hir::Type; +use serde::de::DeserializeSeed; +use serde::de::MapAccess; +use serde::de::VariantAccess; +use serde::de::Visitor; +use serde::Deserializer; + +use crate::*; + +pub struct Seed(pub Type); + +impl<'de> DeserializeSeed<'de> for Seed { + type Value = Value; + + fn deserialize(self, deserializer: D) -> Result + where + D: Deserializer<'de>, + { + match self.0.kind.as_ref() { + hir::TFun(_, _) => unreachable!(), + hir::TTuple(ts, _) => { + struct TupleVisitor(Vector); + impl<'de> Visitor<'de> for TupleVisitor { + type Value = Value; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(formatter, "a tuple of length {}", self.0.len()) + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + let mut v = Vector::new(); + for t in self.0 { + let context = Seed(t); + v.push_back(seq.next_element_seed(context)?.unwrap()); + } + Ok(Value::from(Tuple(v))) + } + } + deserializer.deserialize_tuple(ts.len(), TupleVisitor(ts.clone())) + } + hir::TRecord(t) => { + struct RecordVisitor(HashMap); + impl<'de> Visitor<'de> for RecordVisitor { + type Value = Value; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(formatter, "a record with fields {:?}", self.0) + } + + fn visit_map(mut self, mut map: A) -> Result + where + A: MapAccess<'de>, + { + let mut result = HashMap::new(); + while !self.0.is_empty() { + let k = map.next_key()?.unwrap(); + if let Some(t) = self.0.remove(&k) { + result.insert(k, map.next_value_seed(Seed(t))?); + } else { + return Err(serde::de::Error::custom("Found unexpected field")); + } + } + Ok(Value::from(Record(result))) + } + } + deserializer.deserialize_map(RecordVisitor( + hir::row_to_fields(t.clone()).into_iter().collect(), + )) + } + hir::TNominal(x, ts) => match x.as_str() { + "i8" => i8::deserialize(deserializer).map(Value::from), + "i16" => i16::deserialize(deserializer).map(Value::from), + "i32" => i32::deserialize(deserializer).map(Value::from), + "i64" => i64::deserialize(deserializer).map(Value::from), + "u8" => u8::deserialize(deserializer).map(Value::from), + "u16" => u16::deserialize(deserializer).map(Value::from), + "u32" => u32::deserialize(deserializer).map(Value::from), + "u64" => u64::deserialize(deserializer).map(Value::from), + "usize" => usize::deserialize(deserializer).map(Value::from), + "f32" => f32::deserialize(deserializer).map(Value::from), + "f64" => f64::deserialize(deserializer).map(Value::from), + "bool" => bool::deserialize(deserializer).map(Value::from), + "char" => char::deserialize(deserializer).map(Value::from), + "String" => String::deserialize(deserializer) + .map(builtins::string::String::from) + .map(Value::from), + "Dict" => { + struct DictVisitor(Type, Type); + impl<'de> Visitor<'de> for DictVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "a dict") + } + + fn visit_map(self, mut map: A) -> Result + where + A: MapAccess<'de>, + { + let mut result = std::collections::HashMap::new(); + while let Some((k, v)) = + map.next_entry_seed(Seed(self.0.clone()), Seed(self.1.clone()))? + { + result.insert(k, v); + } + Ok(Value::from(builtins::dict::Dict::from(result))) + } + } + let k = ts[0].clone(); + let v = ts[1].clone(); + deserializer.deserialize_map(DictVisitor(k, v)) + } + "Set" => { + struct SetVisitor(Type); + impl<'de> Visitor<'de> for SetVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "a set") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + let mut result = std::collections::HashSet::new(); + while let Some(v) = seq.next_element_seed(Seed(self.0.clone()))? { + result.insert(v); + } + Ok(Value::from(builtins::set::Set::from(result))) + } + } + let t = ts[0].clone(); + deserializer.deserialize_seq(SetVisitor(t)) + } + "Time" => builtins::time::Time::deserialize(deserializer).map(Value::from), + "Duration" => { + builtins::duration::Duration::deserialize(deserializer).map(Value::from) + } + "Url" => builtins::url::Url::deserialize(deserializer).map(Value::from), + "Path" => builtins::path::Path::deserialize(deserializer).map(Value::from), + "Blob" => builtins::blob::Blob::deserialize(deserializer).map(Value::from), + "Option" => { + struct OptionVisitor(Type); + impl<'de> Visitor<'de> for OptionVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "an option") + } + + fn visit_some(self, deserializer: D) -> Result + where + D: Deserializer<'de>, + { + let v = Seed(self.0).deserialize(deserializer)?; + Ok(Value::from(builtins::option::Option::some(v))) + } + + fn visit_none(self) -> Result { + Ok(Value::from(builtins::option::Option::none())) + } + } + let t = ts[0].clone(); + deserializer.deserialize_option(OptionVisitor(t)) + } + "Result" => { + struct ResultVisitor(Type); + impl<'de> Visitor<'de> for ResultVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "a result") + } + + fn visit_enum(self, data: A) -> Result + where + A: serde::de::EnumAccess<'de>, + { + let (v, variant) = data.variant()?; + println!("->{:?}", v); + match v { + "Ok" => { + let v = variant.newtype_variant_seed(Seed(self.0.clone()))?; + Ok(Value::from(builtins::result::Result::ok(v))) + } + "Err" => { + let v = variant.newtype_variant()?; + Ok(Value::from(builtins::result::Result::error(v))) + } + _ => unreachable!(), + } + } + } + let t = ts[0].clone(); + deserializer.deserialize_enum("Result", &["Ok", "Err"], ResultVisitor(t)) + } + "Vec" => { + struct VecVisitor(Type); + impl<'de> Visitor<'de> for VecVisitor { + type Value = Value; + + fn expecting( + &self, + formatter: &mut std::fmt::Formatter, + ) -> std::fmt::Result { + write!(formatter, "a vec") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + let mut result = Vec::new(); + while let Some(v) = seq.next_element_seed(Seed(self.0.clone()))? { + result.push(v); + } + Ok(Value::from(builtins::vec::Vec::from(result))) + } + } + let t = ts[0].clone(); + deserializer.deserialize_seq(VecVisitor(t)) + } + "Matrix" => { + let hir::TNominal(x, _) = ts[0].kind.as_ref() else { + unreachable!() + }; + let m = match x.as_str() { + "i8" => { + Matrix::I8(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + "i16" => { + Matrix::I16(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + "i32" => { + Matrix::I32(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + "i64" => { + Matrix::I64(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + "u8" => { + Matrix::U8(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + "u16" => { + Matrix::U16(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + "u32" => { + Matrix::U32(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + "u64" => { + Matrix::U64(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + "f32" => { + Matrix::F32(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + "f64" => { + Matrix::F64(builtins::matrix::Matrix::::deserialize(deserializer)?) + } + _ => unreachable!(), + }; + Ok(Value::from(m)) + } + _ => unreachable!("Attempted to deserialize undeserializable type {:?}", x), + }, + hir::TAlias(_, _, _) => todo!(), + hir::TRowEmpty => unreachable!(), + hir::TRowExtend(_, _) => unreachable!(), + hir::TRecordConcat(_, _) => unreachable!(), + hir::TGeneric(_) => unreachable!(), + hir::TArray(t, n) => { + struct ArrayVisitor(Type); + impl<'de> Visitor<'de> for ArrayVisitor { + type Value = Value; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + write!(formatter, "an array") + } + + fn visit_seq(self, mut seq: A) -> Result + where + A: serde::de::SeqAccess<'de>, + { + let mut result = Vector::new(); + while let Some(v) = seq.next_element_seed(Seed(self.0.clone()))? { + result.push_back(v); + } + Ok(Value::from(Array(result))) + } + } + let n = n.unwrap() as usize; + deserializer.deserialize_tuple(n, ArrayVisitor(t.clone())) + } + hir::TArrayConcat(_, _) => unreachable!(), + hir::TUnit => <() as Deserialize>::deserialize(deserializer).map(Value::from), + hir::TNever => unreachable!(), + hir::TVar(_) => Err(serde::de::Error::custom( + "Attempted to deserialize a type variable", + )), + hir::TError => unreachable!(), + } + } +} diff --git a/arc-lang/crates/compiler/irs/value/src/dynamic.rs b/arc-lang/crates/compiler/irs/value/src/dynamic.rs new file mode 100644 index 000000000..b750c73ae --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/src/dynamic.rs @@ -0,0 +1,199 @@ +use std::cell::RefCell; +use std::rc::Rc; + +use ast::Name; +use builtins::aggregator::Aggregator; +use builtins::discretizer::Discretizer; +use builtins::encoding::Encoding; +use builtins::path::Path; +use builtins::reader::Reader; +use builtins::time_source::TimeSource; +use builtins::writer::Writer; +use im_rc::vector; +use im_rc::HashMap; +use im_rc::OrdMap; +use im_rc::OrdSet; +use im_rc::Vector; +use serde::Deserialize; +use serde::Serialize; + +use crate::Value; + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize)] +pub struct Array(pub Vector); + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)] +pub struct Function(pub Name); + +#[derive(Debug, Clone, Serialize)] +#[serde(untagged)] +pub enum Matrix { + I8(builtins::matrix::Matrix), + I16(builtins::matrix::Matrix), + I32(builtins::matrix::Matrix), + I64(builtins::matrix::Matrix), + U8(builtins::matrix::Matrix), + U16(builtins::matrix::Matrix), + U32(builtins::matrix::Matrix), + U64(builtins::matrix::Matrix), + F32(builtins::matrix::Matrix), + F64(builtins::matrix::Matrix), +} + +impl Matrix { + fn as_i8(self) -> builtins::matrix::Matrix { + match self { + Matrix::I8(v) => v, + _ => unreachable!(), + } + } + fn as_i16(self) -> builtins::matrix::Matrix { + match self { + Matrix::I16(v) => v, + _ => unreachable!(), + } + } + fn as_i32(self) -> builtins::matrix::Matrix { + match self { + Matrix::I32(v) => v, + _ => unreachable!(), + } + } + fn as_i64(self) -> builtins::matrix::Matrix { + match self { + Matrix::I64(v) => v, + _ => unreachable!(), + } + } + fn as_u8(self) -> builtins::matrix::Matrix { + match self { + Matrix::U8(v) => v, + _ => unreachable!(), + } + } + fn as_u16(self) -> builtins::matrix::Matrix { + match self { + Matrix::U16(v) => v, + _ => unreachable!(), + } + } + fn as_u32(self) -> builtins::matrix::Matrix { + match self { + Matrix::U32(v) => v, + _ => unreachable!(), + } + } + fn as_u64(self) -> builtins::matrix::Matrix { + match self { + Matrix::U64(v) => v, + _ => unreachable!(), + } + } + fn as_f32(self) -> builtins::matrix::Matrix { + match self { + Matrix::F32(v) => v, + _ => unreachable!(), + } + } + fn as_f64(self) -> builtins::matrix::Matrix { + match self { + Matrix::F64(v) => v, + _ => unreachable!(), + } + } +} + +#[macro_export] +macro_rules! map_matrix { + { $v:expr, $f:expr } => { + match $v { + Matrix::I8(v) => $f(v), + Matrix::I16(v) => $f(v), + Matrix::I32(v) => $f(v), + Matrix::I64(v) => $f(v), + Matrix::U8(v) => $f(v), + Matrix::U16(v) => $f(v), + Matrix::U32(v) => $f(v), + Matrix::U64(v) => $f(v), + Matrix::F32(v) => $f(v), + Matrix::F64(v) => $f(v), + } + } +} + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize)] +pub struct Record(pub HashMap); + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize)] +pub struct Tuple(pub Vector); + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize)] +pub struct Variant { + pub x: Name, + pub v: Value, +} + +#[derive(Debug, Clone)] +pub struct Stream { + pub prefix: Vector, + pub name: Name, + pub kind: Rc, +} + +impl Stream { + pub fn extend(self, name: Name, kind: StreamKind) -> Self { + let mut prefix = self.prefix.clone(); + prefix.push_back(self); + Self { prefix, name, kind: Rc::new(kind) } + } + + pub fn new(name: Name, kind: StreamKind) -> Self { + Self { + prefix: vector![], + name, + kind: Rc::new(kind), + } + } +} + +pub use StreamKind::*; +#[derive(Debug, Clone)] +pub enum StreamKind { + DSource(Reader, Encoding, TimeSource), + DMap(Name, Function), + DFilter(Name, Function), + DFlatten(Name), + DFlatMap(Name, Function), + DScan(Name, Function), + DKeyby(Name, Function), + DUnkey(Name), + DApply(Name, Function), + DWindow(Name, Discretizer, Aggregator), + DMerge(Vector), +} + +#[derive(Debug, Clone)] +pub struct Dataflow { + pub streams: Vector, + pub sinks: Vector, +} + +#[derive(Debug, Clone)] +pub struct Instance { + pub log: Path, +} + +impl Dataflow { + pub fn new(streams: Vector, sinks: Vector) -> Self { + Self { streams, sinks } + } +} + +#[derive(Debug, Clone)] +pub struct Sink(pub Rc<(Name, Writer, Encoding)>); + +impl Sink { + pub fn new(stream: Name, writer: Writer, encoding: Encoding) -> Self { + Self(Rc::new((stream, writer, encoding))) + } +} diff --git a/arc-lang/crates/compiler/irs/value/src/eq.rs b/arc-lang/crates/compiler/irs/value/src/eq.rs new file mode 100644 index 000000000..da5ed40d8 --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/src/eq.rs @@ -0,0 +1,67 @@ +use crate::*; + +impl PartialEq for Value { + fn eq(&self, other: &Self) -> bool { + match (self.kind.as_ref(), other.kind.as_ref()) { + (VAggregator(a), VAggregator(b)) => unreachable!(), + (VArray(a), VArray(b)) => a == b, + (VBlob(a), VBlob(b)) => unreachable!(), + (VBool(a), VBool(b)) => a == b, + (VChar(a), VChar(b)) => a == b, + (VDiscretizer(a), VDiscretizer(b)) => unreachable!(), + (VDuration(a), VDuration(b)) => a == b, + (VEncoding(a), VEncoding(b)) => a == b, + (VF32(a), VF32(b)) => unreachable!(), + (VF64(a), VF64(b)) => unreachable!(), + (VFile(a), VFile(b)) => unreachable!(), + (VFunction(a), VFunction(b)) => a == b, + (VI8(a), VI8(b)) => a == b, + (VI16(a), VI16(b)) => a == b, + (VI32(a), VI32(b)) => a == b, + (VI64(a), VI64(b)) => a == b, + (VU8(a), VU8(b)) => a == b, + (VU16(a), VU16(b)) => a == b, + (VU32(a), VU32(b)) => a == b, + (VU64(a), VU64(b)) => a == b, + (VMatrix(a), VMatrix(b)) => match (a, b) { + (Matrix::I8(a), Matrix::I8(b)) => a == b, + (Matrix::I16(a), Matrix::I16(b)) => a == b, + (Matrix::I32(a), Matrix::I32(b)) => a == b, + (Matrix::I64(a), Matrix::I64(b)) => a == b, + (Matrix::U8(a), Matrix::U8(b)) => a == b, + (Matrix::U16(a), Matrix::U16(b)) => a == b, + (Matrix::U32(a), Matrix::U32(b)) => a == b, + (Matrix::U64(a), Matrix::U64(b)) => a == b, + (Matrix::F32(_), Matrix::F32(_)) => unreachable!(), + (Matrix::F64(_), Matrix::F64(_)) => unreachable!(), + _ => unreachable!(), + }, + (VModel(a), VModel(b)) => unreachable!(), + (VOption(a), VOption(b)) => a == b, + (VPath(a), VPath(b)) => a == b, + (VReader(a), VReader(b)) => unreachable!(), + (VRecord(a), VRecord(b)) => a == b, + (VVariant(a), VVariant(b)) => a == b, + (VResult(a), VResult(b)) => a == b, + (VSocketAddr(a), VSocketAddr(b)) => a == b, + (VStream(a), VStream(b)) => unreachable!(), + (VString(a), VString(b)) => a == b, + (VTime(a), VTime(b)) => a == b, + (VTimeSource(a), VTimeSource(b)) => unreachable!(), + (VTuple(a), VTuple(b)) => a == b, + (VUsize(a), VUsize(b)) => a == b, + (VUnit(a), VUnit(b)) => a == b, + (VUrl(a), VUrl(b)) => a == b, + (VVec(a), VVec(b)) => a == b, + (VWriter(a), VWriter(b)) => unreachable!(), + (VDict(a), VDict(b)) => a == b, + (VSet(a), VSet(b)) => a == b, + _ => unreachable!( + "Attempted to compare incompatible types \n{:?} \nand \n{:?}", + self, other + ), + } + } +} + +impl Eq for Value {} diff --git a/arc-lang/crates/compiler/irs/value/src/hash.rs b/arc-lang/crates/compiler/irs/value/src/hash.rs new file mode 100644 index 000000000..7050de0a6 --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/src/hash.rs @@ -0,0 +1,42 @@ +use crate::*; + +use std::hash::Hash; + +impl Hash for Value { + fn hash(&self, state: &mut H) { + match self.kind.as_ref() { + VAggregator(a) => unreachable!(), + VArray(a) => a.hash(state), + VBlob(a) => unreachable!(), + VBool(a) => a.hash(state), + VChar(a) => a.hash(state), + VDiscretizer(a) => unreachable!(), + VDuration(a) => a.hash(state), + VEncoding(a) => unreachable!(), + VF64(a) => unreachable!(), + VFile(a) => unreachable!(), + VFunction(a) => unreachable!(), + VI32(a) => a.hash(state), + VMatrix(a) => unreachable!(), + VModel(a) => unreachable!(), + VOption(a) => a.hash(state), + VPath(a) => a.hash(state), + VReader(a) => unreachable!(), + VRecord(a) => a.hash(state), + VVariant(a) => a.hash(state), + VResult(a) => a.hash(state), + VSocketAddr(a) => unreachable!(), + VStream(a) => unreachable!(), + VString(a) => a.hash(state), + VTime(a) => a.hash(state), + VTimeSource(a) => unreachable!(), + VTuple(a) => a.hash(state), + VUsize(a) => a.hash(state), + VUnit(a) => a.hash(state), + VUrl(a) => a.hash(state), + VVec(a) => a.hash(state), + VWriter(a) => unreachable!(), + _ => unreachable!(), + } + } +} diff --git a/arc-lang/crates/compiler/irs/value/src/lib.rs b/arc-lang/crates/compiler/irs/value/src/lib.rs new file mode 100644 index 000000000..9531cc892 --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/src/lib.rs @@ -0,0 +1,359 @@ +#![allow(unused)] + +pub mod conv; +pub mod de; +pub mod dynamic; +pub mod eq; +pub mod hash; +pub mod ord; +pub mod ser; + +use std::cell::RefCell; +use std::rc::Rc; + +use builtins::aggregator::Aggregator; +use builtins::blob::Blob; +use builtins::dict::Dict; +use builtins::discretizer::Discretizer; +use builtins::duration::Duration; +use builtins::encoding::Encoding; +use builtins::file::File; +use builtins::model::Model; +use builtins::path::Path; +use builtins::reader::Reader; +use builtins::set::Set; +use builtins::socket::SocketAddr; +use builtins::time::Time; +use builtins::time_source::TimeSource; +use builtins::url::Url; +use builtins::writer::Writer; +use dynamic::Array; +use dynamic::Dataflow; +use dynamic::Function; +use dynamic::Instance; +use dynamic::Matrix; +use dynamic::Record; +use dynamic::Stream; +use dynamic::Tuple; +use dynamic::Variant; +use hir::Name; +use im_rc::HashMap; +use im_rc::Vector; +use serde::Deserialize; +use serde::Serialize; +pub use ValueKind::*; + +#[derive(Clone)] +pub struct Value { + pub kind: Rc, +} + +impl From for Value { + fn from(kind: ValueKind) -> Self { + Value::new(kind) + } +} + +impl Value { + pub fn new(kind: ValueKind) -> Value { + Value { kind: Rc::new(kind) } + } +} + +#[derive(Clone)] +pub enum ValueKind { + VAggregator(Aggregator), + VArray(Array), + VBlob(Blob), + VBool(bool), + VChar(char), + VDict(Dict), + VDiscretizer(Discretizer), + VDuration(Duration), + VEncoding(Encoding), + VF32(f32), + VF64(f64), + VFile(File), + VFunction(Function), + VI128(i128), + VI16(i16), + VI32(i32), + VI64(i64), + VI8(i8), + VMatrix(Matrix), + VModel(Model), + VOption(builtins::option::Option), + VPath(Path), + VReader(Reader), + VRecord(Record), + VResult(builtins::result::Result), + VSet(Set), + VSocketAddr(SocketAddr), + VStream(Stream), + VDataflow(Dataflow), + VString(builtins::string::String), + VTime(Time), + VTimeSource(TimeSource), + VTuple(Tuple), + VU128(u128), + VU16(u16), + VU32(u32), + VU64(u64), + VU8(u8), + VUnit(()), + VUrl(Url), + VUsize(usize), + VVariant(Variant), + VVec(builtins::vec::Vec), + VWriter(Writer), + VInstance(Instance), +} + +impl std::fmt::Debug for Value { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self.kind.as_ref() { + VAggregator(v) => v.fmt(f), + VArray(v) => v.fmt(f), + VBlob(v) => v.fmt(f), + VBool(v) => v.fmt(f), + VChar(v) => v.fmt(f), + VDict(v) => v.fmt(f), + VDiscretizer(v) => v.fmt(f), + VDuration(v) => v.fmt(f), + VEncoding(v) => v.fmt(f), + VF32(v) => v.fmt(f), + VF64(v) => v.fmt(f), + VFile(v) => v.fmt(f), + VFunction(v) => v.fmt(f), + VI128(v) => v.fmt(f), + VI16(v) => v.fmt(f), + VI32(v) => v.fmt(f), + VI64(v) => v.fmt(f), + VI8(v) => v.fmt(f), + VMatrix(v) => v.fmt(f), + VModel(v) => v.fmt(f), + VOption(v) => v.fmt(f), + VPath(v) => v.fmt(f), + VReader(v) => v.fmt(f), + VRecord(v) => v.fmt(f), + VResult(v) => v.fmt(f), + VSet(v) => v.fmt(f), + VSocketAddr(v) => v.fmt(f), + VStream(v) => v.fmt(f), + VDataflow(v) => v.fmt(f), + VString(v) => v.fmt(f), + VTime(v) => v.fmt(f), + VTimeSource(v) => v.fmt(f), + VTuple(v) => v.fmt(f), + VU128(v) => v.fmt(f), + VU16(v) => v.fmt(f), + VU32(v) => v.fmt(f), + VU64(v) => v.fmt(f), + VU8(v) => v.fmt(f), + VUnit(v) => v.fmt(f), + VUrl(v) => v.fmt(f), + VUsize(v) => v.fmt(f), + VVariant(v) => v.fmt(f), + VVec(v) => v.fmt(f), + VWriter(v) => v.fmt(f), + VInstance(v) => v.fmt(f), + } + } +} + +#[cfg(test)] +mod test { + use im_rc::hashmap; + use im_rc::vector; + use serde::de::DeserializeSeed; + use serde::Serialize; + use serde_json::de::StrRead; + + use crate::de::Seed; + use crate::Record; + use crate::Value; + + #[test] + fn serde_i32() { + let v0 = Value::from(1); + let s = serde_json::to_string(&v0).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t = hir::TNominal("i32".to_string(), vector![]).into(); + let v1 = Seed(t).deserialize(&mut de).unwrap(); + assert_eq!(v0, v1); + assert_eq!(s, "1"); + } + + #[test] + fn serde_vec() { + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(3); + let v3 = Value::from(builtins::vec::Vec::from(vec![v0, v1, v2])); + let s = serde_json::to_string(&v3).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TNominal("Vec".to_string(), vector![t0]).into(); + let v4 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v3, v4); + assert_eq!(s, "[1,2,3]"); + } + + #[test] + fn serde_tuple() { + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(builtins::string::String::from("Hello")); + let v3 = Value::from(crate::dynamic::Tuple(vector![v0, v1, v2])); + let s = serde_json::to_string(&v3).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TNominal("i32".to_string(), vector![]).into(); + let t2 = hir::TNominal("String".to_string(), vector![]).into(); + let t3 = hir::TTuple(vector![t0, t1, t2], true).into(); + let v4 = Seed(t3).deserialize(&mut de).unwrap(); + assert_eq!(v3, v4); + assert_eq!(s, r#"[1,2,"Hello"]"#); + } + + #[test] + fn serde_record() { + let v0 = Value::from(1); + let v1 = Value::from(builtins::string::String::from("Hello")); + let v2 = Value::from(Record(hashmap! { + "a".to_string() => v0, + "b".to_string() => v1, + })); + let s = serde_json::to_string(&v2).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TNominal("String".to_string(), vector![]).into(); + let t2 = hir::TRecord(hir::fields_to_row(vector![("a".to_string(), t0), ("b".to_string(), t1),])).into(); + let v3 = Seed(t2).deserialize(&mut de).unwrap(); + assert_eq!(v2, v3); + assert!((s == r#"{"a":1,"b":"Hello"}"#) || (s == r#"{"b":"Hello","a":1}"#)); + } + + #[test] + fn serde_dict() { + let k0 = Value::from(builtins::string::String::from("a")); + let k1 = Value::from(builtins::string::String::from("b")); + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(builtins::dict::Dict::from(vec![(k0, v0), (k1, v1)].into_iter().collect::>())); + let s = serde_json::to_string(&v2).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("String".to_string(), vector![]).into(); + let t1 = hir::TNominal("i32".to_string(), vector![]).into(); + let t2 = hir::TNominal("Dict".to_string(), vector![t0, t1]).into(); + let v3 = Seed(t2).deserialize(&mut de).unwrap(); + assert_eq!(v2, v3); + assert!((s == r#"{"a":1,"b":2}"#) || (s == r#"{"b":2,"a":1}"#)); + } + + #[test] + fn serde_array() { + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(3); + let v3 = Value::from(crate::dynamic::Array(vector![v0, v1, v2])); + let s = serde_json::to_string(&v3).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TArray(t0, Some(3)).into(); + let v4 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v3, v4); + assert_eq!(s, "[1,2,3]"); + } + + #[test] + fn serde_set() { + let v0 = Value::from(1); + let v1 = Value::from(2); + let v2 = Value::from(builtins::set::Set::from(vec![v0, v1].into_iter().collect::>())); + let s = serde_json::to_string(&v2).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TNominal("Set".to_string(), vector![t0]).into(); + let v3 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v2, v3); + assert!((s == r#"[1,2]"#) || (s == r#"[2,1]"#)); + } + + #[test] + fn serde_option_some() { + let v0 = Value::from(1); + let v1 = Value::from(builtins::option::Option::some(v0)); + let s = serde_json::to_string(&v1).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TNominal("Option".to_string(), vector![t0]).into(); + let v2 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v1, v2); + assert_eq!(s, "1"); + } + + #[test] + fn serde_option_none() { + let v0 = Value::from(builtins::option::Option::none()); + let s = serde_json::to_string(&v0).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TNominal("Option".to_string(), vector![t0]).into(); + let v2 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v0, v2); + assert_eq!(s, "null"); + } + + #[test] + fn serde_result_ok() { + let v0 = Value::from(1); + let v1 = Value::from(builtins::result::Result::ok(v0)); + let s = serde_json::to_string(&v1).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TNominal("Result".to_string(), vector![t0]).into(); + let v2 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v1, v2); + assert_eq!(s, r#"{"Ok":1}"#); + } + + #[test] + fn serde_result_err() { + let v0 = builtins::string::String::from("Hello"); + let v1 = Value::from(builtins::result::Result::error(v0)); + let s = serde_json::to_string(&v1).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TNominal("Result".to_string(), vector![t0]).into(); + let v2 = Seed::deserialize(Seed(t1), &mut de).unwrap(); + assert_eq!(v1, v2); + assert_eq!(s, r#"{"Err":"Hello"}"#); + } + + #[test] + fn serde_matrix() { + let v9 = Value::from(crate::dynamic::Matrix::I32(builtins::matrix::Matrix::new([2, 2]))); + let s = serde_json::to_string(&v9).unwrap(); + let mut de = serde_json::Deserializer::from_str(&s); + let t0 = hir::TNominal("i32".to_string(), vector![]).into(); + let t1 = hir::TNominal("Matrix".to_string(), vector![t0]).into(); + let v10 = Seed(t1).deserialize(&mut de).unwrap(); + assert_eq!(v9, v10); + assert_eq!(s, r#"{"v":1,"dim":[2,2],"data":[0,0,0,0]}"#); + } + + #[test] + fn serde_type_variable() { + let mut de = serde_json::Deserializer::from_str("1"); + let t = hir::TVar("a".to_string()).into(); + assert!(Seed(t).deserialize(&mut de).is_err()); + } + + #[test] + fn serde_type_error() { + let mut de = serde_json::Deserializer::from_str("1.0"); + let t = hir::TNominal("i32".to_string(), vector![]).into(); + assert!(Seed(t).deserialize(&mut de).is_err()); + } +} diff --git a/arc-lang/crates/compiler/irs/value/src/ord.rs b/arc-lang/crates/compiler/irs/value/src/ord.rs new file mode 100644 index 000000000..a744318e8 --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/src/ord.rs @@ -0,0 +1,97 @@ +use crate::*; + +impl PartialOrd for Value { + fn partial_cmp(&self, other: &Self) -> Option { + match (self.kind.as_ref(), other.kind.as_ref()) { + (VAggregator(a), VAggregator(b)) => unreachable!(), + (VArray(a), VArray(b)) => a.partial_cmp(b), + (VBlob(a), VBlob(b)) => unreachable!(), + (VBool(a), VBool(b)) => a.partial_cmp(b), + (VChar(a), VChar(b)) => a.partial_cmp(b), + (VDiscretizer(a), VDiscretizer(b)) => unreachable!(), + (VDuration(a), VDuration(b)) => a.partial_cmp(b), + (VEncoding(a), VEncoding(b)) => a.partial_cmp(b), + (VF32(a), VF32(b)) => a.partial_cmp(b), + (VF64(a), VF64(b)) => a.partial_cmp(b), + (VFile(a), VFile(b)) => unreachable!(), + (VFunction(a), VFunction(b)) => a.partial_cmp(b), + (VI8(a), VI8(b)) => a.partial_cmp(b), + (VI16(a), VI16(b)) => a.partial_cmp(b), + (VI32(a), VI32(b)) => a.partial_cmp(b), + (VI64(a), VI64(b)) => a.partial_cmp(b), + (VU8(a), VU8(b)) => a.partial_cmp(b), + (VU16(a), VU16(b)) => a.partial_cmp(b), + (VU32(a), VU32(b)) => a.partial_cmp(b), + (VU64(a), VU64(b)) => a.partial_cmp(b), + (VUsize(a), VUsize(b)) => a.partial_cmp(b), + (VMatrix(a), VMatrix(b)) => unreachable!(), + (VModel(a), VModel(b)) => unreachable!(), + (VOption(a), VOption(b)) => a.partial_cmp(b), + (VPath(a), VPath(b)) => a.partial_cmp(b), + (VReader(a), VReader(b)) => unreachable!(), + (VRecord(a), VRecord(b)) => a.partial_cmp(b), + (VVariant(a), VVariant(b)) => a.partial_cmp(b), + (VResult(a), VResult(b)) => a.partial_cmp(b), + (VSocketAddr(a), VSocketAddr(b)) => a.partial_cmp(b), + (VStream(a), VStream(b)) => unreachable!(), + (VString(a), VString(b)) => a.partial_cmp(b), + (VTime(a), VTime(b)) => a.partial_cmp(b), + (VTimeSource(a), VTimeSource(b)) => unreachable!(), + (VTuple(a), VTuple(b)) => a.partial_cmp(b), + (VUsize(a), VUsize(b)) => a.partial_cmp(b), + (VUnit(a), VUnit(b)) => a.partial_cmp(b), + (VUrl(a), VUrl(b)) => a.partial_cmp(b), + (VVec(a), VVec(b)) => a.partial_cmp(b), + (VWriter(a), VWriter(b)) => unreachable!(), + _ => unreachable!(), + } + } +} + +impl Ord for Value { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + match (self.kind.as_ref(), other.kind.as_ref()) { + (VAggregator(a), VAggregator(b)) => unreachable!(), + (VArray(a), VArray(b)) => a.cmp(b), + (VBlob(a), VBlob(b)) => unreachable!(), + (VBool(a), VBool(b)) => a.cmp(b), + (VChar(a), VChar(b)) => a.cmp(b), + (VDiscretizer(a), VDiscretizer(b)) => unreachable!(), + (VDuration(a), VDuration(b)) => a.cmp(b), + (VEncoding(a), VEncoding(b)) => a.cmp(b), + (VF32(a), VF32(b)) => unreachable!(), + (VF64(a), VF64(b)) => unreachable!(), + (VFile(a), VFile(b)) => unreachable!(), + (VFunction(a), VFunction(b)) => a.cmp(b), + (VI8(a), VI8(b)) => a.cmp(b), + (VI16(a), VI16(b)) => a.cmp(b), + (VI32(a), VI32(b)) => a.cmp(b), + (VI64(a), VI64(b)) => a.cmp(b), + (VU8(a), VU8(b)) => a.cmp(b), + (VU16(a), VU16(b)) => a.cmp(b), + (VU32(a), VU32(b)) => a.cmp(b), + (VU64(a), VU64(b)) => a.cmp(b), + (VUsize(a), VUsize(b)) => a.cmp(b), + (VMatrix(a), VMatrix(b)) => unreachable!(), + (VModel(a), VModel(b)) => unreachable!(), + (VOption(a), VOption(b)) => a.cmp(b), + (VPath(a), VPath(b)) => a.cmp(b), + (VReader(a), VReader(b)) => unreachable!(), + (VRecord(a), VRecord(b)) => a.cmp(b), + (VVariant(a), VVariant(b)) => a.cmp(b), + (VResult(a), VResult(b)) => a.cmp(b), + (VSocketAddr(a), VSocketAddr(b)) => a.cmp(b), + (VStream(a), VStream(b)) => unreachable!(), + (VString(a), VString(b)) => a.cmp(b), + (VTime(a), VTime(b)) => a.cmp(b), + (VTimeSource(a), VTimeSource(b)) => unreachable!(), + (VTuple(a), VTuple(b)) => a.cmp(b), + (VUsize(a), VUsize(b)) => a.cmp(b), + (VUnit(a), VUnit(b)) => a.cmp(b), + (VUrl(a), VUrl(b)) => a.cmp(b), + (VVec(a), VVec(b)) => a.cmp(b), + (VWriter(a), VWriter(b)) => unreachable!(), + _ => unreachable!(), + } + } +} diff --git a/arc-lang/crates/compiler/irs/value/src/ser.rs b/arc-lang/crates/compiler/irs/value/src/ser.rs new file mode 100644 index 000000000..6ae858459 --- /dev/null +++ b/arc-lang/crates/compiler/irs/value/src/ser.rs @@ -0,0 +1,56 @@ +use crate::*; + +impl Serialize for Value { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match self.kind.as_ref() { + VAggregator(v) => v.serialize(serializer), + VArray(v) => v.0.serialize(serializer), + VBlob(v) => v.serialize(serializer), + VBool(v) => v.serialize(serializer), + VChar(v) => v.serialize(serializer), + VDict(v) => v.serialize(serializer), + VDiscretizer(v) => v.serialize(serializer), + VDuration(v) => v.serialize(serializer), + VEncoding(v) => v.serialize(serializer), + VF32(v) => v.serialize(serializer), + VF64(v) => v.serialize(serializer), + VFile(v) => unreachable!(), + VFunction(v) => v.serialize(serializer), + VI128(v) => v.serialize(serializer), + VI16(v) => v.serialize(serializer), + VI32(v) => v.serialize(serializer), + VI64(v) => v.serialize(serializer), + VI8(v) => v.serialize(serializer), + VMatrix(v) => v.serialize(serializer), + VModel(v) => v.serialize(serializer), + VOption(v) => v.serialize(serializer), + VPath(v) => v.serialize(serializer), + VReader(v) => v.serialize(serializer), + VRecord(v) => v.serialize(serializer), + VResult(v) => v.serialize(serializer), + VSet(v) => v.serialize(serializer), + VSocketAddr(v) => v.serialize(serializer), + VStream(v) => unreachable!(), + VString(v) => v.serialize(serializer), + VTime(v) => v.serialize(serializer), + VTimeSource(v) => v.serialize(serializer), + VTuple(v) => v.serialize(serializer), + VU128(v) => v.serialize(serializer), + VU16(v) => v.serialize(serializer), + VU32(v) => v.serialize(serializer), + VU64(v) => v.serialize(serializer), + VU8(v) => v.serialize(serializer), + VUnit(v) => v.serialize(serializer), + VUrl(v) => v.serialize(serializer), + VUsize(v) => v.serialize(serializer), + VVariant(v) => v.serialize(serializer), + VVec(v) => v.serialize(serializer), + VWriter(v) => v.serialize(serializer), + VDataflow(v) => unreachable!(), + VInstance(v) => unreachable!(), + } + } +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/Cargo.toml b/arc-lang/crates/compiler/passes/ast-prelude/Cargo.toml new file mode 100644 index 000000000..6b3c5dc32 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "ast-prelude" +version.workspace = true +edition.workspace = true + +[dependencies] +ast.workspace = true +info.workspace = true +im-rc.workspace = true +utils.workspace = true diff --git a/arc-lang/crates/compiler/passes/ast-prelude/rustfmt.toml b/arc-lang/crates/compiler/passes/ast-prelude/rustfmt.toml new file mode 100644 index 000000000..1116a3d48 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/rustfmt.toml @@ -0,0 +1,2 @@ +max_width = 200 +fn_call_width = 200 diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/aggregator.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/aggregator.rs new file mode 100644 index 000000000..3a8782dea --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/aggregator.rs @@ -0,0 +1,25 @@ +use ast::Type; + +use super::function::fun; +use super::rust; +use super::t; +use super::tc; +use super::tuple::tuple; + +pub(crate) fn aggregator(i: Type, p: Type, o: Type) -> Type { + tc("Aggregator", [i, p, o]) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Aggregator", ["I", "P", "O"], [rust("Aggregator")]) + .f("aggregator", ["I", "P", "O"], [fun([t("I")], t("P")), fun([t("P"), t("P")], t("P")), fun([t("P")], t("O"))], aggregator(t("I"), t("P"), t("O")), [rust("Aggregator::aggregator")]) + // .f( + // "compose", + // ["I0", "P0", "O0", "I1", "P1", "O1"], + // [aggregator(t("I0"), t("P0"), t("O0")), aggregator(t("I1"), t("P1"), t("O1"))], + // aggregator(tuple([t("I0"), t("I1")]), tuple([t("P0"), t("P1")]), tuple([t("O0"), t("O1")])), + // [rust("Aggregator::compose")], + // ) + ; +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/array.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/array.rs new file mode 100644 index 000000000..75a889fd4 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/array.rs @@ -0,0 +1,21 @@ +use std::io::Result; +use std::io::Write; + +use super::usize::usize; +use ast::Type; +use ast::TypeKind::TArray; +use im_rc::vector; +use im_rc::Vector; +use info::Info; + +use super::t; + +pub(crate) fn array(t: Type) -> Type { + TArray(t, None).with(Info::Builtin) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .f("array_get", ["T"], [array(t("T")), usize()], t("T"), []) + .f("array_set", ["T"], [array(t("T")), usize(), t("T")], array(t("T")), []); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/blob.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/blob.rs new file mode 100644 index 000000000..671db92cc --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/blob.rs @@ -0,0 +1,12 @@ +use ast::Type; + +use super::rust; +use super::t; + +pub(crate) fn blob() -> Type { + t("Blob") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("Blob", [], [rust("Blob")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/bool.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/bool.rs new file mode 100644 index 000000000..731af4886 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/bool.rs @@ -0,0 +1,18 @@ +use ast::binop; +use ast::unop; + +use super::mlir; +use super::rust; +use super::t; + +pub(crate) fn bool() -> ast::Type { + t("bool") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("bool", [], [rust("bool"), mlir("si1")]) + .f(unop!(!), [], [bool()], bool(), [rust("(|a| !a)"), mlir("not_i1")]) + .f(binop!(or), [], [bool(), bool()], bool(), [rust("(|a,b| a||b)"), mlir("or_i32")]) + .f(binop!(and), [], [bool(), bool()], bool(), [rust("(|a,b| a&&b)"), mlir("and_i32")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/char.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/char.rs new file mode 100644 index 000000000..7dbe3170f --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/char.rs @@ -0,0 +1,12 @@ +use ast::Type; + +use super::rust; +use super::t; + +pub(crate) fn char() -> Type { + t("char") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("char", [], [rust("char")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/dataflow.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/dataflow.rs new file mode 100644 index 000000000..44b3cfbf6 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/dataflow.rs @@ -0,0 +1,19 @@ +use ast::Type; + +use super::array; +use super::array::array; +use super::instance::instance; +use super::rust; +use super::t; +use super::unit::unit; + +pub(crate) fn dataflow() -> Type { + t("Dataflow") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Dataflow", [], [rust("Dataflow")]) + .f("run", [], [dataflow()], instance(), [rust("Dataflow::run")]) + .f("merge", [], [array(dataflow())], dataflow(), [rust("Dataflow::merge")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/dict.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/dict.rs new file mode 100644 index 000000000..d5fe6080e --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/dict.rs @@ -0,0 +1,21 @@ +use ast::Type; + +use super::bool::bool; +use super::rust; +use super::t; +use super::tc; +use super::tuple::tuple; + +pub(crate) fn dict(k: Type, v: Type) -> Type { + tc("Dict", [k, v]) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Dict", ["K", "T"], [rust("Dict")]) + .f("new", ["K", "T"], [], dict(t("K"), t("T")), [rust("Dict::new")]) + .f("insert", ["K", "T"], [dict(t("K"), t("T")), t("K"), t("T")], dict(t("K"), t("T")), [rust("Dict::insert")]) + .f("remove", ["K", "T"], [dict(t("K"), t("T")), t("K")], dict(t("K"), t("T")), [rust("Dict::remove")]) + .f("get", ["K", "T"], [dict(t("K"), t("T")), t("K")], tc("Option", [t("T")]), [rust("Dict::get")]) + .f("contains", ["K", "T"], [dict(t("K"), t("T")), t("K")], bool(), [rust("Dict::contains")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/discretizer.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/discretizer.rs new file mode 100644 index 000000000..ecf34eccc --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/discretizer.rs @@ -0,0 +1,23 @@ +use std::io::Result; +use std::io::Write; + +use ast::Type; + +use super::duration::duration; +use super::i32::i32; +use super::rust; +use super::t; + +pub(crate) fn discretizer() -> Type { + t("Discretizer") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Discretizer", [], [rust("Discretizer")]) + .f("tumbling", [], [duration()], discretizer(), [rust("Discretizer::tumbling")]) + .f("sliding", [], [duration(), duration()], discretizer(), [rust("Discretizer::sliding")]) + .f("session", [], [duration()], discretizer(), [rust("Discretizer::session")]) + .f("counting", [], [i32()], discretizer(), [rust("Discretizer::counting")]) + .f("moving", [], [i32(), i32()], discretizer(), [rust("Discretizer::moving")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/duration.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/duration.rs new file mode 100644 index 000000000..31853c6a2 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/duration.rs @@ -0,0 +1,25 @@ +use std::io::Result; +use std::io::Write; + +use ast::Type; + +use super::i32::i32; +use super::rust; +use super::t; + +pub(crate) fn duration() -> Type { + t("Duration") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Duration", [], [rust("Duration")]) + .f("__s", [], [i32()], duration(), [rust("Duration::seconds")]) + .f("__ms", [], [i32()], duration(), [rust("Duration::milliseconds")]) + .f("__us", [], [i32()], duration(), [rust("Duration::microseconds")]) + .f("__ns", [], [i32()], duration(), [rust("Duration::nanoseconds")]) + .f("from_seconds", [], [i32()], duration(), [rust("Duration::from_seconds")]) + .f("from_milliseconds", [], [i32()], duration(), [rust("Duration::from_milliseconds")]) + .f("from_microseconds", [], [i32()], duration(), [rust("Duration::from_microseconds")]) + .f("from_nanoseconds", [], [i32()], duration(), [rust("Duration::from_nanoseconds")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/encoding.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/encoding.rs new file mode 100644 index 000000000..398ede541 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/encoding.rs @@ -0,0 +1,16 @@ +use ast::Type; + +use super::char::char; +use super::rust; +use super::t; + +pub(crate) fn encoding() -> Type { + t("Encoding") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Encoding", [], [rust("Encoding")]) + .f("csv", [], [char()], encoding(), [rust("Encoding::csv")]) + .f("json", [], [], encoding(), [rust("Encoding::json")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/f32.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/f32.rs new file mode 100644 index 000000000..cdef3228a --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/f32.rs @@ -0,0 +1,16 @@ +use super::mlir; +use super::rust; +use super::t; + +pub(crate) fn f32() -> ast::Type { + t("f32") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("f32", [], [rust("f32"), mlir("f32")]) + .f("add_f32", [], [f32(), f32()], f32(), [rust("f32::add_f32"), mlir("add_f32")]) + .f("sub_f32", [], [f32(), f32()], f32(), [rust("f32::sub_f32"), mlir("sub_f32")]) + .f("mul_f32", [], [f32(), f32()], f32(), [rust("f32::mul_f32"), mlir("mul_f32")]) + .f("div_f32", [], [f32(), f32()], f32(), [rust("f32::div_f32"), mlir("div_f32")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/f64.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/f64.rs new file mode 100644 index 000000000..6af6800c7 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/f64.rs @@ -0,0 +1,15 @@ +use ast::Type; +use ast::unop; + +use super::mlir; +use super::rust; +use super::t; + +pub(crate) fn f64() -> Type { + t("f64") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("f64", [], [rust("f64"), mlir("f64")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/file.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/file.rs new file mode 100644 index 000000000..1dd9038d1 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/file.rs @@ -0,0 +1,21 @@ +use ast::Type; + +use super::blob::blob; +use super::path::path; +use super::rust; +use super::string::string; +use super::t; +use super::unit::unit; + +pub(crate) fn file() -> Type { + t("File") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("File", [], [rust("File")]) + .f("open", [], [path()], file(), [rust("File::open")]) + .f("read_to_string", [], [file()], string(), [rust("File::read_to_string")]) + .f("read_to_bytes", [], [file()], blob(), [rust("File::read_to_bytes")]) + .f("inspect", [], [file()], unit(), [rust("File::inspect")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/function.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/function.rs new file mode 100644 index 000000000..a6e8de85e --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/function.rs @@ -0,0 +1,9 @@ +use ast::Type; +use ast::TypeKind::TFun; +use info::Info; + +pub(crate) fn fun(args: [Type; N], ret: Type) -> Type { + TFun(args.into_iter().collect(), ret).with(Info::Builtin) +} + +pub(crate) fn declare(builder: &mut super::Builder) {} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i128.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i128.rs new file mode 100644 index 000000000..e7db19e39 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i128.rs @@ -0,0 +1,11 @@ +use super::mlir; +use super::rust; +use super::t; + +pub(crate) fn i128() -> ast::Type { + t("i128") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("i128", [], [rust("i128"), mlir("si128")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i16.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i16.rs new file mode 100644 index 000000000..f923fea73 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i16.rs @@ -0,0 +1,12 @@ +use ast::Type; + +use super::rust; +use super::t; + +pub(crate) fn i16() -> Type { + t("i16") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("i16", [], [rust("i16")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i32.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i32.rs new file mode 100644 index 000000000..36bda2e2a --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i32.rs @@ -0,0 +1,34 @@ +use ast::binop; +use ast::unop; + +use super::bool::bool; +use super::mlir; +use super::rust; +use super::string::string; +use super::t; +use super::usize::usize; + +pub(crate) fn i32() -> ast::Type { + t("i32") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("i32", [], [rust("i32"), mlir("si32")]) + .f(unop!(-), [], [i32()], i32(), [rust("(|a| -a)"), mlir("neq_i32")]) + .f(unop!(+), [], [i32()], i32(), [rust("(|a| a)"), mlir("neq_i32")]) + .f(binop!(+), [], [i32(), i32()], i32(), [rust("(|a,b| a+b)"), mlir("add_i32")]) + .f(binop!(-), [], [i32(), i32()], i32(), [rust("(|a,b| a-b)"), mlir("sub_i32")]) + .f(binop!(*), [], [i32(), i32()], i32(), [rust("(|a,b| a*b)"), mlir("mul_i32")]) + .f(binop!(/), [], [i32(), i32()], i32(), [rust("(|a,b| a/b)"), mlir("div_i32")]) + .f(binop!(>=), [], [i32(), i32()], bool(), [rust("(|a,b| a>=b)"), mlir("geq_i32")]) + .f(binop!(<=), [], [i32(), i32()], bool(), [rust("(|a,b| a<=b)"), mlir("leq_i32")]) + .f(binop!(<), [], [i32(), i32()], bool(), [rust("(|a,b| a), [], [i32(), i32()], bool(), [rust("(|a,b| a>b)"), mlir("gt_i32")]) + .f(binop!(==), [], [i32(), i32()], bool(), [rust("(|a,b| a==b)"), mlir("eq_i32")]) + .f(binop!(!=), [], [i32(), i32()], bool(), [rust("(|a,b| a!=b)"), mlir("neq_i32")]) + .f(unop!(-), [], [i32()], i32(), [rust("(|a| -a)")]) + .f(unop!(+), [], [i32()], i32(), [rust("(|a| a)")]) + .f("as_usize", [], [i32()], usize(), [rust("(|a| a as usize)")]) + .f("i32_to_string", [], [i32()], string(), [rust("(|a| a.to_string())")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i64.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i64.rs new file mode 100644 index 000000000..5c74f5153 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i64.rs @@ -0,0 +1,11 @@ +use super::mlir; +use super::rust; +use super::t; + +pub(crate) fn i64() -> ast::Type { + t("i64") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("i64", [], [rust("i64"), mlir("si64")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i8.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i8.rs new file mode 100644 index 000000000..4b8a541a7 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/i8.rs @@ -0,0 +1,13 @@ +use ast::Type; + +use super::mlir; +use super::rust; +use super::t; + +pub(crate) fn i8() -> Type { + t("i8") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("i8", [], [rust("i8"), mlir("si8")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/instance.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/instance.rs new file mode 100644 index 000000000..1277fef72 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/instance.rs @@ -0,0 +1,19 @@ +use ast::Type; + +use super::array; +use super::array::array; +use super::path::path; +use super::rust; +use super::t; +use super::unit::unit; + +pub(crate) fn instance() -> Type { + t("Instance") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Instance", [], [rust("Instance")]) + .f("logpath", [], [instance()], path(), [rust("(|| ())")]) + .f("kill", [], [instance()], unit(), [rust("(|| ())")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/keyed_stream.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/keyed_stream.rs new file mode 100644 index 000000000..bc16733f6 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/keyed_stream.rs @@ -0,0 +1,35 @@ +use crate::declarations::vec::vec; +use ast::Type; + +use super::aggregator::aggregator; +use super::bool::bool; +use super::dataflow::dataflow; +use super::discretizer::discretizer; +use super::encoding::encoding; +use super::function::fun; +use super::keyed_stream; +use super::reader::reader; +use super::rust; +use super::stream::stream; +use super::t; +use super::tc; +use super::time_source::time_source; +use super::writer::writer; + +pub(crate) fn keyed_stream(k: Type, t: Type) -> Type { + tc("KeyedStream", [k, t]) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("KeyedStream", ["K", "T"], [rust("KeyedStream")]) + .f("keyed_source", ["K", "T"], [reader(), encoding(), time_source(t("T"))], keyed_stream(t("K"), t("T")), [rust("KeyedStream::source")]) + .f("keyed_sink", ["K", "T"], [keyed_stream(t("K"), t("T")), writer(), encoding()], dataflow(), [rust("KeyedStream::sink")]) + .f("keyed_map", ["K", "A", "B"], [keyed_stream(t("K"), t("A")), fun([t("A")], t("B"))], keyed_stream(t("K"), t("B")), [rust("KeyedStream::map")]) + .f("keyed_filter", ["K", "T"], [keyed_stream(t("K"), t("T")), fun([t("T")], bool())], keyed_stream(t("K"), t("T")), [rust("KeyedStream::filter")]) + .f("keyed_flatmap", ["K", "A", "B"], [keyed_stream(t("K"), vec(t("A"))), fun([t("A")], vec(t("B")))], keyed_stream(t("K"), t("B")), [rust("KeyedStream::flatmap")]) + .f("keyed_flatten", ["K", "T"], [keyed_stream(t("K"), vec(t("A")))], keyed_stream(t("K"), t("B")), [rust("KeyedStream::flatten")]) + .f("keyed_window", ["K", "I", "P", "O"], [keyed_stream(t("K"), t("I")), discretizer(), aggregator(t("I"), t("P"), t("O"))], keyed_stream(t("K"), t("O")), [rust("KeyedStream::window")]) + .f("keyed_keyby", ["K0", "K1", "T"], [stream(t("T")), fun([t("T")], t("K0"))], keyed_stream(t("K1"), t("T")), [rust("KeyedStream::keyby")]) + .f("unkey", ["K", "T"], [keyed_stream(t("K"), t("T"))], stream(t("T")), [rust("KeyedStream::unkey")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/matrix.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/matrix.rs new file mode 100644 index 000000000..958c3f5bf --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/matrix.rs @@ -0,0 +1,20 @@ +use ast::Type; + +use super::rust; +use super::t; +use super::tc; +use super::usize::usize; +use super::vec::vec; + +pub(crate) fn matrix(t: Type) -> Type { + tc("Matrix", [t]) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Matrix", ["T"], [rust("Matrix")]) + .f("zeros", ["T"], [usize(), usize()], matrix(t("T")), []) + .f("insert_axis", ["T"], [matrix(t("T")), usize()], matrix(t("T")), []) + .f("remove_axis", ["T"], [matrix(t("T")), usize()], matrix(t("T")), []) + .f("into_vec", ["T"], [matrix(t("T"))], vec(t("T")), []); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/mod.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/mod.rs new file mode 100644 index 000000000..845f4cd86 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/mod.rs @@ -0,0 +1,196 @@ +use std::collections::HashMap; + +use ast::Attr; +use ast::Bound; +use ast::Const; +use ast::Const::CString; +use ast::Generic; +use ast::Meta; +use ast::Name; +use ast::SBuiltinType; +use ast::StmtKind::SBuiltinClass; +use ast::StmtKind::SBuiltinDef; +use ast::StmtKind::SBuiltinInstance; +use ast::Type; +use ast::TypeKind::TArray; +use ast::TypeKind::TFun; +use ast::TypeKind::TName; +use ast::TypeKind::TTuple; +use ast::TypeKind::TUnit; +use im_rc::vector; +use im_rc::Vector; +use info::Info; + +pub mod aggregator; +pub mod array; +pub mod blob; +pub mod bool; +pub mod char; +pub mod dataflow; +pub mod dict; +pub mod discretizer; +pub mod duration; +pub mod encoding; +pub mod f32; +pub mod f64; +pub mod file; +pub mod function; +pub mod i128; +pub mod i16; +pub mod i32; +pub mod i64; +pub mod i8; +pub mod instance; +pub mod keyed_stream; +pub mod matrix; +pub mod model; +pub mod never; +pub mod option; +pub mod path; +pub mod reader; +pub mod record; +pub mod result; +pub mod socket; +pub mod stream; +pub mod string; +pub mod time; +pub mod time_source; +pub mod tuple; +pub mod u128; +pub mod u16; +pub mod u32; +pub mod u64; +pub mod u8; +pub mod unit; +pub mod url; +pub mod usize; +pub mod variant; +pub mod vec; +pub mod writer; + +pub fn prelude() -> Vector { + Builder::new() + .load(aggregator::declare) + .load(array::declare) + .load(blob::declare) + .load(bool::declare) + .load(char::declare) + .load(dataflow::declare) + .load(discretizer::declare) + .load(duration::declare) + .load(encoding::declare) + .load(f32::declare) + .load(f64::declare) + .load(file::declare) + .load(function::declare) + .load(i16::declare) + .load(i32::declare) + .load(i64::declare) + .load(i8::declare) + .load(instance::declare) + .load(keyed_stream::declare) + .load(matrix::declare) + .load(model::declare) + .load(option::declare) + .load(path::declare) + .load(reader::declare) + .load(record::declare) + .load(result::declare) + .load(socket::declare) + .load(stream::declare) + .load(string::declare) + .load(time::declare) + .load(time_source::declare) + .load(tuple::declare) + .load(u16::declare) + .load(u32::declare) + .load(u64::declare) + .load(u8::declare) + .load(unit::declare) + .load(url::declare) + .load(usize::declare) + .load(variant::declare) + .load(vec::declare) + .load(writer::declare) + .load(i128::declare) + .load(u128::declare) + .build() +} + +fn t(name: &str) -> Type { + TName(name.into(), vector![]).with(Info::Builtin) +} + +fn tc(name: &str, args: [Type; N]) -> Type { + TName(name.into(), args.into_iter().collect()).with(Info::Builtin) +} + +pub(crate) struct Builder { + types: Vec, + functions: Vec, +} + +pub fn mlir(s: &str) -> (&str, Option) { + ("mlir", Some(CString(s.to_owned()))) +} + +pub fn rust(s: &str) -> (&str, Option) { + ("rust", Some(CString(s.to_owned()))) +} + +pub fn noop() -> &'static str { + "(|| ())" +} + +fn meta(attrs: [(&str, Option); N]) -> Vector { + attrs + .into_iter() + .map(|(x, c)| Attr { + x: x.to_string(), + c, + info: Info::Builtin, + }) + .collect() +} + +impl Builder { + fn new() -> Self { + Self { types: vec![], functions: vec![] } + } + + fn load(&mut self, f: impl Fn(&mut Self)) -> &mut Self { + f(self); + self + } + + fn t(&mut self, x: &str, gs: [&str; M], attrs: [(&str, Option); N]) -> &mut Self { + self.types + .push(SBuiltinType(meta(attrs), x.into(), gs.into_iter().map(Into::into).collect(), vector![]).with(Info::Builtin)); + self + } + + // fn class(&mut self, x: &str, gs: [&str; N], bs: [Bound; M]) -> &mut Self { + // self.prelude + // .push(SBuiltinClass(vector![], x.into(), gs.into_iter().map(Into::into).collect(), bs.into_iter().collect()).with(Info::Builtin)); + // self + // } + + // fn instance(&mut self, x: &str, gs: [&str; N], bs: [Bound; M], t: Type) -> &mut Self { + // self.prelude + // .push(SBuiltinInstance(vector![], x.into(), gs.into_iter().map(Into::into).collect(), bs.into_iter().map(Into::into).collect(), t).with(Info::Builtin)); + // self + // } + + fn f(&mut self, x: &str, gs: [&str; M], ts: [Type; K], t: Type, attrs: [(&str, Option); N]) -> &mut Self { + let t = if matches!(t.kind.as_ref(), TUnit) { None } else { Some(t) }; + self.functions + .push(SBuiltinDef(meta(attrs), x.into(), gs.into_iter().map(Into::into).collect(), ts.into_iter().collect(), t, vector![]).with(Info::Builtin)); + self + } + + fn build(&mut self) -> Vector { + let mut prelude = std::mem::take(&mut self.types); + prelude.append(&mut self.functions); + prelude.into() + } +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/model.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/model.rs new file mode 100644 index 000000000..ae4299ea2 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/model.rs @@ -0,0 +1,19 @@ +use ast::Type; + +use super::blob::blob; +use super::file::file; +use super::matrix::matrix; +use super::rust; +use super::t; +use super::tc; + +pub(crate) fn model() -> Type { + t("Model") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Model", [], [rust("Model")]) + .f("load_model", [], [blob()], model(), [rust("Model::load")]) + .f("predict", ["I", "O"], [model(), matrix(t("I"))], matrix(t("O")), [rust("Model::predict")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/never.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/never.rs new file mode 100644 index 000000000..82db9ef02 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/never.rs @@ -0,0 +1,19 @@ +use ast::Type; +use ast::TypeKind::TNever; +use info::Info; + +use super::rust; +use super::string::string; +use super::unit::unit; + +pub(crate) fn never() -> Type { + TNever.with(Info::Builtin) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .f("todo", [], [], never(), [rust(r#"(|| todo!())"#)]) + .f("unreachable", [], [], never(), [rust(r#"(|| unreachable!())"#)]) + .f("panic", [], [string()], never(), [rust(r#"(|msg| panic!("{}", msg))"#)]) + .f("exit", [], [unit()], never(), [rust(r#"(|| std::process::exit(0))"#)]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/option.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/option.rs new file mode 100644 index 000000000..59f575837 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/option.rs @@ -0,0 +1,20 @@ +use ast::Type; + +use super::bool::bool; +use super::rust; +use super::t; +use super::tc; + +pub(crate) fn option(t: Type) -> Type { + tc("Option", [t]) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Option", ["T"], [rust("Option")]) + .f("some", ["T"], [t("T")], option(t("T")), [rust("Option::some")]) + .f("none", ["T"], [], option(t("T")), [rust("Option::none")]) + .f("is_some", ["T"], [option(t("T"))], bool(), [rust("Option::is_some")]) + .f("is_none", ["T"], [option(t("T"))], bool(), [rust("Option::is_none")]) + .f("unwrap", ["T"], [option(t("T"))], t("T"), [rust("Option::unwrap")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/path.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/path.rs new file mode 100644 index 000000000..201d93151 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/path.rs @@ -0,0 +1,16 @@ +use ast::Type; + +use super::rust; +use super::string::string; +use super::t; + +pub(crate) fn path() -> Type { + t("Path") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Path", [], [rust("Path")]) + // + .f("path", [], [string()], path(), [rust("Path::new")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/reader.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/reader.rs new file mode 100644 index 000000000..22d378cf9 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/reader.rs @@ -0,0 +1,23 @@ +use ast::Type; + +use super::bool::bool; +use super::path::path; +use super::rust; +use super::socket::socket_addr; +use super::string::string; +use super::t; +use super::url::url; + +pub(crate) fn reader() -> Type { + t("Reader") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Reader", [], [rust("Reader")]) + .f("stdin_reader", [], [], reader(), [rust("Reader::stdin")]) + .f("file_reader", [], [path(), bool()], reader(), [rust("Reader::file")]) + .f("http_reader", [], [url()], reader(), [rust("Reader::http")]) + .f("tcp_reader", [], [socket_addr()], reader(), [rust("Reader::tcp")]) + .f("kafka_reader", [], [socket_addr(), string()], reader(), [rust("Reader::kafka")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/record.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/record.rs new file mode 100644 index 000000000..67a5d0398 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/record.rs @@ -0,0 +1 @@ +pub(crate) fn declare(builder: &mut super::Builder) {} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/result.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/result.rs new file mode 100644 index 000000000..c9cc91d37 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/result.rs @@ -0,0 +1,21 @@ +use ast::Type; + +use super::bool::bool; +use super::rust; +use super::t; +use super::tc; + +pub(crate) fn result(t: Type) -> Type { + tc("Result", [t]) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Result", ["T"], [rust("Result")]) + .f("ok", ["T"], [t("T")], result(t("T")), [rust("Result::ok")]) + .f("error", ["T"], [t("T")], result(t("T")), [rust("Result::error")]) + .f("is_ok", ["T"], [result(t("T"))], bool(), [rust("Result::is_ok")]) + .f("is_error", ["T"], [result(t("T"))], bool(), [rust("Result::is_error")]) + .f("unwrap_ok", ["T"], [result(t("T"))], t("T"), [rust("Result::unwrap_ok")]) + .f("unwrap_error", ["T"], [result(t("T"))], t("T"), [rust("Result::unwrap_error")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/socket.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/socket.rs new file mode 100644 index 000000000..6ef0768e6 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/socket.rs @@ -0,0 +1,15 @@ +use ast::Type; + +use super::rust; +use super::string::string; +use super::t; + +pub(crate) fn socket_addr() -> Type { + t("SocketAddr") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("SocketAddr", [], [rust("SocketAddr")]) + .f("socket", [], [string()], socket_addr(), [rust("SocketAddr::parse")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/stream.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/stream.rs new file mode 100644 index 000000000..9bac5975a --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/stream.rs @@ -0,0 +1,32 @@ +use ast::Type; + +use super::aggregator::aggregator; +use super::bool::bool; +use super::dataflow::dataflow; +use super::encoding::encoding; +use super::function::fun; +use super::keyed_stream::keyed_stream; +use super::reader::reader; +use super::rust; +use super::t; +use super::tc; +use super::time_source::time_source; +use super::vec::vec; +use super::writer::writer; + +pub(crate) fn stream(t: Type) -> Type { + tc("Stream", [t]) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Stream", ["T"], [rust("Stream")]) + .f("source", ["T"], [reader(), encoding(), time_source(t("T"))], stream(t("T")), [rust("Stream::source")]) + .f("sink", ["T"], [stream(t("T")), writer(), encoding()], dataflow(), [rust("Stream::sink")]) + .f("map", ["A", "B"], [stream(t("A")), fun([t("A")], t("B"))], stream(t("B")), [rust("Stream::map")]) + .f("filter", ["T"], [stream(t("T")), fun([t("T")], bool())], stream(t("T")), [rust("Stream::filter")]) + .f("flatmap", ["A", "B"], [stream(vec(t("A"))), fun([t("A")], vec(t("B")))], stream(t("B")), [rust("Stream::flatmap")]) + .f("flatten", ["T"], [stream(vec(t("A")))], stream(t("B")), [rust("Stream::flatten")]) + .f("window", ["I", "P", "O"], [stream(t("I")), t("Discretizer"), aggregator(t("I"), t("P"), t("O"))], stream(t("O")), [rust("Stream::window")]) + .f("keyby", ["K", "T"], [stream(t("T")), fun([t("T")], t("K"))], keyed_stream(t("K"), t("T")), [rust("Stream::keyby")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/string.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/string.rs new file mode 100644 index 000000000..d78d50893 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/string.rs @@ -0,0 +1,32 @@ +use ast::Type; + +use super::bool::bool; +use super::char::char; +use super::encoding::encoding; +use super::rust; +use super::t; +use super::tuple::tuple; +use super::usize::usize; +use super::vec::vec; + +pub(crate) fn string() -> Type { + t("String") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("String", [], [rust("String")]) + .f("new", [], [], string(), [rust("String::new")]) + .f("with_capacity", [], [usize()], string(), [rust("String::with_capacity")]) + .f("push_char", [], [string(), char()], string(), [rust("String::push")]) + .f("push_string", [], [string(), string()], string(), [rust("String::push_string")]) + .f("remove", [], [string(), usize()], tuple([string(), string()]), [rust("String::remove")]) + .f("insert_char", [], [string(), usize(), char()], string(), [rust("String::insert")]) + .f("is_empty", [], [string()], bool(), [rust("String::is_empty")]) + .f("split_off", [], [string(), usize()], tuple([string(), string()]), [rust("String::split_off")]) + .f("clear", [], [string()], string(), [rust("String::clear")]) + .f("len", [], [string()], usize(), [rust("String::len")]) + .f("decode", ["T"], [string(), encoding()], t("T"), [rust("String::decode")]) + .f("encode", ["T"], [t("T"), encoding()], string(), [rust("String::encode")]) + .f("lines", ["T"], [string()], vec(t("T")), [rust("String::lines")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/time.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/time.rs new file mode 100644 index 000000000..efaedf7ec --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/time.rs @@ -0,0 +1,24 @@ +use super::rust; +use super::i64::i64; +use super::i128::i128; +use super::string::string; +use super::i32::i32; +use super::Type; +use super::t; + +pub(crate) fn time() -> Type { + t("Time") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Time", [], [rust("Time")]) + .f("now", [], [], time(), [rust("Time::now")]) + .f("from_seconds", [], [i64()], time(), [rust("Time::from_seconds")]) + .f("from_nanoseconds", [], [i128()], time(), [rust("Time::from_nanoseconds")]) + .f("seconds", [], [time()], i64(), [rust("Time::seconds")]) + .f("nanoseconds", [], [time()], i128(), [rust("Time::nanoseconds")]) + .f("year", [], [time()], i32(), [rust("Time::year")]) + .f("from_string", [], [string(), string()], time(), [rust("Time::from_string")]) + .f("into_string", [], [time(), string()], string(), [rust("Time::to_string")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/time_source.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/time_source.rs new file mode 100644 index 000000000..915c6d569 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/time_source.rs @@ -0,0 +1,18 @@ +use ast::Type; + +use super::duration::duration; +use super::function::fun; +use super::rust; +use super::t; +use super::tc; + +pub(crate) fn time_source(t: Type) -> Type { + tc("TimeSource", [t]) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("TimeSource", ["T"], [rust("TimeSource")]) + .f("ingestion", ["T"], [duration()], time_source(t("T")), [rust("TimeSource::ingestion")]) + .f("event", ["T"], [duration(), duration(), fun([t("T")], duration())], time_source(t("T")), [rust("TimeSource::event")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/tuple.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/tuple.rs new file mode 100644 index 000000000..361323b53 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/tuple.rs @@ -0,0 +1,10 @@ +use ast::Type; +use ast::TypeKind::TTuple; +use im_rc::Vector; +use info::Info; + +pub(crate) fn tuple(ts: [Type; N]) -> Type { + TTuple(ts.into_iter().collect()).with(Info::Builtin) +} + +pub(crate) fn declare(builder: &mut super::Builder) {} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u128.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u128.rs new file mode 100644 index 000000000..40754ff2b --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u128.rs @@ -0,0 +1,13 @@ +use ast::Type; + +use super::mlir; +use super::rust; +use super::t; + +pub(crate) fn u128() -> Type { + t("u128") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("u128", [], [rust("u128"), mlir("si128")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u16.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u16.rs new file mode 100644 index 000000000..e60d94587 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u16.rs @@ -0,0 +1,12 @@ +use ast::Type; + +use super::rust; +use super::t; + +pub(crate) fn u16() -> Type { + t("u16") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("u16", [], [rust("u16")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u32.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u32.rs new file mode 100644 index 000000000..6fec74439 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u32.rs @@ -0,0 +1,12 @@ +use ast::Type; + +use super::rust; +use super::t; + +pub(crate) fn u16() -> Type { + t("u16") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("u32", [], [rust("u32")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u64.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u64.rs new file mode 100644 index 000000000..5bc3bc599 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u64.rs @@ -0,0 +1,12 @@ +use ast::Type; + +use super::rust; +use super::t; + +pub(crate) fn u64() -> Type { + t("u64") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("u64", [], [rust("u64")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u8.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u8.rs new file mode 100644 index 000000000..088bea3e1 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/u8.rs @@ -0,0 +1,12 @@ +use ast::Type; + +use super::rust; +use super::t; + +pub(crate) fn u64() -> Type { + t("u64") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("u8", [], [rust("u8")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/unit.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/unit.rs new file mode 100644 index 000000000..601e2feb8 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/unit.rs @@ -0,0 +1,23 @@ +use ast::Type; +use ast::TypeKind::TUnit; +use info::Info; + +use super::noop; +use super::rust; +use super::string::string; +use super::t; + +pub(crate) fn unit() -> Type { + TUnit.with(Info::Builtin) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .f("print", [], [string()], unit(), [rust(r#"(|x| println!("{}", x))"#)]) + .f("debug", ["T"], [t("T")], unit(), [rust(r#"(|x| println!("{:?}", x))"#)]) + .f("dataflow", [], [], unit(), [rust(noop())]) + .f("connect", [], [string()], unit(), [rust(noop())]) + .f("topics", [], [], unit(), [rust(noop())]) + .f("bifs", [], [], unit(), [rust(noop())]) + .f("typeof", ["T"], [t("T")], unit(), [rust(noop())]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/url.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/url.rs new file mode 100644 index 000000000..a8ff81485 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/url.rs @@ -0,0 +1,16 @@ +use ast::Type; + +use super::rust; +use super::string::string; +use super::t; + +pub(crate) fn url() -> Type { + t("Url") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Url", [], [rust("Url")]) + // + .f("url", [], [string()], url(), [rust("Url::parse")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/usize.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/usize.rs new file mode 100644 index 000000000..94573ed88 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/usize.rs @@ -0,0 +1,12 @@ +use ast::Type; + +use super::rust; +use super::t; + +pub(crate) fn usize() -> Type { + t("usize") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder.t("usize", [], [rust("usize")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/variant.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/variant.rs new file mode 100644 index 000000000..67a5d0398 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/variant.rs @@ -0,0 +1 @@ +pub(crate) fn declare(builder: &mut super::Builder) {} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/vec.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/vec.rs new file mode 100644 index 000000000..17acc7084 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/vec.rs @@ -0,0 +1,27 @@ +use ast::Type; +use im_rc::vector; + +use super::bool::bool; +use super::option::option; +use super::rust; +use super::t; +use super::tc; +use super::tuple::tuple; +use super::usize::usize; + +pub(crate) fn vec(v: Type) -> Type { + tc("Vec", [v]) +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Vec", ["T"], [rust("Vec")]) + .f("new", ["T"], [], vec(t("T")), [rust("Vec::new")]) + .f("push", ["T"], [vec(t("T")), t("T")], vec(t("T")), [rust("Vec::push")]) + .f("pop", ["T"], [vec(t("T"))], tuple([t("T"), option(t("T"))]), [rust("Vec::pop")]) + .f("len", ["T"], [vec(t("T"))], usize(), [rust("Vec::len")]) + .f("get", ["T"], [vec(t("T")), usize()], option(t("T")), [rust("Vec::get")]) + .f("insert", ["T"], [vec(t("T")), usize(), t("T")], vec(t("T")), [rust("Vec::insert")]) + .f("is_empty", ["T"], [vec(t("T"))], bool(), [rust("Vec::is_empty")]) + .f("sort", ["T"], [vec(t("T"))], vec(t("T")), [rust("Vec::sort")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/writer.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/writer.rs new file mode 100644 index 000000000..f9b41f60d --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/declarations/writer.rs @@ -0,0 +1,22 @@ +use ast::Type; + +use super::path::path; +use super::rust; +use super::socket::socket_addr; +use super::string::string; +use super::t; +use super::url::url; + +pub(crate) fn writer() -> Type { + t("Writer") +} + +pub(crate) fn declare(builder: &mut super::Builder) { + builder + .t("Writer", [], [rust("Writer")]) + .f("stdout_writer", [], [], writer(), [rust("Writer::stdout")]) + .f("file_writer", [], [path()], writer(), [rust("Writer::file")]) + .f("http_writer", [], [url()], writer(), [rust("Writer::http")]) + .f("tcp_writer", [], [socket_addr()], writer(), [rust("Writer::tcp")]) + .f("kafka_writer", [], [socket_addr(), string()], writer(), [rust("Writer::kafka")]); +} diff --git a/arc-lang/crates/compiler/passes/ast-prelude/src/lib.rs b/arc-lang/crates/compiler/passes/ast-prelude/src/lib.rs new file mode 100644 index 000000000..5c91e73bc --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-prelude/src/lib.rs @@ -0,0 +1,11 @@ +#![allow(unused)] +pub mod declarations; + +use ast::*; +use im_rc::vector; +use im_rc::Vector; +use info::Info; + +pub const MLIR_PRELUDE: &str = include_str!("prelude.mlir"); + +pub use declarations::prelude; diff --git a/arc-lang/stdlib/stdlib.mlir b/arc-lang/crates/compiler/passes/ast-prelude/src/prelude.mlir similarity index 100% rename from arc-lang/stdlib/stdlib.mlir rename to arc-lang/crates/compiler/passes/ast-prelude/src/prelude.mlir diff --git a/arc-lang/crates/compiler/passes/ast-to-hir/Cargo.toml b/arc-lang/crates/compiler/passes/ast-to-hir/Cargo.toml new file mode 100644 index 000000000..2dfbf4d82 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-to-hir/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "ast-to-hir" +version.workspace = true +edition.workspace = true + +[dependencies] +codegen.workspace = true +ast.workspace = true +hir.workspace = true +parser.workspace = true +name-gen.workspace = true +utils.workspace = true +info.workspace = true +diagnostics.workspace = true +im-rc.workspace = true +regex.workspace = true +lazy_static.workspace = true +ast-prelude.workspace = true +stack.workspace = true diff --git a/arc-lang/crates/compiler/passes/ast-to-hir/src/context.rs b/arc-lang/crates/compiler/passes/ast-to-hir/src/context.rs new file mode 100644 index 000000000..8ca7e5391 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-to-hir/src/context.rs @@ -0,0 +1,197 @@ +use diagnostics::Diagnostics; +use hir::*; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use name_gen::NameGen; +use stack::Stack; +use std::collections::VecDeque; +use std::rc::Rc; + +#[derive(Clone, Debug)] +pub struct Context { + next_type_var_uid: NameGen, + pub(crate) stack: Stack, + pub diagnostics: Diagnostics, +} + +#[derive(Clone, Debug)] +pub(crate) struct Scope { + kind: ScopeKind, + expr_namespace: Vec<(ast::Name, ExprDecl)>, // BIFs, Functions, variables, parameters + type_namespace: Vec<(ast::Name, TypeDecl)>, // BITs, Type aliases, generics, enums +} + +#[derive(Clone, Debug)] +pub(crate) enum ScopeKind { + Top, + Block, + While, + For, + Loop, + Def, + Fun, + Enum, + Type, + Arm, + Query, + QuerySelect, +} + +#[derive(Clone, Debug)] +pub enum ExprDecl { + Def(Info, usize, Vector), + Var(Info), + Val(Info), + Variant(Info, Name, Vector), +} + +impl ExprDecl { + pub fn info(&self) -> Info { + match self { + ExprDecl::Def(info, _, _) => *info, + ExprDecl::Var(info) => *info, + ExprDecl::Val(info) => *info, + ExprDecl::Variant(info, _, _) => *info, + } + } +} + +#[derive(Clone, Debug)] +pub enum TypeDecl { + Enum(Info, Vector, Vector<(Name, Type)>), + Type(Info, Vector, Type), + TypeArg(Info, Type), + Bit(Info, Vector), + Generic(Info), +} + +impl TypeDecl { + pub fn info(&self) -> Info { + match self { + TypeDecl::Enum(info, _, _) => *info, + TypeDecl::Type(info, _, _) => *info, + TypeDecl::TypeArg(info, _) => *info, + TypeDecl::Bit(info, _) => *info, + TypeDecl::Generic(info) => *info, + } + } +} + +impl Default for Context { + fn default() -> Self { + Context { + next_type_var_uid: NameGen::new("t"), + stack: Stack::new(ScopeKind::Top), + diagnostics: Diagnostics::default(), + } + } +} + +impl Context { + pub fn new() -> Self { + Self::default() + } + + pub(crate) fn is_inside_loop(&self) -> bool { + for scope in self.stack.iter() { + match scope.kind { + ScopeKind::Top => break, + ScopeKind::Block => continue, + ScopeKind::Loop => return true, + ScopeKind::While => return true, + ScopeKind::For => return true, + ScopeKind::Def => break, + ScopeKind::Fun => break, + ScopeKind::Enum => continue, + ScopeKind::Type => continue, + ScopeKind::Arm => continue, + ScopeKind::Query => continue, + ScopeKind::QuerySelect => continue, + } + } + false + } + + pub(crate) fn is_inside_infinite_loop(&self) -> bool { + for scope in self.stack.iter() { + match scope.kind { + ScopeKind::Top => break, + ScopeKind::Block => continue, + ScopeKind::Loop => return true, + ScopeKind::While => break, + ScopeKind::For => break, + ScopeKind::Def => break, + ScopeKind::Fun => break, + ScopeKind::Enum => continue, + ScopeKind::Type => continue, + ScopeKind::Arm => continue, + ScopeKind::Query => continue, + ScopeKind::QuerySelect => continue, + } + } + false + } + + pub(crate) fn is_inside_function(&self) -> bool { + for scope in self.stack.iter() { + match scope.kind { + ScopeKind::Top => break, + ScopeKind::Block => continue, + ScopeKind::Loop => continue, + ScopeKind::While => continue, + ScopeKind::For => continue, + ScopeKind::Def => return true, + ScopeKind::Fun => return true, + ScopeKind::Enum => continue, + ScopeKind::Type => continue, + ScopeKind::Arm => continue, + ScopeKind::Query => continue, + ScopeKind::QuerySelect => continue, + } + } + false + } + + // from (x, y) in source(..) # x, y + // select {x} # x + // where f(x) # x + // select {x, r:g(x)} # x, r + // into source(..) # x, r + pub(crate) fn query_variables(&self) -> Vector<(ast::Name, ExprDecl)> { + let mut variables = Vector::new(); + let mut scopes = self.stack.iter(); + while let Some(scope) = scopes.next() { + match scope.kind { + ScopeKind::Top => break, + ScopeKind::Block => continue, + ScopeKind::Loop => continue, + ScopeKind::While => continue, + ScopeKind::For => continue, + ScopeKind::Def => continue, + ScopeKind::Fun => continue, + ScopeKind::Enum => continue, + ScopeKind::Type => continue, + ScopeKind::Arm => continue, + ScopeKind::Query => { + // variables.extend(scope.expr_namespace.clone()); + continue; + } + ScopeKind::QuerySelect => { + // variables.extend(scope.expr_namespace.clone()); + continue; + } + } + } + variables + } + + pub(crate) fn typed(&mut self, f: impl FnOnce(Type) -> T) -> T { + f(self.new_type_var()) + } + + pub(crate) fn new_type_var(&mut self) -> Type { + TVar(self.next_type_var_uid.fresh()).into() + } +} diff --git a/arc-lang/crates/compiler/passes/ast-to-hir/src/lib.rs b/arc-lang/crates/compiler/passes/ast-to-hir/src/lib.rs new file mode 100644 index 000000000..ea7c9c658 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ast-to-hir/src/lib.rs @@ -0,0 +1,1002 @@ +//! AST => HIR: +//! * Name resolution +//! * Check that each expression variable and type variable is bound +//! * Disambiguate variants from functions and variables +//! * e.g., Foo(p) +//! * e.g., Foo(1) +//! * Disambiguate mutable variables from immutable variables +//! * Generate a unique identifier for each function, enum, type alias, and variable +//! * Generate type variables +//! * Each expr, pattern, and missing type (e.g., _) gets a type variable +//! * Syntax desugaring +//! * String interpolation desugaring +//! * Method call desugaring +//! * Convert records to rows +//! * Convert () and ! to nominal types +//! * Convert operators to functions +//! * Syntactic checks: +//! * No duplicate fields, variants or attributes +//! * No return outside of function, no break outside of loop +//! * No var captured by a function +//! * Correct number of expression arguments to functions +//! * Correct number of type arguments to type aliases and enums +//! * Check that only place expressions are mutated (variables, arrays, records) + +//! TODO: +//! * Disambiguate functions from variables +//! * e.g., foo[i32,i32] and foo[1,2,3] +//! * e.g., foo.bar() and Foo.Bar() +#![allow(unused)] +pub mod context; + +use ast::Body; +use ast::ExprField; +use context::ExprDecl; +use context::ScopeKind; +use context::TypeDecl; +use diagnostics::Diagnostics; +use diagnostics::Error; +use diagnostics::Warning; +use hir::*; +use im_rc::ordmap; +use im_rc::ordmap::Entry; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use regex::Matches; +use regex::Regex; +use utils::AssocVectorUtils; +use utils::OptionUtils; +use utils::VectorUtils; + +use crate::context::Context; + +pub fn process(ctx: &mut Context, ss: Vector) -> Vector { + ss.map(|s| lower_stmt(ctx, s)) +} + +pub fn lower_stmt(ctx: &mut Context, s: ast::Stmt) -> Stmt { + let info = s.info; + match s.kind { + ast::SNoop => SNoop.with(info), + ast::SVal(p, e) => { + let e = lower_expr(ctx, e); + let p = lower_pattern(ctx, p, false); + SVal(p, e).with(info) + } + ast::SVar(p, e) => { + let e = lower_expr(ctx, e); + let p = lower_pattern(ctx, p, true); + SVal(p, e).with(info) + } + ast::SExpr(e) => { + let e = lower_expr(ctx, e); + SExpr(e).with(info) + } + ast::SDef(m, x, gs, ps, t, bs, b) => { + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Def(info, ps.len(), gs.clone())); + let m = lower_meta(ctx, m); + ctx.stack.push_scope(ScopeKind::Def); + gs.clone() + .into_iter() + .for_each(|x| lower_generic(ctx, x, info)); + let ps = ps.mapm(ctx, |ctx, p| lower_pattern(ctx, p, false)); + let t = lower_type_or_fresh(ctx, t); + let b = lower_body(ctx, b); + ctx.stack.pop_scope(); + SDef(m, x, gs, ps, t, b).with(info) + } + // TODO: Fix so that enums are correctly lexically scoped, i.e., + // enum X { A } + // val a1 = X::A; + // use X::A; + // val a = A; + // Currently it won't work with generic types + ast::SEnum(m, x, gs, _bs, xts) => { + let m = lower_meta(ctx, m); + gs.clone() + .into_iter() + .for_each(|x| lower_generic(ctx, x, info)); + let xts = xts + .into_iter() + .filter_map(|v| lower_enum_variant(ctx, x.clone(), gs.clone(), v, info)) + .collect::>(); + ctx.stack + .bind_type_decl(x.clone(), TypeDecl::Enum(info, gs.clone(), xts.clone())); + SEnum(m, x, gs, xts).with(info) + } + ast::SType(m, x, gs, t) => { + let m = lower_meta(ctx, m); + ctx.stack.push_scope(ScopeKind::Type); + gs.clone() + .into_iter() + .for_each(|x| lower_generic(ctx, x, info)); + let t = lower_type(ctx, t); + ctx.stack.pop_scope(); + ctx.stack + .bind_type_decl(x.clone(), TypeDecl::Type(info, gs.clone(), t.clone())); + SNoop.with(info) + } + ast::SBuiltinDef(m, x, gs, ts, t, bs) => { + let m = lower_meta(ctx, m); + gs.clone() + .into_iter() + .for_each(|x| lower_generic(ctx, x, info)); + let ts = ts.mapm(ctx, lower_type); + let t = lower_type_or_unit(ctx, t); + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Def(info, ts.len(), gs.clone())); + SBif(m, x, gs, ts, t).with(info) + } + ast::SBuiltinType(m, x, gs, bs) => { + let m = lower_meta(ctx, m); + gs.clone() + .into_iter() + .for_each(|x| lower_generic(ctx, x, info)); + ctx.stack + .bind_type_decl(x.clone(), TypeDecl::Bit(info, gs.clone())); + SBit(m, x, gs).with(info) + } + ast::SBuiltinClass(_, _, _, _) => todo!(), + ast::SBuiltinInstance(_, _, _, _, _) => todo!(), + ast::SInject(_, _) => todo!(), + } +} + +fn lower_const(ctx: &mut Context, c: ast::Const) -> Const { + match c { + ast::CInt(c) => CInt(c), + ast::CFloat(c) => CFloat(c), + ast::CBool(c) => CBool(c), + ast::CString(c) => CString(c), + ast::CUnit => CUnit, + ast::CChar(c) => CChar(c), + } +} + +fn lower_meta(ctx: &mut Context, meta: ast::Meta) -> Meta { + let mut map = ordmap![]; + for a in meta.into_iter() { + if map.contains_key(&a.x) { + ctx.diagnostics.push_error(Error::DuplicateMetaKey { + key: a.x, + info: a.info, + }); + } else { + let c = a.c.map(|c| lower_const(ctx, c)); + map.insert(a.x, c); + } + } + map +} + +fn lower_generic(ctx: &mut Context, x: ast::Generic, info: Info) { + ctx.stack.bind_type_decl(x, TypeDecl::Generic(info)) +} + +fn lower_type(ctx: &mut Context, t: ast::Type) -> Type { + let info = t.info; + match (*t.kind).clone() { + ast::TParen(t) => lower_type(ctx, t), + ast::TFun(ts, t) => { + let ts = ts.mapm(ctx, lower_type); + let t = lower_type(ctx, t); + TFun(ts, t).into() + } + ast::TTuple(ts) => { + let ts = ts.mapm(ctx, lower_type); + TTuple(ts, true).into() + } + ast::TRecord(xts) => { + let xts = xts.mapm_assoc(ctx, lower_type); + let t = fields_to_rows(xts, TRowEmpty.into()); + TRecord(t).into() + } + ast::TRecordConcat(t0, t1) => { + let t0 = lower_type(ctx, t0); + let t1 = lower_type(ctx, t1); + TRecordConcat(t0, t1).into() + } + ast::TArrayConcat(t0, t1) => { + let t0 = lower_type(ctx, t0); + let t1 = lower_type(ctx, t1); + TArrayConcat(t0, t1).into() + } + ast::TName(x, ts) => match ctx.stack.find_type_decl(&x) { + Some(TypeDecl::Enum(info1, gs, _)) => { + let ts = lower_type_args_strict(ctx, x.clone(), ts, gs.clone(), info, info1); + TNominal(x, ts).into() + } + Some(TypeDecl::Bit(info1, gs)) => { + let ts = lower_type_args_strict(ctx, x.clone(), ts, gs.clone(), info, info1); + TNominal(x, ts).into() + } + Some(TypeDecl::Type(info1, gs, t)) => { + let ts = lower_type_args_strict(ctx, x.clone(), ts, gs.clone(), info, info1); + let ctx = gs + .into_iter() + .zip(ts) + .for_each(|(x, t)| ctx.stack.bind_type_decl(x, TypeDecl::TypeArg(info, t))); + TAlias(info1, info, t).into() + } + Some(TypeDecl::TypeArg(info1, t)) => t.into(), + Some(TypeDecl::Generic(_)) => { + if ts.len() > 0 { + ctx.diagnostics.push_error(Error::GenericWithArgs { + name: x, + info: t.info, + }); + TError.into() + } else { + TGeneric(x).into() + } + } + None => { + ctx.diagnostics.push_error(Error::UnresolvedTypeName { + name: x, + info: t.info, + }); + TError.into() + } + }, + ast::TArray(t, n) => { + let t = lower_type(ctx, t); + TArray(t, n).into() + } + ast::TUnit => TUnit.into(), + ast::TNever => TNever.into(), + ast::TIgnore => ctx.new_type_var(), + ast::TError => TError.into(), + } +} + +fn lower_pattern_name(ctx: &mut Context, x: Name, info: Info, m: bool) -> Pattern { + if m { + ctx.stack.bind_expr_decl(x.clone(), ExprDecl::Var(info)); + ctx.typed(|t| PVar(x).with(t, info)) + } else { + ctx.stack.bind_expr_decl(x.clone(), ExprDecl::Val(info)); + ctx.typed(|t| PVal(x).with(t, info)) + } +} + +fn lower_pattern(ctx: &mut Context, p: ast::Pattern, m: bool) -> Pattern { + let info = p.info; + match (*p.kind).clone() { + ast::PParen(p) => lower_pattern(ctx, p, m), + ast::PIgnore => ctx.typed(|t| PIgnore.with(t, info)), + ast::POr(p0, p1) => { + let p0 = lower_pattern(ctx, p0, m); + let p1 = lower_pattern(ctx, p1, m); + ctx.typed(|t| POr(p0, p1).with(t, info)) + } + ast::PTypeAnnot(p, t) => { + let p = lower_pattern(ctx, p, m); + let t = lower_type(ctx, t); + PNoop(p).with(t, info) + } + ast::PRecord(xps) => { + let xps = xps.mapm(ctx, |ctx, (x, p)| match p { + Some(p) => { + let p = lower_pattern(ctx, p, m); + (x, p) + } + None => { + let p = lower_pattern_name(ctx, x.clone(), info, m); + (x, p) + } + }); + ctx.typed(|t| PRecord(xps).with(t, info)) + } + ast::PRecordConcat(p0, p1) => { + let p0 = lower_pattern(ctx, p0, m); + let p1 = lower_pattern(ctx, p1, m); + ctx.typed(|t| PRecordConcat(p0, p1).with(t, info)) + } + ast::PTuple(ps) => { + let ps = ps.mapm(ctx, |ctx, p| lower_pattern(ctx, p, m)); + ctx.typed(|t| PTuple(ps).with(t, info)) + } + ast::PArray(ps) => { + let ps = ps.mapm(ctx, |ctx, p| lower_pattern(ctx, p, m)); + ctx.typed(|t| PArray(ps).with(t, info)) + } + ast::PArrayConcat(p0, p1) => { + let p0 = lower_pattern(ctx, p0, m); + let p1 = lower_pattern(ctx, p1, m); + ctx.typed(|t| PArrayConcat(p0, p1).with(t, info)) + } + ast::PConst(c) => { + let c = lower_const(ctx, c); + ctx.typed(|t| PConst(c).with(t, info)) + } + ast::PName(x) => match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Variant(info1, x0, gs)) => { + let ts = lower_type_args(ctx, x.clone(), vector![], gs, info, info1); + let p = ctx.typed(|t| PConst(CUnit).with(t, info)); + ctx.typed(|t| PVariant(x0, ts, x, p).with(t, info)) + } + Some(expr_name) => { + ctx.diagnostics.push_warning(Warning::ShadowedVariable { + info0: expr_name.info(), + info1: info, + }); + lower_pattern_name(ctx, x, info, m) + } + None => lower_pattern_name(ctx, x, info, m), + }, + ast::PVariantTuple(x, ps) => { + let p = lower_pattern(ctx, ast::PTuple(ps).with(info), m); + lower_pattern_variant(ctx, x, p, info) + } + ast::PVariantRecord(x, xps) => { + let p = lower_pattern(ctx, ast::PRecord(xps).with(info), m); + lower_pattern_variant(ctx, x, p, info) + } + ast::PError => panic!(), + } +} + +fn lower_pattern_variant(ctx: &mut Context, x: Name, p: Pattern, info: Info) -> Pattern { + match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Variant(info1, x0, gs)) => { + let ts = lower_type_args(ctx, x.clone(), vector![], gs, info, info1); + ctx.typed(|t| PVariant(x0, ts, x, p).with(t, info)) + } + Some(_) => { + ctx.diagnostics.push_error(Error::ExpectedVariant { info }); + ctx.typed(|t| PError.with(t, info)) + } + None => { + ctx.diagnostics.push_error(Error::UnresolvedName { info }); + ctx.typed(|t| PError.with(t, info)) + } + } +} + +fn lower_enum_variant( + ctx: &mut Context, + enum_x: String, + gs: Vector, + v: ast::Variant, + info: Info, +) -> Option<(Name, Type)> { + let (x, t) = match v { + ast::VUnit(x) => (x, TUnit.into()), + ast::VRecord(x, xts) => { + let xts = xts.mapm_assoc(ctx, lower_type); + let t = fields_to_rows(xts, TRowEmpty.into()); + (x, TRecord(t).into()) + } + ast::VTuple(x, ts) => { + let ts = ts.mapm(ctx, lower_type); + (x, TTuple(ts, true).into()) + } + }; + if let Some(expr_name) = ctx.stack.find_expr_decl(&x) { + ctx.diagnostics.push_error(Error::NameClash { + info0: info, + info1: expr_name.info(), + }); + None + } else { + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Variant(info, enum_x.clone(), gs)); + Some((x, t)) + } +} + +fn lower_block(ctx: &mut Context, b: ast::Block, kind: ScopeKind) -> Block { + ctx.stack.push_scope(kind); + let ss = b.ss.mapm(ctx, lower_stmt); + let e = lower_expr_or_unit(ctx, b.info, b.e); + ctx.stack.pop_scope(); + Block::new(ss, e, b.info) +} + +fn lower_call(ctx: &mut Context, e: ast::Expr, es: Vector) -> Expr { + let info = e.info; + if let ast::EName(x, ts) = e.kind() { + match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Variant(info1, x0, gs)) => { + let ts = lower_type_args(ctx, x.clone(), ts, gs, info, info1); + let e = lower_expr(ctx, ast::ETuple(es).with(info)); + return ctx.typed(|t| EVariant(x0, ts, x, e).with(t, info)); + } + Some(ExprDecl::Def(_, n, gs)) => { + if es.len() == n { + let ts = lower_type_args(ctx, x.clone(), ts, gs, info, info); + let es = es.mapm(ctx, lower_expr); + return ctx.typed(|t| EFunCallDirect(x, ts, es).with(t, info)); + } else { + ctx.diagnostics.push_error(Error::WrongNumberOfArguments { + info, + expected: n, + found: es.len(), + }); + return ctx.typed(|t| EError.with(t, info)); + } + } + _ => {} + } + } + let e = lower_expr(ctx, e); + let es = es.mapm(ctx, lower_expr); + ctx.typed(|t| EFunCall(e, es).with(t, info)) +} + +fn lower_expr(ctx: &mut Context, e: ast::Expr) -> Expr { + let info = e.info; + match e.kind() { + ast::EParen(e) => lower_expr(ctx, e), + ast::EName(x, ts) => match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Variant(info1, x0, gs)) => { + let ts = lower_type_args(ctx, x.clone(), ts, gs, info, info1); + let e = ctx.typed(|t| EConst(CUnit).with(t, info)); + ctx.typed(|t| EVariant(x0, ts, x, e).with(t, info)) + } + Some(ExprDecl::Def(info1, _, gs)) => { + let ts = lower_type_args(ctx, x.clone(), ts, gs, info, info1); + ctx.typed(|t| EDef(x, ts).with(t, info)) + } + Some(ExprDecl::Val(_)) => { + if ts.is_empty() { + ctx.typed(|t| EVal(x).with(t, info)) + } else { + ctx.diagnostics + .push_error(Error::UnexpectedTypeArgs { info }); + ctx.typed(|t| EError.with(t, info)) + } + } + Some(ExprDecl::Var(_)) => { + if ts.is_empty() { + ctx.typed(|t| EVar(x).with(t, info)) + } else { + ctx.diagnostics + .push_error(Error::UnexpectedTypeArgs { info }); + ctx.typed(|t| EError.with(t, info)) + } + } + None => { + ctx.diagnostics.push_error(Error::UnresolvedName { info }); + ctx.typed(|t| EError.with(t, info)) + } + }, + ast::EQuery(p, e, qs) => lower_query(ctx, p, e, qs), + ast::ERecordAccess(e, x) => { + let e = lower_expr(ctx, e); + ctx.typed(|t| ERecordAccess(e, x).with(t, info)) + } + ast::ERecordAccessMulti(_, _) => todo!(), + ast::ERecordConcat(e0, e1) => { + let e0 = lower_expr(ctx, e0); + let e1 = lower_expr(ctx, e1); + ctx.typed(|t| ERecordConcat(e0, e1).with(t, info)) + } + ast::EFunCall(e, es) => lower_call(ctx, e, es), + ast::EMethodCall(e0, x, ts, mut es) => { + es.push_front(e0); + lower_expr( + ctx, + ast::EFunCall(ast::EName(x, vector![]).with(info), es).with(info), + ) + } + ast::ETypeAnnot(e, t) => { + let e = lower_expr(ctx, e); + let t = lower_type(ctx, t); + ENoop(e).with(t, info) + } + ast::EIfElse(e, b0, b1) => { + let e = lower_expr(ctx, e); + let b0 = lower_block(ctx, b0, ScopeKind::Block); + let b1 = lower_block_opt(ctx, info, b1); + ctx.typed(|t| EIfElse(e, b0, b1).with(t, info)) + } + ast::ELit(l) => lower_lit(ctx, l, e.info), + ast::ELoop(b) => { + let b = lower_block(ctx, b, ScopeKind::Loop); + ctx.typed(|t| ELoop(b).with(t, info)) + } + ast::ERecord(xes) => { + let xes = xes.mapm(ctx, |ctx, xe| lower_expr_field(ctx, info, xe)); + ctx.typed(|t| ERecord(xes).with(t, info)) + } + ast::EVariantRecord(x, xes) => { + if let Some(ExprDecl::Variant(info1, x0, gs)) = ctx.stack.find_expr_decl(&x) { + let ts = lower_type_args(ctx, x.clone(), vector![], gs, info, info1); + let e = lower_expr(ctx, ast::ERecord(xes).with(info)); + return ctx.typed(|t| EVariant(x0, ts, x, e).with(t, info)); + } else { + ctx.diagnostics.push_error(Error::ExpectedVariant { info }); + return ctx.typed(|t| EError.with(t, info)); + } + } + ast::EFunReturn(e) => { + let e = lower_expr_or_unit(ctx, info, e); + ctx.typed(|t| EFunReturn(e).with(t, info)) + } + ast::ELoopBreak(e) => { + if let Some(e) = e { + if ctx.is_inside_infinite_loop() { + let e = lower_expr(ctx, e); + ctx.typed(|t| ELoopBreak(e).with(t, info)) + } else { + ctx.diagnostics + .push_error(Error::BreakOutsideInfiniteLoop { info }); + ctx.typed(|t| EError.with(t, info)) + } + } else { + if ctx.is_inside_loop() { + let e = lower_expr_or_unit(ctx, info, e); + ctx.typed(|t| ELoopBreak(e).with(t, info)) + } else { + ctx.diagnostics.push_error(Error::BreakOutsideLoop { info }); + ctx.typed(|t| EError.with(t, info)) + } + } + } + ast::ELoopContinue => { + if ctx.is_inside_loop() { + ctx.typed(|t| ELoopContinue.with(t, info)) + } else { + ctx.diagnostics + .push_error(Error::ContinueOutsideLoop { info }); + ctx.typed(|t| EError.with(t, info)) + } + } + ast::EArray(es) => { + let es = es.mapm(ctx, lower_expr); + ctx.typed(|t| EArray(es).with(t, info)) + } + ast::EUnop(op, e) => { + let e = lower_expr(ctx, e); + lower_unop(ctx, op, e, info) + } + ast::EBinop(e0, op, e1) => { + let e0 = lower_expr(ctx, e0); + let e1 = lower_expr(ctx, e1); + lower_binop(ctx, e0, op, e1, info) + } + ast::EMut(e0, op, e1) => { + let e0 = lower_place_expr(ctx, e0); + let e1 = lower_expr(ctx, e1); + if let Some(op) = op { + let e2 = lower_binop(ctx, e0.clone(), op, e1, info); + ctx.typed(|t| EMut(e0, e2).with(t, info)) + } else { + ctx.typed(|t| EMut(e0, e1).with(t, info)) + } + } + ast::EDo(b) => { + let b = lower_block(ctx, b, ScopeKind::Block); + ctx.typed(|t| EDo(b).with(t, info)) + } + ast::EFor(p, e, b) => { + ctx.stack.push_scope(ScopeKind::Loop); + let p = lower_pattern(ctx, p, false); + let e = lower_expr(ctx, e); + let b = lower_block(ctx, b, ScopeKind::Block); + ctx.stack.pop_scope(); + ctx.typed(|t| EFor(p, e, b).with(t, info)) + } + ast::EFun(ps, t, b) => { + ctx.stack.push_scope(ScopeKind::Fun); + let ps = ps.mapm(ctx, |ctx, p| lower_pattern(ctx, p, false)); + let t1 = lower_type_or_fresh(ctx, t); + let b = lower_body(ctx, b); + ctx.stack.pop_scope(); + ctx.typed(|t| hir::EFun(ps, t1, b).with(t, info)) + } + ast::EMatch(e, arms) => { + let e = lower_expr(ctx, e); + let arms = arms.mapm(ctx, lower_arm); + ctx.typed(|t| EMatch(e, arms).with(t, info)) + } + ast::ETupleAccess(e, i) => { + let e = lower_expr(ctx, e); + ctx.typed(|t| ETupleAccess(e, i).with(t, info)) + } + ast::EArrayAccess(e0, e1) => { + let e0 = lower_expr(ctx, e0); + let e1 = lower_expr(ctx, e1); + ctx.typed(|t| EArrayAccess(e0, e1).with(t, info)) + } + ast::EThrow(_e) => todo!(), + ast::ETry(_b0, _arms, _b1) => todo!(), + ast::ETuple(es) => { + let es = es.mapm(ctx, lower_expr); + ctx.typed(|t| ETuple(es).with(t, info)) + } + ast::EWhile(e, b) => { + let e = lower_expr(ctx, e); + let b = lower_block(ctx, b, ScopeKind::Loop); + ctx.typed(|t| EWhile(e, b).with(t, info)) + } + ast::EArrayConcat(e0, e1) => { + let e0 = lower_expr(ctx, e0); + let e1 = lower_expr(ctx, e1); + ctx.typed(|t| EArrayConcat(e0, e1).with(t, info)) + } + ast::EError => ctx.typed(|t| EError.with(t, info)), + } +} + +fn lower_place_expr(ctx: &mut Context, e: ast::Expr) -> Expr { + let info = e.info; + match e.kind() { + ast::EName(x, ts) => match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Var(_)) => { + if ts.len() == 0 { + ctx.typed(|t| EVar(x).with(t, info)) + } else { + ctx.diagnostics + .push_error(Error::UnexpectedTypeArgs { info }); + ctx.typed(|t| EError.with(t, info)) + } + } + Some(x) => { + ctx.diagnostics.push_error(Error::ExpectedVar { info }); + ctx.typed(|t| EError.with(t, info)) + } + None => { + ctx.diagnostics.push_error(Error::UnresolvedName { info }); + ctx.typed(|t| EError.with(t, info)) + } + }, + ast::EArrayAccess(e0, e1) => { + let e0 = lower_place_expr(ctx, e0); + let e1 = lower_expr(ctx, e1); + ctx.typed(|t| EArrayAccess(e0, e1).with(t, info)) + } + ast::ETupleAccess(e, i) => { + let e = lower_place_expr(ctx, e); + ctx.typed(|t| ETupleAccess(e, i).with(t, info)) + } + _ => { + ctx.diagnostics + .push_error(Error::ExpectedPlaceExpr { info }); + ctx.typed(|t| EError.with(t, info)) + } + } +} + +fn lower_arm(ctx: &mut Context, (p, e): ast::Arm) -> Arm { + ctx.stack.push_scope(ScopeKind::Arm); + let p = lower_pattern(ctx, p, false); + let e = lower_expr(ctx, e); + let b = Block::new(vector![], e, p.info); + ctx.stack.pop_scope(); + (p, b) +} + +fn lower_unop(ctx: &mut Context, op: ast::Unop, e: Expr, info: Info) -> Expr { + let x = ast::ops::unop(op.kind).to_string(); + match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Def(_, _, gs)) => { + let ts = gs.iter().map(|g| ctx.new_type_var()).collect(); + ctx.typed(|t| EFunCallDirect(x, ts, vector![e]).with(t, info)) + } + _ => { + ctx.diagnostics.push_error(Error::UnresolvedName { info }); + ctx.typed(|t| EError.with(t, info)) + } + } +} + +fn lower_binop(ctx: &mut Context, e0: Expr, op: ast::Binop, e1: Expr, info: Info) -> Expr { + let x = ast::ops::binop(op.kind).to_string(); + match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Def(_, _, gs)) => { + let ts = gs.iter().map(|g| ctx.new_type_var()).collect(); + ctx.typed(|t| EFunCallDirect(x, ts, vector![e0.clone(), e1]).with(t, info)) + } + _ => { + ctx.diagnostics.push_error(Error::UnresolvedName { info }); + ctx.typed(|t| EError.with(t, info)) + } + } +} + +fn lower_expr_or_unit(ctx: &mut Context, info: Info, e: Option) -> Expr { + e.mapm_or_else(ctx, lower_expr, |ctx| { + ctx.typed(|t| EConst(CUnit).with(t, info)) + }) +} + +fn lower_type_or_unit(ctx: &mut Context, t: Option) -> Type { + t.mapm_or_else(ctx, lower_type, |ctx| TUnit.into()) +} + +fn lower_type_or_fresh(ctx: &mut Context, t: Option) -> Type { + t.mapm_or_else(ctx, lower_type, |ctx| ctx.new_type_var()) +} + +fn lower_expr_field(ctx: &mut Context, info: Info, f: ExprField) -> (Name, Expr) { + match f { + ast::FName(x, e) => { + if let Some(e) = e { + let e = lower_expr(ctx, e); + (x, e) + } else { + let e = match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Val(_)) => ctx.typed(|t| EVal(x.clone()).with(t, info)), + Some(ExprDecl::Var(_)) => ctx.typed(|t| EVar(x.clone()).with(t, info)), + Some(ExprDecl::Def(info1, _, gs)) => { + let ts = lower_type_args(ctx, x.clone(), vector![], gs, info, info1); + ctx.typed(|t| EDef(x.clone(), ts).with(t, info)) + } + Some(ExprDecl::Variant(..)) => panic!("Variant not allowed here"), + None => panic!("Name not found"), + }; + (x, e) + } + } + ast::FExpr(e, x) => { + let info = e.info; + let e = lower_expr(ctx, e); + let e = ctx.typed(|t| ERecordAccess(e, x.clone()).with(t, info)); + (x, e) + } + } +} + +// from p in e => e.map(|p| p) +fn lower_query( + ctx: &mut Context, + p: ast::Pattern, + e: ast::Expr, + qs: Vector, +) -> Expr { + let map = ast::ExprKind::EName("map".to_string(), vector![]).with(e.info); + let p = lower_pattern(ctx, p.clone(), false); + // let es = pattern_to_expr_record(ctx, p); + // let mapper = ast::ExprKind::EFun(vector![p], Body::BExpr()).with(e.info); + // ast::ExprKind::EFunCall(map, vector![e]) + todo!() +} + +/// Extract all the names from a pattern and place them inside a record expression. +fn pattern_to_expr_record(ctx: &mut Context, p: hir::Pattern) -> hir::Expr { + fn f(ctx: &mut Context, p: &hir::Pattern, acc: &mut Vector<(Name, hir::Expr)>) { + match p.kind() { + hir::PNoop(_) => {} + hir::PVal(x) => { + let e = ctx.typed(|t| EVal(x.clone()).with(t, p.info)); + acc.push_back((x, e)); + } + hir::PVar(_) => {} + hir::PVariant(_, _, _, p) => f(ctx, &p, acc), + hir::PIgnore => {} + hir::POr(p0, _) => f(ctx, &p0, acc), + hir::PRecord(xps) => xps.iter().for_each(|(_, p)| f(ctx, &p, acc)), + hir::PRecordConcat(_, _) => todo!(), + hir::PArray(_) => todo!(), + hir::PArrayConcat(_, _) => todo!(), + hir::PTuple(ps) => ps.iter().for_each(|p| f(ctx, &p, acc)), + hir::PConst(_) => {} + hir::PError => {} + } + } + let mut acc = vector![]; + f(ctx, &p, &mut acc); + hir::ExprKind::ERecord(acc).with(p.t, p.info) +} + +lazy_static::lazy_static! { + static ref REGEX: Regex = Regex::new(r#"\$(\{[^}]+}|[[:alpha:]_][[:alnum:]_]*)"#).unwrap(); +} + +fn lower_lit(ctx: &mut Context, l: ast::Lit, info: Info) -> Expr { + match l { + ast::LInt(l, s) => { + if let Some(s) = s { + let x = format!("__{}", s); + let e0 = ast::EName(x, vector![]).with(info); + let e1 = ast::ELit(ast::LInt(l, None)).with(info); + lower_call(ctx, e0, vector![e1]) + } else { + ctx.typed(|t| EConst(CInt(l)).with(t, info)) + } + } + ast::LFloat(l, s) => { + if let Some(s) = s { + let x = format!("__{}", s); + let e0 = ast::EName(x, vector![]).with(info); + let e1 = ast::ELit(ast::LFloat(l, None)).with(info); + lower_call(ctx, e0, vector![e1]) + } else { + ctx.typed(|t| EConst(CFloat(l)).with(t, info)) + } + } + ast::LBool(b) => ctx.typed(|t| EConst(CBool(b)).with(t, info)), + ast::LString(s) => lower_lit_str(ctx, s, info), + ast::LUnit => ctx.typed(|t| EConst(CUnit).with(t, info)), + ast::LChar(c) => ctx.typed(|t| EConst(CChar(c)).with(t, info)), + } +} + +struct SplitIter<'r, 't> { + string: &'t str, + matches: Matches<'r, 't>, + prev: usize, + delim: Option>, +} + +impl<'r, 't> SplitIter<'r, 't> { + fn new(regex: &'r Regex, string: &'t str) -> Self { + let matches = regex.find_iter(string); + Self { + string, + matches, + prev: 0, + delim: None, + } + } +} + +impl<'r, 't> Iterator for SplitIter<'r, 't> { + type Item = Split<'t>; + + fn next(&mut self) -> Option { + if let Some(splice) = self.delim.take() { + Some(splice) + } else if let Some(m) = self.matches.next() { + let splice = Split::Text(&self.string[self.prev..m.start()]); + self.delim = Some(Split::Delim(&self.string[m.start()..m.end()])); + self.prev = m.end(); + Some(splice) + } else if self.prev < self.string.len() { + let splice = Split::Text(&self.string[self.prev..]); + self.prev = self.string.len(); + Some(splice) + } else { + None + } + } +} + +enum Split<'a> { + Text(&'a str), + Delim(&'a str), +} + +fn splice_to_expr(ctx: &mut Context, splice: Split, info: Info) -> Expr { + match splice { + Split::Text(s) => ctx.typed(|t| EConst(CString(s.to_owned())).with(t, info)), + Split::Delim(s) => match parser::parse_splice(info, &mut ctx.diagnostics, &s[1..]) { + Some(ast::SName(x)) => match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Val(_)) => { + let e = ctx.typed(|t| EVal(x).with(t, info)); + call(ctx, "to_string", [], [e], info) + } + Some(ExprDecl::Var(_)) => { + let e = ctx.typed(|t| EVar(x).with(t, info)); + call(ctx, "to_string", [], [e], info) + } + Some(decl) => { + ctx.diagnostics + .push_error(Error::ExpectedVarOrVal { info: decl.info() }); + ctx.typed(|t| EError.with(t, info)) + } + None => { + ctx.diagnostics + .push_error(Error::NameNotFound { info, name: x }); + ctx.typed(|t| EError.with(t, info)) + } + }, + Some(ast::SBlock(b)) => { + let b = lower_block(ctx, b, ScopeKind::Block); + ctx.typed(|t| EDo(b).with(t, info)) + } + _ => ctx.typed(|t| EError.with(t, info)), + }, + } +} + +fn lower_lit_str(ctx: &mut Context, s: String, info: Info) -> Expr { + if s.is_empty() { + return ctx.typed(|t| EConst(CString(s)).with(t, info)); + } + let mut it = SplitIter::new(®EX, &s); + let s = it.next().unwrap(); + let e = splice_to_expr(ctx, s, info); + it.fold(e, |e, s| { + let e1 = splice_to_expr(ctx, s, info); + call(ctx, "concat", [], [e, e1], info) + }) +} + +fn lower_type_args_strict( + ctx: &mut Context, + x: Name, + ts: Vector, + gs: Vector, + info0: Info, + info1: Info, +) -> Vector { + if gs.len() == ts.len() { + ts.mapm(ctx, lower_type) + } else { + ctx.diagnostics.push_error(Error::WrongNumberOfTypeArgs { + name: x, + expected: gs.len(), + found: ts.len(), + info0, + info1, + }); + vector![] + } +} + +fn lower_type_args( + ctx: &mut Context, + x: Name, + ts: Vector, + gs: Vector, + info0: Info, + info1: Info, +) -> Vector { + match (gs.len(), ts.len()) { + (gn, tn) if gn == tn => ts.mapm(ctx, lower_type), + (gn, tn) if tn == 0 => gs.mapm(ctx, |ctx, _| ctx.new_type_var()), + _ => { + ctx.diagnostics.push_error(Error::WrongNumberOfTypeArgs { + name: x, + expected: gs.len(), + found: ts.len(), + info0, + info1, + }); + vector![] + } + } +} + +fn fields_to_rows(x: Vector<(Name, Type)>, t: Type) -> Type { + x.into_iter() + .rev() + .fold(t, |t0, (x, t1)| TRowExtend((x, t1), t0).into()) +} + +fn lower_block_opt(ctx: &mut Context, info: Info, b: Option) -> Block { + b.mapm_or_else( + ctx, + |ctx, b| lower_block(ctx, b, ScopeKind::Block), + |ctx| { + let e = ctx.typed(|t| EConst(CUnit).with(t, info)); + Block::new(vector![], e, info) + }, + ) +} + +fn lower_body(ctx: &mut Context, b: ast::Body) -> Block { + match b { + ast::BExpr(e) => { + let info = e.info; + let e = lower_expr(ctx, e); + Block::new(vector![], e, info) + } + ast::BBlock(b) => lower_block(ctx, b, ScopeKind::Def), + } +} + +fn empty_expr_env(ctx: &mut Context, info: Info) -> Expr { + ctx.typed(|t| ERecord(vector![]).with(t, info)) +} + +fn nominal(x: impl Into, ts: [Type; N]) -> Type { + TNominal(x.into(), ts.into_iter().collect()).into() +} + +fn call( + ctx: &mut Context, + x: impl Into, + ts: [Type; N], + es: [Expr; M], + info: Info, +) -> Expr { + let e = ctx.typed(|t| EVal(x.into()).with(t, info)); + ctx.typed(|t| EFunCall(e, es.into_iter().collect()).with(t, info)) +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/Cargo.toml b/arc-lang/crates/compiler/passes/hir-interpreter/Cargo.toml new file mode 100644 index 000000000..fdc3776b3 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "hir-interpreter" +version.workspace = true +edition.workspace = true + +[dependencies] +value.workspace = true +ast.workspace = true +hir.workspace = true +utils.workspace = true +stack.workspace = true +info.workspace = true +name-gen.workspace = true +im-rc.workspace = true +time.workspace = true +diagnostics.workspace = true +anyhow.workspace = true +builtins.workspace = true +codegen.workspace = true +serde.workspace = true +derive_more.workspace = true +num-traits.workspace = true +hir-reachable.workspace = true +hir-to-mlir.workspace = true +hir-to-rust.workspace = true +build.workspace = true +kafka.workspace = true +ast-prelude.workspace = true +write-ast.workspace = true +write-rust.workspace = true +write-hir.workspace = true +minus.workspace = true diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/context.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/context.rs new file mode 100644 index 000000000..724fc121e --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/context.rs @@ -0,0 +1,78 @@ +#![allow(unused)] +use std::collections::HashMap; + +use hir::*; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use name_gen::NameGen; +use stack::Stack; + +use value::Value; + +use crate::definitions::Bifs; + +#[derive(Debug)] +pub struct Context { + pub(crate) stack: Stack<(), ExprDecl, TypeDecl>, + pub(crate) bifs: Bifs, + next_stream_name: NameGen, + pub ss: Vector, + pub ctx7: hir_reachable::context::Context, + pub ctx8: hir_to_mlir::context::Context, + pub ctx9: hir_to_rust::context::Context, + pub ctx10: build::context::Context, + pub ctx11: Option, +} + +#[derive(Clone, Debug)] +pub(crate) enum ExprDecl { + Def(Meta, Vector, Vector, Type, Block), + Bif(Meta, Vector, Vector, Type), + Var(Value), + Val(Value), + Variant(Name, Vector), +} + +#[derive(Clone, Debug)] +pub(crate) enum TypeDecl { + Enum(Vector, Vector<(Name, Type)>), + Bit(Vector), + Generic(Type), +} + +impl Default for Context { + fn default() -> Self { + Context { + stack: Stack::new(()), + next_stream_name: NameGen::new("s"), + bifs: Bifs::new(), + ss: Vector::new(), + ctx7: Default::default(), + ctx8: Default::default(), + ctx9: Default::default(), + ctx10: Default::default(), + ctx11: Default::default(), + } + } +} + +impl Context { + pub fn new() -> Context { + Self::default() + } + + pub fn find_val(&self, x: &Name) -> Value { + self.stack + .find_expr_decl(x) + .and_then(|decl| match decl { + ExprDecl::Var(v) => Some(v.clone()), + _ => None, + }) + .unwrap() + } + + pub fn new_stream_name(&mut self) -> Name { + self.next_stream_name.fresh() + } +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/aggregator.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/aggregator.rs new file mode 100644 index 000000000..2080a4d43 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/aggregator.rs @@ -0,0 +1,30 @@ +use std::io::Result; +use std::io::Write; +use std::rc::Rc; + +use builtins::aggregator::Aggregator; +use hir::Name; +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use crate::definitions::*; + +use value::dynamic::Function; +use super::*; + +pub fn define(builder: &mut super::Bifs) { + builder.f("aggregator", |ctx, t, v| { + let a0 = v[0].as_function(); + let a1 = v[1].as_function(); + let a2 = v[2].as_function(); + let a3 = v[3].as_function(); + Aggregator::Monoid { + lift: a0, + combine: a1, + identity: a2, + lower: a3, + } + .into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/array.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/array.rs new file mode 100644 index 000000000..539708301 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/array.rs @@ -0,0 +1,30 @@ +use std::io::Result; +use std::io::Write; + +use ast::TypeKind::TArray; +use hir::Type; +use im_rc::vector; +use im_rc::Vector; +use serde::Deserialize; +use serde::Serialize; + +use super::Value; + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize)] +pub struct Array(pub Vector); + +pub fn define(builder: &mut super::Bifs) { + builder + .f("array_get", |ctx, t, v| { + let v0 = v[0].as_array(); + let v1 = v[1].as_usize(); + v0.0[v1].clone() + }) + .f("array_set", |ctx, t, v| { + let mut v0 = v[0].as_array(); + let v1 = v[1].as_usize(); + let v2 = v[2].clone(); + v0.0[v1] = v2; + v0.into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/blob.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/blob.rs new file mode 100644 index 000000000..92509d247 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/blob.rs @@ -0,0 +1,6 @@ +use crate::Value; +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/bool.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/bool.rs new file mode 100644 index 000000000..bf24842a5 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/bool.rs @@ -0,0 +1,26 @@ +use ast::unop; +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use ast::binop; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder + .f(binop!(and), |ctx, t, v| { + let v0 = v[0].as_bool(); + let v1 = v[1].as_bool(); + (v0 && v1).into() + }) + .f(binop!(or), |ctx, t, v| { + let v0 = v[0].as_bool(); + let v1 = v[1].as_bool(); + (v0 || v1).into() + }) + .f(unop!(!), |ctx, t, v| { + let v0 = v[0].as_bool(); + (!v0).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/char.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/char.rs new file mode 100644 index 000000000..51308f44b --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/char.rs @@ -0,0 +1,7 @@ +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use crate::Value; + +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/dataflow.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/dataflow.rs new file mode 100644 index 000000000..4353ce424 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/dataflow.rs @@ -0,0 +1,88 @@ +use crate::Value; +use builtins::path::Path; +use hir::Type; +use im_rc::Vector; +use value::dynamic::Dataflow; +use value::dynamic::Instance; +use value::dynamic::Sink; +use value::dynamic::Stream; +use value::dynamic::StreamKind; +use value::ValueKind::VUnit; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("run", |ctx, t, v| { + let v0 = v[0].as_dataflow(); + let ss = hir_reachable::process(&mut ctx.ctx7, v0.clone(), ctx.ss.clone()); + let is = hir_to_rust::process(&mut ctx.ctx9, ss); + let package = ctx.ctx10.new_package().unwrap(); + let mut ctx = codegen::Context::file(package.main.clone()); + ctx.colors(false); + ctx.writeln(&is, write_rust::write).unwrap(); + ctx.writeln(&v0, write_rust::write_dataflow).unwrap(); + package.build().unwrap().run().unwrap(); + Instance { + log: Path::from(package.root.join("log")), + } + .into() + }) + .f("merge", |ctx, t, v| { + let v0 = v[0].as_array().0; + let streams = v0 + .clone() + .into_iter() + .flat_map(|x| x.as_dataflow().streams) + .collect(); + let sinks = v0.into_iter().flat_map(|x| x.as_dataflow().sinks).collect(); + Dataflow::new(streams, sinks).into() + }); +} + +// pub fn reachable(&mut self, c: Component) -> Vector { +// let ss = hir_reachable::process(&mut self.ctx6.ctx7, c, self.ctx5.stmts.clone()); +// if self.config.show.reachable { +// if !ss.is_empty() { +// self.show_hir(&ss); +// } +// return Vector::new(); +// } else { +// ss +// } +// } +// +// pub fn hir_to_mlir(&mut self, c: Component, ss: Vector) -> Vector { +// hir_to_mlir::process(&mut self.ctx6.ctx8, c, ss) +// } +// +// pub fn hir_to_rust(&mut self, ss: Vector) -> Vector { +// hir_to_rust::process(&mut self.ctx6.ctx9, ss) +// } + +// pub fn run(&mut self, c: Component, is: Vector) -> Result<()> { +// let package = self.ctx6.ctx10.new_package()?; +// let mut ctx = codegen::Context::file(package.main.clone()); +// ctx.colors(false); +// ctx.writeln(&is, write_rust::write)?; +// ctx.writeln(&c, write_rust::write_component)?; +// package.build()?.run()?; +// Ok(()) +// } + +// pub fn components(&self) -> Vec { +// self.ctx6.dataflow.components() +// } + +// pub fn list_dataflows(&self) -> Result<(), std::io::Error> { +// self.components() +// .iter() +// .try_for_each(|component| write_hir_value::print_component(component)) +// } + +// pub fn codegen(&mut self, items: Vector) -> Result<(), std::io::Error> { +// if !self.has_errors() { +// // codegen::Context::println(&items, mlir_to_mlir::pr_module)?; +// } else { +// self.emit_errors(); +// } +// Ok(()) +// } diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/discretizer.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/discretizer.rs new file mode 100644 index 000000000..a711719e7 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/discretizer.rs @@ -0,0 +1,33 @@ +use std::io::Result; +use std::io::Write; + +use builtins::discretizer::Discretizer; +use hir::Type; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("tumbling", |ctx, t, v| { + let a0 = v[0].as_duration(); + Discretizer::tumbling(a0).into() + }) + .f("sliding", |ctx, t, v| { + let a0 = v[0].as_duration(); + let a1 = v[1].as_duration(); + Discretizer::sliding(a0, a1).into() + }) + .f("session", |ctx, t, v| { + let a0 = v[0].as_duration(); + Discretizer::session(a0).into() + }) + .f("counting", |ctx, t, v| { + let a0 = v[0].as_i32(); + Discretizer::counting(a0).into() + }) + .f("moving", |ctx, t, v| { + let a0 = v[0].as_i32(); + let a1 = v[1].as_i32(); + Discretizer::moving(a0, a1).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/duration.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/duration.rs new file mode 100644 index 000000000..141ee1e92 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/duration.rs @@ -0,0 +1,45 @@ +use hir::Type; +use serde::Deserialize; +use serde::Serialize; +use std::io::Result; +use std::io::Write; + +use builtins::duration::Duration; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("from_seconds", |ctx, t, v| { + let v0 = v[0].as_i64(); + Duration::from_seconds(v0).into() + }) + .f("from_milliseconds", |ctx, t, v| { + let v0 = v[0].as_i64(); + Duration::from_milliseconds(v0).into() + }) + .f("from_microseconds", |ctx, t, v| { + let v0 = v[0].as_i64(); + Duration::from_microseconds(v0).into() + }) + .f("from_nanoseconds", |ctx, t, v| { + let v0 = v[0].as_i64(); + Duration::from_nanoseconds(v0).into() + }) + .f("__s", |ctx, t, v| { + let v0 = v[0].as_i32(); + Duration::from_seconds(v0 as i64).into() + }) + .f("__ms", |ctx, t, v| { + let v0 = v[0].as_i32(); + Duration::from_seconds(v0 as i64).into() + }) + .f("__us", |ctx, t, v| { + let v0 = v[0].as_i32(); + Duration::from_seconds(v0 as i64).into() + }) + .f("__ns", |ctx, t, v| { + let v0 = v[0].as_i32(); + Duration::from_seconds(v0 as i64).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/encoding.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/encoding.rs new file mode 100644 index 000000000..3a0bb6ac2 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/encoding.rs @@ -0,0 +1,16 @@ +pub use builtins::encoding::Encoding; + +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("csv", |ctx, t, v| { + let v0 = v[0].as_char(); + Encoding::csv(v0).into() + }) + .f("json", |ctx, t, v| Encoding::Json.into()); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/f32.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/f32.rs new file mode 100644 index 000000000..ad6114bdb --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/f32.rs @@ -0,0 +1,23 @@ +pub fn define(builder: &mut super::Bifs) { + builder + .f("add_f32", |ctx, t, v| { + let v0 = v[0].as_f32(); + let v1 = v[1].as_f32(); + (v0 + v1).into() + }) + .f("sub_f32", |ctx, t, v| { + let v0 = v[0].as_f32(); + let v1 = v[1].as_f32(); + (v0 - v1).into() + }) + .f("mul_f32", |ctx, t, v| { + let v0 = v[0].as_f32(); + let v1 = v[1].as_f32(); + (v0 * v1).into() + }) + .f("div_f32", |ctx, t, v| { + let v0 = v[0].as_f32(); + let v1 = v[1].as_f32(); + (v0 / v1).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/f64.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/f64.rs new file mode 100644 index 000000000..418d79e36 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/f64.rs @@ -0,0 +1,18 @@ +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use crate::Value; +use ast::unop; + +pub fn define(builder: &mut super::Bifs) { + builder + .f(unop!(-), |ctx, t, v| { + let v0 = v[0].as_f64(); + (-v0).into() + }) + .f(unop!(+), |ctx, t, v| { + let v0 = v[0].as_f64(); + v0.into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/file.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/file.rs new file mode 100644 index 000000000..84cf293b2 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/file.rs @@ -0,0 +1,25 @@ +use super::Value; + +pub use builtins::file::File; +use hir::Type; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("open", |ctx, t, v| { + let v0 = v[0].as_path(); + File::open(v0).into() + }) + .f("read_to_string", |ctx, t, v| { + let v0 = v[0].as_file(); + v0.read_to_string().into() + }) + .f("read_to_bytes", |ctx, t, v| { + let v0 = v[0].as_file(); + v0.read_to_bytes().into() + }) + .f("inspect", |ctx, t, v| { + let v0 = v[0].as_file(); + v0.inspect(); + ().into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/function.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/function.rs new file mode 100644 index 000000000..efd16d8e9 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/function.rs @@ -0,0 +1,5 @@ +use hir::Name; +use serde::Deserialize; +use serde::Serialize; + +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i16.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i16.rs new file mode 100644 index 000000000..3b1b2e5ff --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i16.rs @@ -0,0 +1 @@ +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i32.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i32.rs new file mode 100644 index 000000000..ca3cd751c --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i32.rs @@ -0,0 +1,78 @@ +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use crate::Value; +use ast::binop; +use ast::unop; +use builtins::string::String; + +pub fn define(builder: &mut super::Bifs) { + builder + .f(binop!(+), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 + v1).into() + }) + .f(binop!(-), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 - v1).into() + }) + .f(binop!(*), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 * v1).into() + }) + .f(binop!(/), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 / v1).into() + }) + .f(binop!(==), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 == v1).into() + }) + .f(binop!(!=), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 != v1).into() + }) + .f(binop!(<), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 < v1).into() + }) + .f(binop!(<=), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 <= v1).into() + }) + .f(binop!(>), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 > v1).into() + }) + .f(binop!(>=), |ctx, t, v| { + let v0 = v[0].as_i32(); + let v1 = v[1].as_i32(); + (v0 >= v1).into() + }) + .f(unop!(-), |ctx, t, v| { + let v0 = v[0].as_i32(); + (-v0).into() + }) + .f(unop!(+), |ctx, t, v| { + let v0 = v[0].as_i32(); + (v0).into() + }) + .f("as_usize", |ctx, t, v| { + let v0 = v[0].as_i32(); + (v0 as usize).into() + }) + .f("i32_to_string", |ctx, t, v| { + let v0 = v[0].as_i32(); + String::from(v0.to_string()).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i64.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i64.rs new file mode 100644 index 000000000..3b1b2e5ff --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i64.rs @@ -0,0 +1 @@ +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i8.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i8.rs new file mode 100644 index 000000000..3b1b2e5ff --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/i8.rs @@ -0,0 +1 @@ +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/instance.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/instance.rs new file mode 100644 index 000000000..c2758f2f4 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/instance.rs @@ -0,0 +1,19 @@ +use std::error::Error; +use std::fmt::Write; +use std::io::Result; + +use value::dynamic::Instance; + +use crate::definitions::*; + +use super::*; +use value::dynamic::Function; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("logpath", |ctx, t, v| { + let v0 = v[0].as_instance(); + v0.log.into() + }) + .f("kill", |ctx, t, v| todo!()); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/keyed_stream.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/keyed_stream.rs new file mode 100644 index 000000000..3d202e492 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/keyed_stream.rs @@ -0,0 +1,56 @@ +use hir::Name; +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("keyed_source", |ctx, t, v| { + let v0 = v[0].as_reader(); + let v1 = v[1].as_encoding(); + let v2 = v[2].as_time_source(); + todo!() + }) + .f("keyed_keyby", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_function(); + todo!() + }) + .f("unkey", |ctx, t, v| { + let v0 = v[0].as_stream(); + todo!() + }) + .f("keyed_map", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_function(); + todo!() + }) + .f("keyed_filter", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_function(); + todo!() + }) + .f("keyed_sink", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_writer(); + let v2 = v[2].as_encoding(); + todo!() + }) + .f("keyed_flatmap", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_function(); + todo!() + }) + .f("keyed_flatten", |ctx, t, v| { + let v0 = v[0].as_stream(); + todo!() + }) + .f("keyed_window", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_discretizer(); + let v2 = v[2].as_aggregator(); + todo!() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/matrix.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/matrix.rs new file mode 100644 index 000000000..157e1bd96 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/matrix.rs @@ -0,0 +1,33 @@ +use super::Value; + +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("zeros", |ctx, t, v| { + // let v0 = v[0].as_vec().0.into_iter().map(|x| x.as_usize()).collect(); + todo!() + // Matrix::new(v0) + }) + .f("insert_axis", |ctx, t, v| { + todo!() + // let v0 = v[0].as_matrix(); + // let v1 = v[1].as_usize().0; + // Matrix(Inner::insert_axis(v0, v1)).into() + }) + .f("remove_axis", |ctx, t, v| { + todo!() + // let v0 = v[0].as_matrix(); + // let v1 = v[1].as_usize().0; + // Matrix(Inner::remove_axis(v0, v1)).into() + }) + .f("into_vec", |ctx, t, v| { + // let v0 = v[0].as_matrix().0; + // let v0 = v0.into_vec(); + // let v0 = v0.iter().map(|x| Value::new(x)).collect(); + // v0.into() + todo!() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/mod.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/mod.rs new file mode 100644 index 000000000..4735e9097 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/mod.rs @@ -0,0 +1,139 @@ +use std::collections::HashMap; + +use crate::context::Context; +use crate::Value; +use ast::Attr; +use ast::Bound; +use ast::Const; +use ast::Const::CString; +use ast::Generic; +use ast::Meta; +use ast::Name; +use ast::SBuiltinType; +use ast::StmtKind::SBuiltinClass; +use ast::StmtKind::SBuiltinDef; +use ast::StmtKind::SBuiltinInstance; +use ast::TypeKind::TArray; +use ast::TypeKind::TName; +use hir::Type; +use im_rc::vector; +use im_rc::Vector; +use info::Info; + +pub mod aggregator; +pub mod array; +pub mod blob; +pub mod bool; +pub mod char; +pub mod dataflow; +pub mod discretizer; +pub mod duration; +pub mod encoding; +pub mod f32; +pub mod f64; +pub mod file; +pub mod function; +pub mod i16; +pub mod i32; +pub mod i64; +pub mod i8; +pub mod instance; +pub mod keyed_stream; +pub mod matrix; +pub mod model; +pub mod never; +pub mod option; +pub mod path; +pub mod reader; +pub mod record; +pub mod result; +pub mod socket; +pub mod stream; +pub mod string; +pub mod time; +pub mod time_source; +pub mod tuple; +pub mod u16; +pub mod u32; +pub mod u64; +pub mod u8; +pub mod unit; +pub mod url; +pub mod usize; +pub mod variant; +pub mod vec; +pub mod writer; + +#[derive(Clone, Debug)] +pub struct Bifs(pub HashMap<&'static str, fn(&mut Context, &[Type], &[Value]) -> Value>); + +impl Bifs { + pub fn new() -> Self { + let mut this = Self(HashMap::new()); + this.load(aggregator::define) + .load(array::define) + .load(blob::define) + .load(bool::define) + .load(char::define) + .load(dataflow::define) + .load(discretizer::define) + .load(duration::define) + .load(encoding::define) + .load(f32::define) + .load(f64::define) + .load(file::define) + .load(function::define) + .load(i16::define) + .load(i32::define) + .load(i64::define) + .load(i8::define) + .load(instance::define) + .load(keyed_stream::define) + .load(matrix::define) + .load(model::define) + .load(option::define) + .load(path::define) + .load(reader::define) + .load(record::define) + .load(result::define) + .load(socket::define) + .load(stream::define) + .load(string::define) + .load(time::define) + .load(time_source::define) + .load(tuple::define) + .load(u16::define) + .load(u32::define) + .load(u64::define) + .load(u8::define) + .load(unit::define) + .load(url::define) + .load(usize::define) + .load(variant::define) + .load(vec::define) + .load(writer::define); + this + } + + fn load(&mut self, f: fn(&mut Self)) -> &mut Self { + f(self); + self + } + + pub(crate) fn f( + &mut self, + name: &'static str, + f: fn(&mut Context, &[Type], &[Value]) -> Value, + ) -> &mut Self { + self.0.insert(name, f); + self + } + + pub(crate) fn get(&self, name: &str) -> fn(&mut Context, &[Type], &[Value]) -> Value { + if let Some(f) = self.0.get(name) { + *f + } else { + panic!("builtin function {} not found", name) + } + } +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/model.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/model.rs new file mode 100644 index 000000000..680fac4d6 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/model.rs @@ -0,0 +1,44 @@ +use hir::Type; +use hir::TypeKind; +use serde::Deserialize; +use serde::Deserializer; +use serde::Serialize; +use serde::Serializer; +use value::dynamic::Matrix; +use value::map_matrix; + +use super::Value; + +use builtins::model::Model; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("load_model", |ctx, t, v| { + let v0 = v[0].as_blob(); + Model::new(v0).into() + }) + .f("predict", |ctx, t, v| { + let v0 = v[0].as_model(); + let v1 = v[1].as_matrix(); + let t1 = &t[1]; + let TypeKind::TNominal(x, _) = t1.kind.as_ref() else { + unreachable!() + }; + map_matrix!(v1, |v1| { + match x.as_str() { + "i8" => Matrix::I8(v0.predict::<_, i8>(v1)), + "i16" => Matrix::I16(v0.predict::<_, i16>(v1)), + "i32" => Matrix::I32(v0.predict::<_, i32>(v1)), + "i64" => Matrix::I64(v0.predict::<_, i64>(v1)), + "u8" => Matrix::U8(v0.predict::<_, u8>(v1)), + "u16" => Matrix::U16(v0.predict::<_, u16>(v1)), + "u32" => Matrix::U32(v0.predict::<_, u32>(v1)), + "u64" => Matrix::U64(v0.predict::<_, u64>(v1)), + "f32" => Matrix::F32(v0.predict::<_, f32>(v1)), + "f64" => Matrix::F64(v0.predict::<_, f64>(v1)), + _ => unreachable!(), + } + .into() + }) + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/never.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/never.rs new file mode 100644 index 000000000..4f40df572 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/never.rs @@ -0,0 +1,17 @@ +pub fn define(builder: &mut super::Bifs) { + builder + .f("todo", |ctx, t, v| { + todo!(); + }) + .f("unreachable", |ctx, t, v| { + unreachable!(); + }) + .f("panic", |ctx, t, v| { + let v0 = v[0].as_string(); + panic!("{}", v0); + }) + .f("exit", |ctx, t, v| { + std::process::exit(0); + }); +} + diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/option.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/option.rs new file mode 100644 index 000000000..d6aca2070 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/option.rs @@ -0,0 +1,27 @@ +use super::Value; +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use builtins::option::Option; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("some", |ctx, t, v| { + let v0 = v[0].clone(); + Option::some(v0).into() + }) + .f("none", |ctx, t, v| Option::none().into()) + .f("is_some", |ctx, t, v| { + let v0 = v[0].as_option(); + v0.is_some().into() + }) + .f("is_none", |ctx, t, v| { + let v0 = v[0].as_option(); + v0.is_none().into() + }) + .f("unwrap", |ctx, t, v| { + let v0 = v[0].as_option(); + v0.unwrap() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/path.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/path.rs new file mode 100644 index 000000000..bf495899b --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/path.rs @@ -0,0 +1,19 @@ +use super::Bifs; + +use super::Value; +use hir::Type; +use serde::Deserialize; +use serde::Serialize; +use std::io::Result; +use std::io::Write; + +use super::*; + +pub use builtins::path::Path; + +pub fn define(builder: &mut super::Bifs) { + builder.f("path", |ctx, t, v| { + let a0 = v[0].as_string(); + Path::new(a0).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/reader.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/reader.rs new file mode 100644 index 000000000..a25447b03 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/reader.rs @@ -0,0 +1,29 @@ +use super::Value; +use std::io::Result; +use std::io::Write; + +pub use builtins::reader::Reader; +use hir::Type; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("stdin_reader", |ctx, t, v| Reader::stdin().into()) + .f("file_reader", |ctx, t, v| { + let path = v[0].as_path(); + let watch = v[1].as_bool(); + Reader::file(path, watch).into() + }) + .f("http_reader", |ctx, t, v| { + let url = v[0].as_url(); + Reader::http(url).into() + }) + .f("tcp_reader", |ctx, t, v| { + let addr = v[0].as_socket_addr(); + Reader::tcp(addr).into() + }) + .f("kafka_reader", |ctx, t, v| { + let addr = v[0].as_socket_addr(); + let topic = v[1].as_string(); + Reader::kafka(addr, topic).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/record.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/record.rs new file mode 100644 index 000000000..7237e0708 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/record.rs @@ -0,0 +1,7 @@ +use hir::Name; +use im_rc::HashMap; +use serde::Serialize; + +use crate::Value; + +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/result.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/result.rs new file mode 100644 index 000000000..5241e837f --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/result.rs @@ -0,0 +1,34 @@ +use super::Value; +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +pub type Result = builtins::result::Result; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("ok", |ctx, t, v| { + let v0 = v[0].clone(); + Result::ok(v0).into() + }) + .f("error", |ctx, t, v| { + let v0 = v[0].as_string(); + Result::error(v0).into() + }) + .f("is_ok", |ctx, t, v| { + let v0 = v[0].as_result(); + v0.is_ok().into() + }) + .f("is_error", |ctx, t, v| { + let v0 = v[0].as_result(); + v0.is_error().into() + }) + .f("unwrap_ok", |ctx, t, v| { + let v0 = v[0].as_result(); + v0.unwrap_ok() + }) + .f("unwrap_error", |ctx, t, v| { + let v0 = v[0].as_result(); + v0.unwrap_error().into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/socket.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/socket.rs new file mode 100644 index 000000000..ee7a86fcc --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/socket.rs @@ -0,0 +1,14 @@ +use super::result::Result; +use super::Value; +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use builtins::socket::SocketAddr; + +pub fn define(builder: &mut super::Bifs) { + builder.f("socket", |ctx, t, v| { + let v0 = v[0].as_string(); + SocketAddr::parse(v0).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/stream.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/stream.rs new file mode 100644 index 000000000..37985452f --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/stream.rs @@ -0,0 +1,78 @@ +use std::cell::RefCell; +use std::rc::Rc; + +use hir::Name; +use hir::Type; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use serde::Deserialize; +use serde::Serialize; +use value::dynamic::Dataflow; +use value::dynamic::Sink; +use value::dynamic::Stream; +use value::dynamic::StreamKind; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("source", |ctx, t, v| { + let v0 = v[0].as_reader(); + let v1 = v[1].as_encoding(); + let v2 = v[2].as_time_source(); + let x = ctx.new_stream_name(); + Stream::new(x, StreamKind::DSource(v0, v1, v2).into()).into() + }) + .f("keyby", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_function(); + let x0 = v0.name.clone(); + let x = ctx.new_stream_name(); + v0.extend(x, StreamKind::DKeyby(x0, v1).into()).into() + }) + .f("map", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_function(); + let x0 = v0.name.clone(); + let x = ctx.new_stream_name(); + v0.extend(x, StreamKind::DMap(x0, v1).into()).into() + }) + .f("filter", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_function(); + let x0 = v0.name.clone(); + let x = ctx.new_stream_name(); + v0.extend(x, StreamKind::DFilter(x0, v1).into()).into() + }) + .f("flatten", |ctx, t, v| { + let v0 = v[0].as_stream(); + let x0 = v0.name.clone(); + let x = ctx.new_stream_name(); + v0.extend(x, StreamKind::DFlatten(x0).into()).into() + }) + .f("flatmap", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_function(); + let x0 = v0.name.clone(); + let x = ctx.new_stream_name(); + v0.extend(x, StreamKind::DFlatMap(x0, v1).into()).into() + }) + .f("window", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_discretizer(); + let v2 = v[2].as_aggregator(); + let x0 = v0.name.clone(); + let x = ctx.new_stream_name(); + v0.extend(x, StreamKind::DWindow(x0, v1, v2).into()).into() + }) + .f("sink", |ctx, t, v| { + let v0 = v[0].as_stream(); + let v1 = v[1].as_writer(); + let v2 = v[2].as_encoding(); + let x0 = v0.name.clone(); + let mut prefix = v0.prefix.clone(); + prefix.push_back(v0); + Dataflow::new(prefix, vector![Sink::new(x0, v1, v2).into()]).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/string.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/string.rs new file mode 100644 index 000000000..e92c0074b --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/string.rs @@ -0,0 +1,80 @@ +use hir::Type; +use im_rc::vector; +use serde::Deserialize; +use serde::Serialize; + +use crate::Tuple; +use builtins::string::String; +use builtins::vec::Vec; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("new", |ctx, t, v| String::new().into()) + .f("with_capacity", |ctx, t, v| { + let a0 = v[0].as_usize(); + String::with_capacity(a0).into() + }) + .f("push_char", |ctx, t, v| { + let a0 = v[0].as_string(); + let a1 = v[1].as_char(); + a0.push(a1).into() + }) + .f("push_string", |ctx, t, v| { + let a0 = v[0].as_string(); + let a1 = v[1].as_string(); + a0.push_string(a1).into() + }) + .f("remove", |ctx, t, v| { + let a0 = v[0].as_string(); + let a1 = v[1].as_usize(); + let (a, b) = a0.remove(a1); + Tuple(vector![a.into(), b.into()]).into() + }) + .f("insert_char", |ctx, t, v| { + let a0 = v[0].as_string(); + let a1 = v[1].as_usize(); + let a2 = v[2].as_char(); + a0.insert(a1, a2).into() + }) + .f("is_empty", |ctx, t, v| { + let a0 = v[0].as_string(); + a0.is_empty().into() + }) + .f("split_off", |ctx, t, v| { + let a0 = v[0].as_string(); + let a1 = v[1].as_usize(); + let (a, b) = a0.split_off(a1); + Tuple(vector![a.into(), b.into()]).into() + }) + .f("clear", |ctx, t, v| { + let a0 = v[0].as_string(); + a0.clear().into() + }) + .f("len", |ctx, t, v| { + let a0 = v[0].as_string(); + a0.len().into() + }) + .f("lines", |ctx, t, v| { + let a0 = v[0].as_string(); + let a0: Vec<_> = a0 + .as_ref() + .lines() + .map(|x| String::from(x).into()) + .collect::>() + .into(); + a0.into() + }) + .f("decode", |ctx, t, v| { + todo!() + // let a0 = a[0].as_string().0; + // let a1 = a[1].as_encoding().0; + // a0.decode(a1) + }) + .f("encode", |ctx, t, v| { + todo!() + // let a0 = a[0].as_string().0; + // a0.encode(a[1].as_encoding()) + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/time.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/time.rs new file mode 100644 index 000000000..0f0646e55 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/time.rs @@ -0,0 +1,44 @@ +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use builtins::time::Time; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("now", |ctx, t, v| Time::now().into()) + .f("from_seconds", |ctx, t, v| { + todo!() + // let v0 = v[0].as_i64(); + // Time::from_seconds(v0) + }) + .f("from_nanoseconds", |ctx, t, v| { + todo!() + // let v0 = v[0].as_i128().0; + // Time::from_nanoseconds(v0) + }) + .f("seconds", |ctx, t, v| { + let v0 = v[0].as_time(); + todo!() + }) + .f("nanoseconds", |ctx, t, v| { + let v0 = v[0].as_time(); + todo!() + }) + .f("year", |ctx, t, v| { + let v0 = v[0].as_time(); + todo!() + }) + .f("into_string", |ctx, t, v| { + let v0 = v[0].as_time(); + let v1 = v[1].as_string(); + todo!() + }) + .f("from_string", |ctx, t, v| { + let v0 = v[0].as_string(); + let v1 = v[1].as_string(); + Time::from_string(v0, v1).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/time_source.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/time_source.rs new file mode 100644 index 000000000..76f59d69b --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/time_source.rs @@ -0,0 +1,29 @@ +use super::Value; +use crate::Function; +use builtins::duration::Duration; +use builtins::time_source::TimeSource; +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("ingestion", |ctx, t, v| { + let v0 = v[0].as_duration(); + TimeSource::Ingestion { + watermark_interval: v0, + } + .into() + }) + .f("event", |ctx, t, v| { + let v0 = v[0].as_function(); + let v1 = v[1].as_duration(); + let v2 = v[2].as_duration(); + TimeSource::Event { + extractor: v0, + watermark_interval: v1, + slack: v2, + } + .into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/tuple.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/tuple.rs new file mode 100644 index 000000000..4fea77fa1 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/tuple.rs @@ -0,0 +1,6 @@ +use im_rc::Vector; +use serde::Serialize; + +use crate::Value; + +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u16.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u16.rs new file mode 100644 index 000000000..3b1b2e5ff --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u16.rs @@ -0,0 +1 @@ +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u32.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u32.rs new file mode 100644 index 000000000..3b1b2e5ff --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u32.rs @@ -0,0 +1 @@ +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u64.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u64.rs new file mode 100644 index 000000000..3b1b2e5ff --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u64.rs @@ -0,0 +1 @@ +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u8.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u8.rs new file mode 100644 index 000000000..3b1b2e5ff --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/u8.rs @@ -0,0 +1 @@ +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/unit.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/unit.rs new file mode 100644 index 000000000..490ebdf8d --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/unit.rs @@ -0,0 +1,55 @@ +use value::ValueKind::VUnit; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("print", |ctx, t, v| { + let v0 = v[0].as_string(); + eprintln!("{}", v0.as_ref()); + ().into() + }) + .f("debug", |ctx, t, v| { + let v0 = &v[0]; + eprintln!("{:?}", v0); + ().into() + }) + .f("dataflow", |ctx, t, v| { + todo!(); + ().into() + }) + .f("connect", |ctx, t, v| { + let v0 = v[0].as_string(); + match kafka::context::Context::new(Some(v0.as_ref().to_string())) { + Ok(v) => { + eprintln!("Connected to Kafka broker {}", v0); + ctx.ctx11 = Some(v); + } + Err(v) => eprintln!("{}", v), + } + ().into() + }) + .f("topics", |ctx, t, v| { + if let Some(ctx) = ctx.ctx11.as_mut() { + if let Err(e) = ctx.list() { + eprintln!("{}", e); + } + } else { + eprintln!("Kafka not connected"); + } + ().into() + }) + .f("bifs", |ctx, t, v| { + write_ast::write( + &mut codegen::Context::stderr().colors(true), + &ast_prelude::prelude(), + ); + ().into() + }) + .f("typeof", |ctx, t, v| { + let t0 = &t[0]; + let ctx = codegen::Context::stderr() + .colors(true) + .writeln(t0, write_hir::write_type) + .unwrap(); + ().into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/url.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/url.rs new file mode 100644 index 000000000..fc0885768 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/url.rs @@ -0,0 +1,13 @@ +use super::result::Result; +use hir::Type; + +use builtins::url::Url; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder.f("url", |ctx, t, v| { + let v0 = v[0].as_string(); + Url::parse(v0).map(Into::into).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/usize.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/usize.rs new file mode 100644 index 000000000..51308f44b --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/usize.rs @@ -0,0 +1,7 @@ +use hir::Type; +use serde::Deserialize; +use serde::Serialize; + +use crate::Value; + +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/variant.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/variant.rs new file mode 100644 index 000000000..7aef6693a --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/variant.rs @@ -0,0 +1,6 @@ +use hir::Name; +use serde::Serialize; + +use crate::Value; + +pub fn define(builder: &mut super::Bifs) {} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/vec.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/vec.rs new file mode 100644 index 000000000..ed2e9941c --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/vec.rs @@ -0,0 +1,49 @@ +use super::Value; + +use crate::Tuple; +use hir::Type; +use im_rc::vector; +use serde::Deserialize; +use serde::Serialize; + +pub type Vec = builtins::vec::Vec; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("new", |ctx, t, v| Vec::new().into()) + .f("push", |ctx, t, v| { + let v0 = v[0].clone(); + let v1 = v[1].as_vec(); + v1.push(v0).into() + }) + .f("pop", |ctx, t, v| { + let v0 = v[0].as_vec(); + let (a, b) = v0.pop(); + let b = b.map(Into::into); + Tuple(vector![a.into(), b.into()]).into() + }) + .f("len", |ctx, t, v| { + let v0 = v[0].as_vec(); + v0.len().into() + }) + .f("get", |ctx, t, v| { + let v0 = v[0].as_vec(); + let v1 = v[1].as_usize(); + v0.get(v1).map(Into::into).into() + }) + .f("insert", |ctx, t, v| { + let v0 = v[0].as_vec(); + let v1 = v[1].as_usize(); + let v2 = v[2].clone(); + v0.insert(v1, v2).into() + }) + .f("is_empty", |ctx, t, v| { + let v0 = v[0].as_vec(); + v0.is_empty().into() + }) + .f("sort", |ctx, t, v| { + let v0 = v[0].as_vec(); + todo!() + // VVec(v0.sort()) + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/writer.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/writer.rs new file mode 100644 index 000000000..b86460749 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/definitions/writer.rs @@ -0,0 +1,26 @@ +use builtins::writer::Writer; +use hir::Type; + +use super::Value; + +pub fn define(builder: &mut super::Bifs) { + builder + .f("stdout_writer", |ctx, t, v| Writer::stdout().into()) + .f("file_writer", |ctx, t, v| { + let v0 = v[0].as_path(); + Writer::file(v0).into() + }) + .f("http_writer", |ctx, t, v| { + let v0 = v[0].as_url(); + Writer::http(v0).into() + }) + .f("tcp_writer", |ctx, t, v| { + let v0 = v[0].as_socket_addr(); + Writer::tcp(v0).into() + }) + .f("kafka_writer", |ctx, t, v| { + let v0 = v[0].as_socket_addr(); + let v1 = v[1].as_string(); + Writer::kafka(v0, v1).into() + }); +} diff --git a/arc-lang/crates/compiler/passes/hir-interpreter/src/lib.rs b/arc-lang/crates/compiler/passes/hir-interpreter/src/lib.rs new file mode 100644 index 000000000..97f6716f8 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-interpreter/src/lib.rs @@ -0,0 +1,265 @@ +#![allow(unused)] + +pub mod context; +pub mod definitions; + +use context::ExprDecl; +use context::TypeDecl; +use diagnostics::Error; +use hir::*; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use utils::AssocVectorUtils; +use utils::VectorUtils; +use value::dynamic::Array; +use value::dynamic::Function; +use value::dynamic::Record; +use value::dynamic::Tuple; +use value::dynamic::Variant; +use value::Value; +use value::ValueKind::VUnit; + +use crate::context::Context; + +pub fn process(ctx: &mut Context, ss: Vector) { + for s in ss { + eval_top_stmt(ctx, s.clone()); + ctx.ss.push_back(s); + } +} + +fn eval_top_stmt(ctx: &mut Context, s: Stmt) -> Result, Error> { + match s.kind.clone() { + SDef(m, x, gs, ps, t, b) => { + ctx.stack.bind_expr_decl(x, ExprDecl::Def(m, gs, ps, t, b)); + } + SBif(m, x, gs, ts, t) => { + ctx.stack.bind_expr_decl(x, ExprDecl::Bif(m, gs, ts, t)); + } + SEnum(m, x, gs, xts) => { + ctx.stack.bind_type_decl(x, TypeDecl::Enum(gs, xts)); + } + SBit(m, x, gs) => { + ctx.stack.bind_type_decl(x, TypeDecl::Bit(gs)); + } + SVal(p, e) => { + let t = e.t.clone(); + match eval_expr(ctx, e) { + CValue(v) => { + bind(ctx, p, v.clone()); + return Ok(Some((v, t))); + } + CException(e) => return Err(e), + _ => unreachable!(), + } + } + SExpr(e) => { + let t = e.t.clone(); + match eval_expr(ctx, e) { + CValue(v) => return Ok(Some((v, t))), + CException(e) => return Err(e), + _ => unreachable!(), + } + } + SRecDef(..) => todo!(), + SNoop => unreachable!(), + } + Ok(None) +} + +fn eval_expr_stmt(ctx: &mut Context, s: Stmt) -> Control { + match s.kind { + SVal(p, e) => { + let c = eval_expr(ctx, e); + if let CValue(v) = c { + bind(ctx, p, v); + CValue(().into()) + } else { + c + } + } + SExpr(e) => { + let c = eval_expr(ctx, e); + if let CValue(_) = c { + CValue(().into()) + } else { + c + } + } + _ => unreachable!(), + } +} + +fn bind(ctx: &mut Context, p: Pattern, v: Value) { + match p.kind.as_ref().clone() { + PVal(x) => ctx.stack.bind_expr_decl(x, ExprDecl::Var(v)), + PIgnore => {} + _ => unreachable!(), + } +} + +fn eval_func(ctx: &mut Context, x: Name, vs: Vector) -> Control { + match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Def(m, gs, ps, t, b)) => { + ctx.stack.push_scope(()); + for (p, v) in ps.into_iter().zip(vs) { + bind(ctx, p, v); + } + let c = eval_block(ctx, b); + ctx.stack.pop_scope(); + match c { + CValue(v) | CFunReturn(v) => CValue(v), + CException(s) => return CException(s), + _ => unreachable!(), + } + } + Some(ExprDecl::Bif(m, gs, ts, t)) => { + let CString(x) = m.get("name").unwrap().as_ref().unwrap() else { + unreachable!() + }; + eval_builtin(ctx, x.clone(), ts, vs) + } + _ => unreachable!("{:?}", x), + } +} + +fn eval_builtin(ctx: &mut Context, x: Name, ts: Vector, vs: Vector) -> Control { + let x = x.as_str(); + let vs = vs.into_iter().collect::>(); + let ts = ts.into_iter().collect::>(); + let v = ctx.bifs.get(x)(ctx, ts.as_slice(), vs.as_slice()); + CValue(v) +} + +fn eval_block(ctx: &mut Context, b: Block) -> Control { + ctx.stack.push_scope(()); + for s in b.ss { + eval_expr_stmt(ctx, s.clone()); + } + let v = val(ctx, b.e); + ctx.stack.pop_scope(); + CValue(v).into() +} + +fn val(ctx: &mut Context, e: Expr) -> Value { + let EVal(x) = e.kind() else { unreachable!() }; + ctx.find_val(&x) +} + +fn eval_expr(ctx: &mut Context, e: Expr) -> Control { + match e.kind() { + EConst(c) => CValue(constant(c).into()), + EFunCallDirect(x, ts, es) => { + let vs = es.into_iter().map(|e| val(ctx, e)).collect(); + eval_func(ctx, x, vs) + } + EFunCall(e, es) => { + let f = val(ctx, e).as_function(); + let vs = es.into_iter().map(|e| val(ctx, e)).collect(); + eval_func(ctx, f.0, vs) + } + EDef(x, ts) => CValue(Function(x).into()).into(), + EFunReturn(e) => CFunReturn(val(ctx, e).into()), + EIfElse(e, b0, b1) => { + if val(ctx, e).as_bool() { + eval_block(ctx, b0) + } else { + eval_block(ctx, b1) + } + } + ELoop(b) => loop { + match eval_block(ctx, b.clone()) { + CLoopBreak(v) => break CValue(v), + CLoopContinue => continue, + CFunReturn(v) => break CFunReturn(v), + CValue(_) => continue, + CException(x) => break CException(x), + } + }, + ELoopBreak(e) => { + let v = val(ctx, e); + CLoopBreak(v).into() + } + ELoopContinue => CLoopContinue, + ERecord(xes) => { + let xvs = xes.into_iter().map(|(x, e)| (x, val(ctx, e))).collect(); + CValue(Record(xvs).into()) + } + ERecordAccess(e, x) => { + let v = val(ctx, e); + let xvs = v.as_record(); + CValue(xvs.0.get(&x).unwrap().clone().into()) + } + EVariant(_, _, x, e) => { + let v = val(ctx, e); + CValue(Variant { x, v }.into()) + } + EVariantAccess(_, _, x, e) => { + let var = val(ctx, e).as_variant(); + assert_eq!(x, var.x); + CValue(var.v).into() + } + EVariantCheck(_, _, x, e) => { + let var = val(ctx, e).as_variant(); + CValue((var.x == x).into()) + } + EMatch(_, _) => unreachable!(), + EArray(es) => { + let vs = es.map(|e| val(ctx, e)); + CValue(Array(vs).into()) + } + EArrayAccess(e0, e1) => { + let v0 = val(ctx, e0).as_array(); + let v1 = val(ctx, e1).as_usize(); + if let Some(v) = v0.0.get(v1) { + CValue(v.clone().into()) + } else { + CException(Error::InterpreterError { + info: e.info, + s: "array index out of bounds".into(), + }) + } + } + ETuple(es) => { + let vs = es.map(|e| val(ctx, e)); + CValue(Tuple(vs).into()) + } + ETupleAccess(e, n) => { + let v = val(ctx, e).as_tuple().0; + CValue(v[n as usize].clone().into()) + } + ERecordConcat(_, _) => todo!(), + EArrayConcat(_, _) => todo!(), + EMut(..) => unreachable!(), + EVal(x) => CValue(val(ctx, e).into()), + EVar(..) => unreachable!(), + EDo(..) => unreachable!(), + ENoop(..) => unreachable!(), + EFor(..) => unreachable!(), + EWhile(..) => unreachable!(), + EFun(..) => unreachable!(), + EError => unreachable!(), + } +} + +pub fn constant(c: Const) -> Value { + match c { + CInt(i) => i.into(), + CBool(b) => b.into(), + CFloat(f) => (f as f64).into(), + CString(s) => builtins::string::String::from(s).into(), + CUnit => ().into(), + CChar(c) => c.into(), + } +} + +pub use Control::*; +#[derive(Debug, Clone)] +pub enum Control { + CLoopBreak(Value), + CLoopContinue, + CFunReturn(Value), + CValue(Value), + CException(Error), +} diff --git a/arc-lang/crates/compiler/passes/hir-lambda-lift/Cargo.toml b/arc-lang/crates/compiler/passes/hir-lambda-lift/Cargo.toml new file mode 100644 index 000000000..b02913bd6 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-lambda-lift/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "hir-lambda-lift" +version.workspace = true +edition.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +im-rc.workspace = true +hir.workspace = true +utils.workspace = true +codegen.workspace = true +info.workspace = true +diagnostics.workspace = true +name-gen.workspace = true +stack.workspace = true diff --git a/arc-lang/crates/compiler/passes/hir-lambda-lift/src/context.rs b/arc-lang/crates/compiler/passes/hir-lambda-lift/src/context.rs new file mode 100644 index 000000000..07b50f0e7 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-lambda-lift/src/context.rs @@ -0,0 +1,76 @@ +use diagnostics::Diagnostics; +use hir::*; +use im_rc::vector; +use im_rc::Vector; +use info::Info; +use name_gen::NameGen; +use stack::Stack; + +#[derive(Clone, Debug)] +pub struct Context { + pub(crate) stack: Stack, + pub(crate) names: NameGen, + pub(crate) stmts: Vector, + pub diagnostics: Diagnostics, +} + +#[derive(Clone, Debug)] +pub(crate) enum ScopeKind { + Def(Vector), + Fun, + Other, +} + +#[derive(Clone, Debug)] +pub(crate) enum ExprDecl { + Def(Vector), + Val(Info, Type), +} + +#[derive(Clone, Debug)] +pub(crate) enum TypeDecl {} + +impl Default for Context { + fn default() -> Self { + Self { + stack: Stack::new(ScopeKind::Other), + names: NameGen::new("_f"), + stmts: vector![], + diagnostics: Diagnostics::default(), + } + } +} + +impl Context { + pub fn new() -> Self { + Self::default() + } + + // Generic is captured by this function + // Get all generics in scope + + pub(crate) fn generics_in_scope(&self) -> Vector { + self.stack + .iter() + .filter_map(|s| match &s.kind { + ScopeKind::Def(gs) => Some(gs.clone()), + ScopeKind::Fun => None, + ScopeKind::Other => None, + }) + .flatten() + .collect() + } + + pub(crate) fn values_in_scope(&self) -> Vector { + todo!() + // self.stack + // .iter() + // .filter_map(|s| { + // s.expr_namespace.iter().filter_map(|(x, k)| match k { + // ExprDecl::Def(_) => None, + // ExprDecl::Val(_, t) => Some(x), + // }) + // }) + // .collect() + } +} diff --git a/arc-lang/crates/compiler/passes/hir-lambda-lift/src/lib.rs b/arc-lang/crates/compiler/passes/hir-lambda-lift/src/lib.rs new file mode 100644 index 000000000..0b7096711 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-lambda-lift/src/lib.rs @@ -0,0 +1,274 @@ +#![allow(unused)] +//! Lambda lift HIR => HIR +//! * Lifts all function definitions to the top level +//! * Might be easier to do before type inference +//! * After type inference would however produce better errors +//! +//! ---------------------------------------------------------- +//! def f(a:I32): fun(I32):I32 { +//! def g(b:I32):I32 { +//! a + b +//! } +//! g +//! } +//! +//! f(1)(2) +//! +//! => +//! +//! def g(b:I32, {a:I32}):I32 { +//! a + b +//! } +//! +//! def f(a:I32, {}:{}): {ptr:fun(I32, {b:I32}):I32, env:{a:I32}} { +//! val g = {ptr:g, env:{a:a}}; +//! g +//! } +//! +//! do { +//! val x:{ptr:fun(I32,{b:I32}), env:{b:I32}} = f(1); +//! x.ptr(2, x.env) +//! } +//! ---------------------------------------------------------- +//! val x = 1; +//! val f: fun(a:I32): I32 = fun(a:I32): I32 = x+1; +//! val g: fun(a:I32): I32 = fun(a:I32): I32 = f; +//! g(1) +//! +//! => +//! +//! val x = 1; +//! def f(a:I32,{x:I32}):I32 = x+1; +//! val f: {ptr:fun(a:I32,{b:I32}):I32, env:{x:I32}} = {ptr:f, env:{x}}; +//! val g: {ptr:fun(a:I32,{b:I32}):I32, env:{x:I32}} = f; +//! g.ptr(1, g.env) +//! ---------------------------------------------------------- +//! def f[T](a:T): fun(): T { +//! def g(): T { +//! a +//! } +//! } +//! +//! => +//! +//! def g[T](a:T, {}:{}): T { +//! a +//! } +//! +//! def f[T](a:T, {}:{}): {ptr:fun({},{}):T, env:{a:T}} { +//! val g = {ptr:g, env:{a:a}}; +//! g +//! } +//! ---------------------------------------------------------- +//! Cases to consider +//! * Function definitions +//! 1. Check which expression and type variables are captured (i.e. defined outside) +//! 2. Create a new function definition which takes an environment as an extra argument that +//! contains the captured variables +//! `def f(.., {_:_,...}):.. = ..` +//! 3. Replace the old function definition with a closure that stores a function pointer and environment +//! `val f = {ptr:_, env:{_:_,...}}` +//! 4. Update the type wherever the function definition is used +//! * Store type inside environment and propagate it +//! * Return the type +//! 4. All references to the function definition are replaced with the closure +//! `f(..) => f.ptr(.., f.env)` + +use context::Context; +use context::ExprDecl; +use context::ScopeKind; +use context::TypeDecl; +use hir::*; +use im_rc::Vector; +use utils::VectorUtils; +pub mod context; + +pub fn process(ctx: &mut Context, ss: Vector) -> Vector { + ss.into_iter().map(|s| ll_stmt(ctx, s)).collect() +} + +fn ll_stmt(ctx: &mut Context, s: Stmt) -> Stmt { + let info = s.info; + match s.kind { + SDef(m, x, gs, ps, t, b) => { + let gs = gs.concat(ctx.generics_in_scope()); + // def foo[A](x:A):A { + // def bar(y:A):A = y; + // bar(x) + // } + // + // def bar(y:A):A = y; + // + // def foo[A](x:A):A { + // bar[A](x) + // } + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Def(gs.clone())); + ctx.stack.push_scope(ScopeKind::Def(gs.clone())); + let b = ll_block(ctx, b); + ctx.stack.pop_scope(); + SDef(m, x, gs, ps, t, b).with(s.info) + } + SRecDef(..) => unreachable!(), + SBif(m, x, gs, ts, t) => SBif(m, x, gs, ts, t).with(s.info), + SEnum(m, x, gs, xts) => SEnum(m, x, gs, xts).with(s.info), + SBit(m, x, gs) => SBit(m, x, gs).with(s.info), + SVal(p, e) => { + let e = ll_expr(ctx, e); + SVal(p, e).with(s.info) + } + SExpr(e) => { + let e = ll_expr(ctx, e); + SExpr(e).with(s.info) + } + SNoop => SNoop.with(s.info), + } +} + +fn ll_block(ctx: &mut Context, b: Block) -> Block { + let info = b.info; + let ss = b.ss.map(|s| ll_stmt(ctx, s)); + let e = ll_expr(ctx, b.e); + Block::new(ss, e, info) +} + +fn ll_expr(ctx: &mut Context, e: Expr) -> Expr { + let info = e.info; + let t = e.t; + match e.kind.as_ref().clone() { + EConst(c) => EConst(c).with(t, info), + EFun(ps, t, b) => { + todo!() + } + EFunCall(e, es) => { + todo!() + } + EFunReturn(e) => { + todo!() + } + ELoop(b) => { + let b = ll_block(ctx, b); + ELoop(b).with(t, info) + } + ELoopBreak(e) => { + let e = ll_expr(ctx, e); + ELoopBreak(e).with(t, info) + } + ELoopContinue => ELoopContinue.with(t, info), + EMatch(e, pbs) => { + let e = ll_expr(ctx, e); + let pbs = pbs.map(|(p, b)| (p, ll_block(ctx, b))); + EMatch(e, pbs).with(t, info) + } + EArray(es) => { + let es = es.map(|e| ll_expr(ctx, e)); + // let e = ll_expr(ctx, e); + EArray(es).with(t, info) + } + EArrayAccess(e0, e1) => { + let e0 = ll_expr(ctx, e0); + let e1 = ll_expr(ctx, e1); + EArrayAccess(e0, e1).with(t, info) + } + EIfElse(e, b0, b1) => { + let e = ll_expr(ctx, e); + let b0 = ll_block(ctx, b0); + let b1 = ll_block(ctx, b1); + EIfElse(e, b0, b1).with(t, info) + } + ERecord(xes) => { + let xes = xes.map(|(x, e)| (x, ll_expr(ctx, e))); + // let e = ll_expr(ctx, e); + ERecord(xes).with(t, info) + } + ERecordAccess(e, x) => { + let e = ll_expr(ctx, e); + ERecordAccess(e, x).with(t, info) + } + EMut(e0, e1) => { + let e0 = ll_expr(ctx, e0); + let e1 = ll_expr(ctx, e1); + EMut(e0, e1).with(t, info) + } + EVal(x) => EVal(x).with(t, info), + EVar(x) => EVar(x).with(t, info), + EDef(x, ts) => { + todo!() + } + EVariant(x0, ts, x1, e) => { + let e = ll_expr(ctx, e); + let ts = ts.map(|t| ll_type(ctx, t)); + EVariant(x0, ts, x1, e).with(t, info) + } + EDo(b) => { + let b = ll_block(ctx, b); + EDo(b).with(t, info) + } + ENoop(e) => { + let e = ll_expr(ctx, e); + ENoop(e).with(t, info) + } + ETuple(es) => { + let es = es.map(|e| ll_expr(ctx, e)); + ETuple(es).with(t, info) + } + ETupleAccess(e, n) => { + let e = ll_expr(ctx, e); + ETupleAccess(e, n).with(t, info) + } + EFor(p, e, b) => { + let e = ll_expr(ctx, e); + let b = ll_block(ctx, b); + EFor(p, e, b).with(t, info) + } + EWhile(e, b) => { + let e = ll_expr(ctx, e); + let b = ll_block(ctx, b); + EWhile(e, b).with(t, info) + } + EError => EError.with(t, info), + EVariantAccess(_, _, _, _) => unreachable!(), + EVariantCheck(_, _, _, _) => unreachable!(), + EFunCallDirect(_, _, _) => todo!(), + ERecordConcat(_, _) => todo!(), + EArrayConcat(_, _) => todo!(), + } +} + +fn ll_type(ctx: &mut Context, t: Type) -> Type { + match t.kind() { + TFun(ts, t) => { + todo!() + } + TTuple(ts, b) => { + let ts = ts.map(|t| ll_type(ctx, t)); + TTuple(ts, b).into() + } + TRecord(t) => TRecord(t).into(), + TNominal(x, ts) => { + let ts = ts.map(|t| ll_type(ctx, t)); + TNominal(x, ts).into() + } + TAlias(info0, info1, t) => { + let t = ll_type(ctx, t); + TAlias(info0, info1, t).into() + } + TRowEmpty => TRowEmpty.into(), + TRowExtend((x, t), r) => { + let t = ll_type(ctx, t); + let r = ll_type(ctx, r); + TRowExtend((x, t), r).into() + } + TGeneric(x) => TGeneric(x).into(), + TArray(t, n) => { + let t = ll_type(ctx, t); + TArray(t, n).into() + } + TVar(x) => TVar(x).into(), + TError => TError.into(), + TUnit => TUnit.into(), + TNever => TNever.into(), + TRecordConcat(_, _) => todo!(), + TArrayConcat(_, _) => todo!(), + } +} diff --git a/arc-lang/crates/compiler/passes/hir-monomorphise/Cargo.toml b/arc-lang/crates/compiler/passes/hir-monomorphise/Cargo.toml new file mode 100644 index 000000000..54f9e1562 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-monomorphise/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "hir-monomorphise" +version.workspace = true +edition.workspace = true + +[dependencies] +hir.workspace = true +utils.workspace = true +im-rc.workspace = true +stack.workspace = true +diagnostics.workspace = true +info.workspace = true diff --git a/arc-lang/crates/compiler/passes/hir-monomorphise/src/context.rs b/arc-lang/crates/compiler/passes/hir-monomorphise/src/context.rs new file mode 100644 index 000000000..a45feef65 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-monomorphise/src/context.rs @@ -0,0 +1,55 @@ +use diagnostics::Diagnostics; +use hir::*; +use im_rc::HashMap; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use stack::Stack; + +#[derive(Debug)] +pub struct Context { + pub(crate) stack: Stack<(), ExprDecl, TypeDecl>, + pub monomorphised_types: HashMap, Name>>, + pub monomorphised_funcs: HashMap, Name>>, + pub stmts: Vector, + pub diagnostics: Diagnostics, +} + +impl Default for Context { + fn default() -> Context { + Context { + stack: Stack::new(()), + monomorphised_types: HashMap::new(), + monomorphised_funcs: HashMap::new(), + stmts: Vector::new(), + diagnostics: Diagnostics::default(), + } + } +} + +#[derive(Debug, Clone)] +pub(crate) enum TypeDecl { + Enum(Info, Meta, Vector, Vector<(Name, Type)>), + Bit(Info, Meta, Vector), + Generic(Type), +} + +#[derive(Debug, Clone)] +pub(crate) enum ExprDecl { + Def(Info, Meta, Vector, Vector, Type, Block), + Bif(Info, Meta, Vector, Vector, Type), + Val(Type), + Var(Type), +} + +impl Context { + pub fn new() -> Context { + Context { + stack: Stack::new(()), + diagnostics: Diagnostics::default(), + monomorphised_types: HashMap::new(), + monomorphised_funcs: HashMap::new(), + stmts: Vector::new(), + } + } +} diff --git a/arc-lang/crates/compiler/passes/hir-monomorphise/src/lib.rs b/arc-lang/crates/compiler/passes/hir-monomorphise/src/lib.rs new file mode 100644 index 000000000..a19542f0a --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-monomorphise/src/lib.rs @@ -0,0 +1,340 @@ +#![allow(unused)] +pub mod context; + +use crate::context::Context; +use context::ExprDecl; +use context::TypeDecl; +use diagnostics::Error; +use hir::*; +use im_rc::hashmap::Entry; +use im_rc::ordmap; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use utils::OrdMapUtils; +use utils::VectorUtils; + +pub fn process(ctx: &mut Context, ss: Vector) -> Vector { + for s in ss { + visit_top_stmt(ctx, s); + } + std::mem::take(&mut ctx.stmts) +} + +fn visit_top_stmt(ctx: &mut Context, s: Stmt) { + let info = s.info; + match s.kind { + SDef(m, x, gs, ps, t, b) => { + ctx.stack + .bind_expr_decl(x, ExprDecl::Def(info, m, gs, ps, t, b)); + } + SRecDef(_, _) => todo!(), + SBif(m, x, gs, ts, t) => { + ctx.stack + .bind_expr_decl(x, ExprDecl::Bif(info, m, gs, ts, t)); + } + SEnum(m, x, gs, xts) => { + ctx.stack + .bind_type_decl(x, TypeDecl::Enum(info, m, gs, xts)); + } + SBit(m, x, gs) => { + ctx.stack.bind_type_decl(x, TypeDecl::Bit(info, m, gs)); + } + SVal(p, e) => { + let e = visit_expr(ctx, e); + let p = visit_val_pattern(ctx, p); + ctx.stmts.push_back(SVal(p, e).with(s.info)); + } + SExpr(e) => { + let e = visit_expr(ctx, e); + ctx.stmts.push_back(SExpr(e).with(s.info)); + } + SNoop => {} + } +} + +fn visit_type(ctx: &mut Context, t: Type, info: Info) -> Type { + match t.kind() { + TFun(ts, t) => { + let ts = ts.into_iter().map(|t| visit_type(ctx, t, info)).collect(); + let t = visit_type(ctx, t, info); + TFun(ts, t).into() + } + TRecord(t) => { + let t = visit_type(ctx, t, info); + TRecord(t).into() + } + TRecordConcat(t0, t1) => { + let t0 = visit_type(ctx, t0, info); + let t1 = visit_type(ctx, t1, info); + TRecordConcat(t0, t1).into() + } + TNominal(x, ts) => { + let ts = ts.into_iter().map(|t| visit_type(ctx, t, info)).collect(); + let x1 = monomorphise_type(ctx, x, ts); + TNominal(x1, vector![]).into() + } + TGeneric(x) => match ctx.stack.find_type_decl(&x) { + Some(TypeDecl::Generic(t)) => t, + x => unreachable!("{:?}", x), + }, + TRowEmpty => TRowEmpty.into(), + TRowExtend((x, t), r) => { + let t = visit_type(ctx, t, info); + let r = visit_type(ctx, r, info); + TRowExtend((x, t), r).into() + } + TTuple(ts, c) => { + let ts = ts.into_iter().map(|t| visit_type(ctx, t, info)).collect(); + TTuple(ts, c).into() + } + TAlias(_, _, t) => visit_type(ctx, t, info), + TArray(t, c) => { + let t = visit_type(ctx, t, info); + TArray(t, c).into() + } + TArrayConcat(t0, t1) => { + let t0 = visit_type(ctx, t0, info); + let t1 = visit_type(ctx, t1, info); + TArrayConcat(t0, t1).into() + } + TUnit => TUnit.into(), + TNever => TNever.into(), + TVar(x) => TVar(x).into(), + TError => TError.into(), + } +} + +fn visit_val_pattern(ctx: &mut Context, p: Pattern) -> Pattern { + let info = p.info; + let t = visit_type(ctx, p.t.clone(), info); + let info = p.info; + match p.kind() { + PIgnore => PIgnore.with(t, info), + PVal(x) => { + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Val(t.clone())); + PVal(x).with(t, info) + } + _ => unreachable!(), + } +} + +fn visit_val_expr(ctx: &mut Context, e: Expr) -> Expr { + let info = e.info; + match e.kind.as_ref().clone() { + EVal(x) => match ctx.stack.find_expr_decl(&x).unwrap() { + ExprDecl::Val(t) => EVal(x).with(t, info), + _ => unreachable!(), + }, + _ => unreachable!(), + } +} + +fn visit_expr(ctx: &mut Context, e: Expr) -> Expr { + let info = e.info; + let t = visit_type(ctx, e.t.clone(), info); + let info = e.info; + match e.kind() { + EConst(c) => EConst(c).with(t, info), + EFunCallDirect(x, ts, es) => { + let ts = ts.into_iter().map(|t| visit_type(ctx, t, info)).collect(); + let x = monomorphise_func(ctx, x, ts); + EFunCallDirect(x, vector![], es).with(t, info) + } + EDef(x, ts) => { + let ts = ts.into_iter().map(|t| visit_type(ctx, t, info)).collect(); + let x = monomorphise_func(ctx, x, ts); + EDef(x, vector![]).with(t, info) + } + EFunCall(e, es) => { + let e = visit_val_expr(ctx, e); + let es = es.into_iter().map(|e| visit_val_expr(ctx, e)).collect(); + EFunCall(e, es).with(t, info) + } + EFunReturn(e) => { + let e = visit_val_expr(ctx, e); + EFunReturn(e).with(t, info) + } + EIfElse(e, b0, b1) => { + let e = visit_val_expr(ctx, e); + let b0 = visit_block(ctx, b0); + let b1 = visit_block(ctx, b1); + EIfElse(e, b0, b1).with(t, info) + } + ELoop(b) => { + let b = visit_block(ctx, b); + ELoop(b).with(t, info) + } + ELoopBreak(e) => { + let e = visit_val_expr(ctx, e); + ELoopBreak(e).with(t, info) + } + ELoopContinue => ELoopContinue.with(t, info), + ERecord(xes) => ERecord(xes).with(t, info), + ERecordConcat(e0, e1) => { + let e0 = visit_val_expr(ctx, e0); + let e1 = visit_val_expr(ctx, e1); + ERecordConcat(e0, e1).with(t, info) + } + ERecordAccess(e, x) => { + let e = visit_val_expr(ctx, e); + ERecordAccess(e, x).with(t, info) + } + EVariant(x0, ts, x1, e) => { + let ts = ts.into_iter().map(|t| visit_type(ctx, t, info)).collect(); + let x0 = monomorphise_type(ctx, x0, ts); + EVariant(x0, vector![], x1, e).with(t, info) + } + EVariantAccess(x0, ts, x1, e) => { + let ts = ts.into_iter().map(|t| visit_type(ctx, t, info)).collect(); + let x0 = monomorphise_type(ctx, x0, ts); + EVariantAccess(x0, vector![], x1, e).with(t, info) + } + EVariantCheck(x0, ts, x1, v) => { + let ts = ts.into_iter().map(|t| visit_type(ctx, t, info)).collect(); + let x0 = monomorphise_type(ctx, x0, ts); + EVariantCheck(x0, vector![], x1, v).with(t, info) + } + EArray(es) => { + let es = es.mapm(ctx, visit_val_expr); + EArray(es).with(t, info) + } + EArrayConcat(e0, e1) => { + let e0 = visit_val_expr(ctx, e0); + let e1 = visit_val_expr(ctx, e1); + EArrayConcat(e0, e1).with(t, info) + } + EArrayAccess(e0, e1) => { + let e0 = visit_val_expr(ctx, e0); + let e1 = visit_val_expr(ctx, e1); + EArrayAccess(e0, e1).with(t, info) + } + EMut(e0, e1) => { + let e0 = visit_val_expr(ctx, e0); + let e1 = visit_val_expr(ctx, e1); + EMut(e0, e1).with(t, info) + } + EVal(x) => EVal(x).with(t, info), + EVar(x) => EVar(x).with(t, info), + ETuple(es) => { + let es = es.mapm(ctx, visit_val_expr); + ETuple(es).with(t, info) + } + ETupleAccess(e, n) => { + let e = visit_val_expr(ctx, e); + ETupleAccess(e, n).with(t, info) + } + ENoop(e) => visit_val_expr(ctx, e), + EDo(_) => unreachable!("`do` should have been desugared"), + EFun(_, _, _) => unreachable!("`fun` should have been desugared"), + EMatch(_, _) => unreachable!("`match` should have been desugared"), + EFor(_, _, _) => unreachable!("`for` should have been desugared"), + EWhile(_, _) => unreachable!("`while` should have been desugared"), + EError => EError.with(t, info), + } +} + +fn visit_block(ctx: &mut Context, b: Block) -> Block { + let ss = b.ss.mapm(ctx, visit_expr_stmt); + let e = visit_expr(ctx, b.e); + Block::new(ss, e, b.info) +} + +fn visit_expr_stmt(ctx: &mut Context, s: Stmt) -> Stmt { + match s.kind { + SVal(p, e) => { + let e = visit_expr(ctx, e); + let p = visit_val_pattern(ctx, p); + SVal(p, e).with(s.info) + } + SExpr(e) => { + let e = visit_expr(ctx, e); + SExpr(e).with(s.info) + } + _ => unreachable!(), + } +} + +fn monomorphise_func(ctx: &mut Context, x: Name, ts: Vector) -> Name { + let instances = ctx.monomorphised_funcs.entry(x.clone()).or_default(); + let len = instances.len(); + match instances.entry(ts.clone()) { + Entry::Occupied(e) => e.get().clone(), + Entry::Vacant(e) => { + let x1 = format!("{}_{}", x, len); + e.insert(x1.clone()); + match ctx.stack.find_expr_decl(&x).unwrap() { + ExprDecl::Def(info, m, gs, ps, t, b) => { + ctx.stack.push_scope(()); + for (g, t) in gs.into_iter().zip(ts.into_iter()) { + ctx.stack.bind_type_decl(g, TypeDecl::Generic(t)); + } + let ps = ps.mapm(ctx, visit_val_pattern); + let t = visit_type(ctx, t, info); + let b = visit_block(ctx, b); + ctx.stack.pop_scope(); + ctx.stmts + .push_back(SDef(m, x1.clone(), vector![], ps, t, b).with(info)); + } + ExprDecl::Bif(info, mut m, gs, ts1, t) => { + ctx.stack.push_scope(()); + for (g, t) in gs.into_iter().zip(ts.into_iter()) { + ctx.stack.bind_type_decl(g, TypeDecl::Generic(t)); + } + let ts1 = ts1.into_iter().map(|t| visit_type(ctx, t, info)).collect(); + let t = visit_type(ctx, t, info); + ctx.stack.pop_scope(); + m.insert("name".to_string(), Some(CString(x))); + ctx.stmts + .push_back(SBif(m, x1.clone(), vector![], ts1, t).with(info)); + } + x => unreachable!("{:?}", x), + } + x1 + } + } +} + +fn monomorphise_type(ctx: &mut Context, x: Name, ts: Vector) -> Name { + let instances = ctx.monomorphised_types.entry(x.clone()).or_default(); + let len = instances.len(); + match instances.entry(ts.clone()) { + Entry::Occupied(e) => e.get().clone(), + Entry::Vacant(e) => { + let x1 = if ts.is_empty() { + x.clone() + } else { + format!("{}_{}", x, len) + }; + e.insert(x1.clone()); + match ctx + .stack + .find_type_decl(&x) + .expect(&format!("{} not found", x)) + { + TypeDecl::Enum(info, m, gs, xts) => { + ctx.stack.push_scope(()); + for (g, t) in gs.into_iter().zip(ts.into_iter()) { + ctx.stack.bind_type_decl(g, TypeDecl::Generic(t)); + } + let xts = xts + .into_iter() + .map(|(x, t)| (x, visit_type(ctx, t, info))) + .collect(); + ctx.stack.pop_scope(); + ctx.stmts + .push_back(SEnum(m, x1.clone(), vector![], xts).with(info)); + } + TypeDecl::Bit(info, mut m, gs) => { + m.insert("name".to_string(), Some(CString(x))); + ctx.stmts + .push_back(SBit(m, x1.clone(), vector![]).with(info)); + } + x => unreachable!("{:?}", x), + } + x1 + } + } +} diff --git a/arc-lang/crates/compiler/passes/hir-patcomp/Cargo.toml b/arc-lang/crates/compiler/passes/hir-patcomp/Cargo.toml new file mode 100644 index 000000000..24f1624b8 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-patcomp/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "hir-patcomp" +version.workspace = true +edition.workspace = true + +[dependencies] +im-rc.workspace = true +hir.workspace = true +utils.workspace = true +info.workspace = true +stack.workspace = true +name-gen.workspace = true +diagnostics.workspace = true diff --git a/arc-lang/crates/compiler/passes/hir-patcomp/src/context.rs b/arc-lang/crates/compiler/passes/hir-patcomp/src/context.rs new file mode 100644 index 000000000..4ec812b24 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-patcomp/src/context.rs @@ -0,0 +1,70 @@ +use diagnostics::Diagnostics; +use hir::*; +use im_rc::OrdMap; +use im_rc::Vector; +use name_gen::NameGen; +use stack::Stack; + +#[derive(Debug)] +pub struct Context { + pub(crate) stack: Stack, Name, ()>, + clauses: Vector, + pub(crate) vals: NameGen, + pub diagnostics: Diagnostics, +} + +impl Default for Context { + fn default() -> Self { + Context { + stack: Stack::new(Vector::new()), + clauses: Vector::new(), + vals: NameGen::new("v"), + diagnostics: Diagnostics::default(), + } + } +} + +pub(crate) type Equations = OrdMap; +pub(crate) type Substitutions = OrdMap; + +#[derive(Debug, Clone)] +pub(crate) struct Clause { + pub(crate) eqs: Equations, + pub(crate) substs: Substitutions, + pub(crate) b: Block, +} + +impl Clause { + pub(crate) fn new(eqs: Equations, substs: Substitutions, b: Block) -> Self { + Self { eqs, substs, b } + } +} + +impl Context { + pub fn new() -> Context { + Self::default() + } + + pub(crate) fn add_expr(&mut self, e: Expr) -> Name { + let info = e.info; + let t = e.t.clone(); + let x = self.vals.fresh(); + let p = PVal(x.clone()).with(t.clone(), info); + let s = StmtKind::SVal(p, e).with(info); + self.add_stmt(s); + x + } + + pub(crate) fn add_expr_val(&mut self, e: Expr) -> Expr { + let x = self.add_expr(e.clone()); + EVal(x).with(e.t, e.info) + } + + pub(crate) fn add_stmt(&mut self, s: Stmt) { + self.stack.current().push_back(s); + } + + pub(crate) fn add_stmts(&mut self, ss: Vector) { + self.stack.current().extend(ss); + } +} diff --git a/arc-lang/crates/compiler/passes/hir-patcomp/src/lib.rs b/arc-lang/crates/compiler/passes/hir-patcomp/src/lib.rs new file mode 100644 index 000000000..e30fbd1e0 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-patcomp/src/lib.rs @@ -0,0 +1,544 @@ +// Used for flattening statements like +// +// do { val x = 1; } +// +// into +// +// val x = 1; +// Used for flattening statements like +// +// val x = 1; val y = x; +// +// into +// +// val x = 1; +#![allow(unused)] +pub mod context; + +use crate::context::Clause; +use crate::context::Context; +use crate::context::Equations; +use diagnostics::Error; +use hir::*; +use im_rc::ordmap; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use utils::OptionUtils; +use utils::VectorUtils; + +pub fn process(ctx: &mut Context, ss: Vector) -> Vector { + for s in ss { + lower_stmt(ctx, s); + } + std::mem::take(ctx.stack.current()) +} + +fn lower_stmt(ctx: &mut Context, s: Stmt) { + let info = s.info; + match s.kind.clone() { + SDef(m, x, gs, ps, t, b) => { + ctx.stack.push_scope(Vector::new()); + let ps = ps.map(|p| lower_param(ctx, p)); + let b = lower_block(ctx, b); + let ss1 = ctx.stack.pop_scope(); + let ss2 = ss1.concat(b.ss); + let b1 = Block::new(ss2, b.e, info); + ctx.add_stmt(SDef(m, x, gs, ps, t, b1).with(info)) + } + SVal(p, e) => { + let e = lower_expr(ctx, e); + let p = lower_val_pattern(ctx, p, e); + } + SExpr(e) => { + let e = lower_expr(ctx, e); + ctx.add_stmt(SExpr(e).with(info)) + } + SRecDef(..) => todo!(), + SBif(..) | SEnum(..) | SBit(..) => ctx.add_stmt(s), + SNoop => {} + } +} + +fn lower_param(ctx: &mut Context, p: Pattern) -> Pattern { + match p.kind.as_ref().clone() { + PIgnore => p, + PNoop(p) => lower_param(ctx, p), + PVal(_) => p, + PVar(_) => p, + PError => p, + _ => { + let info = p.info; + let t = p.t.clone(); + let x = ctx.vals.fresh(); + let e = EVal(x.clone()).with(p.t.clone(), info); + lower_val_pattern(ctx, p, e); + PVal(x).with(t, info) + } + } +} + +fn lower_val_pattern(ctx: &mut Context, p: Pattern, e: Expr) { + let t = p.t; + let info = p.info; + match p.kind.as_ref().clone() { + PError | PIgnore => { + ctx.add_stmt(SExpr(e).with(info)); + } + PNoop(p) => lower_val_pattern(ctx, p, e), + PRecord(xps) => { + let e = bind_expr(ctx, e); + for (x, p) in xps { + let e = ERecordAccess(e.clone(), x).with(p.t.clone(), info); + lower_val_pattern(ctx, p, e); + } + } + PArray(ps) => { + let e = bind_expr(ctx, e); + for (p2, i) in ps.into_iter().zip(0..) { + let e2 = EConst(CInt(i)).with(TNominal("i32".to_string(), vector![]).into(), info); + let e = EArrayAccess(e.clone(), e2).with(p2.t.clone(), info); + lower_val_pattern(ctx, p2, e); + } + } + PArrayConcat(..) => unreachable!(), + PRecordConcat(..) => unreachable!(), + PTuple(ps) => { + let e = bind_expr(ctx, e); + for (p, i) in ps.into_iter().zip(0..) { + let e = ETupleAccess(e.clone(), i).with(p.t.clone(), info); + lower_val_pattern(ctx, p, e); + } + } + PVal(x) => { + if let EVal(x1) = e.kind.as_ref() { + ctx.stack.bind_expr_decl(x.clone(), x1.clone()) + } else { + ctx.add_stmt(SVal(PVal(x).with(t, e.info), e).with(info)) + } + } + PVar(x) => { + if let EVal(x1) = e.kind.as_ref() { + ctx.stack.bind_expr_decl(x.clone(), x1.clone()) + } else { + ctx.add_stmt(SVal(PVal(x).with(t, e.info), e).with(info)) + } + } + PConst(_) | POr(_, _) | PVariant(_, _, _, _) => { + ctx.diagnostics + .push_error(Error::ExpectedIrrefutablePattern { info }); + } + } +} + +fn bind_expr(ctx: &mut Context, e: Expr) -> Expr { + if let EVal(x1) = e.kind.as_ref() { + e + } else { + let x = ctx.vals.fresh(); + let p = PVal(x.clone()).with(e.t.clone(), e.info); + ctx.add_stmt(SVal(p, e.clone()).with(e.info)); + EVal(x).with(e.t.clone(), e.info) + } +} + +fn lower_expr_val(ctx: &mut Context, e: Expr) -> Expr { + let e = lower_expr(ctx, e); + if let EVal(x) = e.kind.as_ref() { + e + } else { + let x = ctx.add_expr(e.clone()); + EVal(x).with(e.t, e.info) + } +} + +fn lower_expr_name(ctx: &mut Context, e: Expr) -> Name { + let e = lower_expr(ctx, e); + ctx.add_expr(e.clone()) +} + +fn lower_expr(ctx: &mut Context, e: Expr) -> Expr { + let info = e.info; + let t = e.t; + match e.kind.as_ref().clone() { + ENoop(e) => lower_expr(ctx, e), + ELoopBreak(e) => { + let e = lower_expr_val(ctx, e); + ELoopBreak(e).with(t, info) + } + EFunCall(e, es) => { + let e = lower_expr_val(ctx, e); + let es = es.mapm(ctx, lower_expr_val); + EFunCall(e, es).with(t, info) + } + EFunCallDirect(x, ts, es) => { + let es = es.mapm(ctx, lower_expr_val); + EFunCallDirect(x, ts, es).with(t, info) + } + ELoopContinue => (ELoopContinue.with(t, info)), + EVariant(x0, ts, x1, e) => { + let e = lower_expr_val(ctx, e); + EVariant(x0, ts, x1, e).with(t, info) + } + EFun(ts, t1, b) => { + let b = lower_block(ctx, b); + EFun(ts, t1, b).with(t, info) + } + EConst(c) => (EConst(c).with(t, info)), + ELoop(b) => { + let b = lower_block(ctx, b); + ELoop(b).with(t, info) + } + EMatch(e, arms) => { + let x = lower_expr_name(ctx, e); + let clauses = arms_to_clauses(arms, x); + let b = lower_clauses(ctx, t, clauses); + let ctx = ctx.add_stmts(b.ss); + b.e + } + EIfElse(e, b0, b1) => { + let e = lower_expr_val(ctx, e); + let b0 = lower_block(ctx, b0); + let b1 = lower_block(ctx, b1); + EIfElse(e, b0, b1).with(t, info) + } + ERecord(xes) => { + let xes = xes.map(|(x, e)| (x, lower_expr_val(ctx, e))); + ERecord(xes).with(t, info) + } + ERecordAccess(e, x) => { + let e = lower_expr_val(ctx, e); + ERecordAccess(e, x).with(t, info) + } + ERecordConcat(_, _) => todo!(), + EFunReturn(e) => { + let e = lower_expr_val(ctx, e); + EFunReturn(e).with(t, info) + } + EVal(x) => { + let x = resolve_alias(ctx, x); + EVal(x).with(t, info) + } + EVar(x) => { + let x = resolve_alias(ctx, x); + EVar(x).with(t, info) + } + EArray(es) => { + let es = es.mapm(ctx, lower_expr_val); + EArray(es).with(t, info) + } + EArrayConcat(_, _) => todo!(), + EArrayAccess(e0, e1) => { + let e0 = lower_expr_val(ctx, e0); + let e1 = lower_expr_val(ctx, e1); + EArrayAccess(e0, e1).with(t, info) + } + EMut(e0, e1) => { + let e0 = lower_expr_val(ctx, e0); + let e1 = lower_expr_val(ctx, e1); + EMut(e0, e1).with(t, info) + } + EDef(x, ts) => EDef(x, ts).with(t, info), + EVariantAccess(x0, ts, x1, e) => { + let e = lower_expr_val(ctx, e); + EVariantAccess(x0, ts, x1, e).with(t, info) + } + EVariantCheck(x0, ts, x1, e) => { + let e = lower_expr_val(ctx, e); + EVariantCheck(x0, ts, x1, e).with(t, info) + } + EDo(b) => { + let b = lower_block(ctx, b); + ctx.add_stmts(b.ss); + b.e + } + ETuple(es) => { + let es = es.mapm(ctx, lower_expr_val); + ETuple(es).with(t, info) + } + ETupleAccess(e, i) => { + let e = lower_expr_val(ctx, e); + ETupleAccess(e, i).with(t, info) + } + EFor(_, _, _) => todo!(), + EWhile(e, b) => { + let e = lower_expr_val(ctx, e); + let b = lower_block(ctx, b); + EWhile(e, b).with(t, info) + } + EError => EError.with(t, info), + } +} + +fn resolve_alias(ctx: &mut Context, mut x: Name) -> Name { + for scope in ctx.stack.iter() { + if let Some(x1) = scope.expr_namespace.find(&x) { + x = x1.clone(); + } + } + x +} + +fn simplify_pat_eq( + ctx: &mut Context, + or_clauses: &mut Vector, + clause: &mut Clause, + (v, p): (Name, Pattern), +) { + match p.kind.as_ref().clone() { + // Irrefutable patterns can be simplified (i.e., flattened) + PIgnore => {} + PNoop(p) => simplify_pat_eq(ctx, or_clauses, clause, (v, p)), + PRecord(xps) => { + for (x, p) in xps { + let e = EVal(v.clone()).with(p.t.clone(), p.info); + ctx.add_expr(ERecordAccess(e, x).with(p.t.clone(), p.info)); + simplify_pat_eq(ctx, or_clauses, clause, (v.clone(), p)) + } + } + // Or-patterns are duplicated for each branch + POr(p0, p1) => { + let x0 = ctx.vals.fresh(); + let x1 = ctx.vals.fresh(); + let mut eqs0 = clause.eqs.clone(); + let mut eqs1 = clause.eqs.clone(); + eqs0.insert(x0, p0); + eqs1.insert(x1, p1); + let mut c0 = Clause::new(eqs0, clause.substs.clone(), clause.b.clone()); + let mut c1 = Clause::new(eqs1, clause.substs.clone(), clause.b.clone()); + simplify_clause(ctx, or_clauses, &mut c0); + simplify_clause(ctx, or_clauses, &mut c1); + or_clauses.push_back(c0); + or_clauses.push_back(c1); + } + PArray(_) => { + todo!("Handle this irrefutable pattern. Check that the array matches the expected size") + } + PArrayConcat(_, _) => unreachable!(), + PRecordConcat(_, _) => unreachable!(), + // Variables are substituted + PVar(v1) => { + clause.substs.insert(v, v1); + } + PVal(v1) => { + clause.substs.insert(v, v1); + } + PTuple(_) => { + todo!("Handle this irrefutable pattern. Check that the tuple matches the expected size") + } + // Refutable patterns are added to the list of equations + PConst(_) | PVariant(_, _, _, _) => { + clause.eqs.insert(v, p); + } + PError => {} + } +} + +fn lower_clauses(ctx: &mut Context, match_t: Type, mut clauses: Vector) -> Block { + // Simplify the current clauses + let mut or_clauses = Vector::new(); + for clause in clauses.iter_mut() { + simplify_clause(ctx, &mut or_clauses, clause); + } + clauses.append(or_clauses); + // Select one equation in one of the clauses to branch on + let head = clauses.head().unwrap().clone(); + if head.eqs.is_empty() { + // This pattern equation is now solved + for (v0, v1) in head.substs { + ctx.stack.bind_expr_decl(v0, v1); + } + lower_block(ctx, head.b) + } else { + let x = most_matching_name(&head.eqs, &clauses); + let p = head.eqs.get(&x).unwrap(); + match p.kind.as_ref().clone() { + PConst(c) => branch_const_clauses(ctx, p.info, match_t, clauses, x, c, p.t.clone()), + PVariant(x0, ts, x1, _) => { + branch_variant_clauses(ctx, p.info, match_t, clauses, x, x0, ts, x1, p.t.clone()) + } + // Irrefutable patterns are already simplified + PTuple(_) + | PVal(_) + | PArray(_) + | PIgnore + | POr(_, _) + | PNoop(_) + | PRecord(_) + | PVar(_) + | PArrayConcat(_, _) + | PRecordConcat(_, _) + | PError => unreachable!(), + } + } +} + +fn simplify_clause(ctx: &mut Context, cs: &mut Vector, c: &mut Clause) { + for eq in std::mem::take(&mut c.eqs) { + simplify_pat_eq(ctx, cs, c, eq); + } +} + +fn branch_const_clauses( + ctx: &mut Context, + info: Info, + match_t: Type, + clauses: Vector, + branch_v: Name, + c: Const, + t: Type, +) -> Block { + let (then_clauses, else_clauses) = split_const_clauses(&branch_v, &c, clauses); + let e = EVal(branch_v.clone()).with(t.clone(), info); + let e0 = ctx.add_expr_val(EConst(c).with(t.clone(), info)); + let e1 = ctx.add_expr_val( + EFunCallDirect("eq".to_string(), vector![t.clone()], vector![e, e0]) + .with(TNominal("Bool".to_string(), vector![]).into(), info), + ); + match () { + _ if else_clauses.is_empty() => lower_clauses(ctx, match_t, then_clauses), + _ if then_clauses.is_empty() => lower_clauses(ctx, match_t, else_clauses), + _ => { + let then_b = lower_clauses(ctx, match_t.clone(), then_clauses); + let else_b = lower_clauses(ctx, match_t.clone(), else_clauses); + let v = ctx.add_expr_val(EIfElse(e1, then_b, else_b).with(match_t, info)); + Block::new(vector![], v, info) + } + } +} + +fn branch_variant_clauses( + ctx: &mut Context, + info: Info, + match_t: Type, + clauses: Vector, + branch_v: Name, + x0: Name, + ts: Vector, + x1: Name, + t: Type, +) -> Block { + let v = ctx.vals.fresh(); + let e = EVal(v.clone()).with(t.clone(), info); + let e0 = EVal(branch_v.clone()).with(t.clone(), info); + let e1 = EVariantAccess(x0.clone(), ts.clone(), x1.clone(), e0); + + let (then_clauses, else_clauses) = split_variant_clauses(branch_v, &v, &x1, clauses); + + match () { + _ if else_clauses.is_empty() => lower_unwrap(ctx, info, match_t, then_clauses, e, t, e1), + _ if then_clauses.is_empty() => lower_clauses(ctx, match_t, else_clauses), + _ => { + let check_e = + ctx.add_expr_val(EVariantCheck(x0, ts, x1, e.clone()).with(t.clone(), info)); + let then_b = lower_unwrap(ctx, info, match_t.clone(), then_clauses, e, t, e1); + let else_b = lower_clauses(ctx, match_t.clone(), else_clauses); + let e = ctx.add_expr_val(EIfElse(check_e, then_b, else_b).with(match_t, info)); + Block::new(vector![], e, info) + } + } +} + +fn lower_unwrap( + ctx: &mut Context, + info: Info, + match_t: Type, + clauses: Vector, + v: Expr, + t: Type, + e: ExprKind, +) -> Block { + ctx.stack.push_scope(Vector::new()); + ctx.add_expr(e.with(t, info)); + let b = lower_clauses(ctx, match_t, clauses); + let ss1 = ctx.stack.pop_scope(); + let ss2 = ss1.concat(b.ss); + Block::new(ss2, b.e, info) +} + +fn split_const_clauses( + branch_v: &Name, + branch_c: &Const, + clauses: Vector, +) -> (Vector, Vector) { + let mut then_clauses = vector![]; + let mut else_clauses = vector![]; + for mut clause in clauses { + if let Some(p) = clause.eqs.get(branch_v) { + if let PConst(c1) = (*p.kind).clone() { + if *branch_c == c1 { + clause.eqs.remove(branch_v); + then_clauses.push_back(clause); + } else { + else_clauses.push_back(clause); + } + } else { + unreachable!() + } + } else { + then_clauses.push_back(clause.clone()); + else_clauses.push_back(clause); + } + } + (then_clauses, else_clauses) +} + +fn split_variant_clauses( + branch_v: Name, + unwrap_v: &Name, + variant_x: &Name, + clauses: Vector, +) -> (Vector, Vector) { + let mut then_clauses = vector![]; + let mut else_clauses = vector![]; + for mut clause in clauses { + if let Some(p) = clause.eqs.get(&branch_v) { + if let PVariant(_xs, _ts, x1, p1) = (*p.kind).clone() { + if *variant_x == x1 { + clause.eqs.remove(&branch_v); + clause.eqs.insert(unwrap_v.clone(), p1); + then_clauses.push_back(clause); + } else { + else_clauses.push_back(clause); + } + } else { + unreachable!() + } + } else { + then_clauses.push_back(clause.clone()); + else_clauses.push_back(clause); + } + } + (then_clauses, else_clauses) +} + +// Pick the variable which occurs in the most equations of all clauses +fn most_matching_name(eqs: &Equations, clauses: &Vector) -> Name { + eqs.iter() + .map(|(x, _)| x) + .max_by_key(|x| { + clauses + .iter() + .filter(|clause| clause.eqs.iter().find(|(y, _)| x == y).is_some()) + .count() + }) + .cloned() + .unwrap() +} + +fn lower_block(ctx: &mut Context, b: Block) -> Block { + ctx.stack.push_scope(Vector::new()); + for s in b.ss { + lower_stmt(ctx, s); + } + let e = lower_expr_val(ctx, b.e.clone()); + let ss = ctx.stack.pop_scope(); + Block::new(ss, e, b.info) +} + +fn arms_to_clauses(arms: Vector, x: Name) -> Vector { + arms.into_iter() + .map(|(p, b)| Clause::new(ordmap![x.clone() => p], ordmap![], b)) + .collect() +} diff --git a/arc-lang/crates/compiler/passes/hir-reachable/Cargo.toml b/arc-lang/crates/compiler/passes/hir-reachable/Cargo.toml new file mode 100644 index 000000000..20fbbcfe0 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-reachable/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "hir-reachable" +version.workspace = true +edition.workspace = true + +[dependencies] +hir.workspace = true +im-rc.workspace = true +stack.workspace = true +info.workspace = true +diagnostics.workspace = true +utils.workspace = true +value.workspace = true +builtins.workspace = true diff --git a/arc-lang/crates/compiler/passes/hir-reachable/src/context.rs b/arc-lang/crates/compiler/passes/hir-reachable/src/context.rs new file mode 100644 index 000000000..858289169 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-reachable/src/context.rs @@ -0,0 +1,46 @@ +use diagnostics::Diagnostics; +use hir::*; +use im_rc::vector; +use im_rc::HashSet; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use stack::Stack; +use std::rc::Rc; + +#[derive(Debug)] +pub struct Context { + pub(crate) stack: Stack<(), ExprDecl, TypeDecl>, + pub diagnostics: Diagnostics, + pub(crate) reachable: HashSet, + pub(crate) stmts: Vector, +} + +#[derive(Clone, Debug)] +pub(crate) enum ExprDecl { + Def(Info, Meta, Vector, Type, Block), + Bif(Info, Meta, Vector, Type), +} + +#[derive(Clone, Debug)] +pub(crate) enum TypeDecl { + Enum(Info, Meta, Vector<(Name, Type)>), + Bit(Info, Meta), +} + +impl Default for Context { + fn default() -> Self { + Self { + stack: Stack::new(()), + diagnostics: Diagnostics::default(), + reachable: HashSet::new(), + stmts: Vector::new(), + } + } +} + +impl Context { + pub fn new() -> Self { + Self::default() + } +} diff --git a/arc-lang/crates/compiler/passes/hir-reachable/src/lib.rs b/arc-lang/crates/compiler/passes/hir-reachable/src/lib.rs new file mode 100644 index 000000000..ec887ce69 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-reachable/src/lib.rs @@ -0,0 +1,262 @@ +//! HIR -> Rust: +//! * Replace rows with structs +#![allow(unused)] +pub mod context; + +use std::io::Read; + +use builtins::time_source::TimeSource; +use context::ExprDecl; +use context::TypeDecl; +use diagnostics::Error; +use hir::*; +use im_rc::ordmap; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use utils::OptionUtils; +use utils::VectorUtils; +use value::dynamic::Dataflow; +use value::dynamic::Sink; +use value::dynamic::Stream; +use value::dynamic::StreamKind::DApply; +use value::dynamic::StreamKind::DFilter; +use value::dynamic::StreamKind::DFlatMap; +use value::dynamic::StreamKind::DFlatten; +use value::dynamic::StreamKind::DKeyby; +use value::dynamic::StreamKind::DMap; +use value::dynamic::StreamKind::DMerge; +use value::dynamic::StreamKind::DScan; +use value::dynamic::StreamKind::DSource; +use value::dynamic::StreamKind::DUnkey; +use value::dynamic::StreamKind::DWindow; + +use crate::context::Context; + +pub fn process(ctx: &mut Context, d: Dataflow, ss: Vector) -> Vector { + ss.into_iter().for_each(|s| visit_top_stmt(ctx, s)); + for stream in d.streams { + visit_stream(ctx, stream); + } + for x in d.sinks { + visit_sink(ctx, x); + } + std::mem::take(&mut ctx.stmts) +} + +fn visit_sink(ctx: &mut Context, sink: Sink) { + let (x, w, e) = sink.0.as_ref(); +} + +fn visit_stream(ctx: &mut Context, stream: Stream) { + match stream.kind.as_ref().clone() { + DSource(_, _, a) => match a { + TimeSource::Ingestion { watermark_interval } => {} + TimeSource::Event { + extractor, + watermark_interval, + slack, + } => { + reach_func(ctx, extractor.0); + } + }, + DMap(_, f) => { + reach_func(ctx, f.0); + } + DFilter(_, f) => { + reach_func(ctx, f.0); + } + DFlatten(_) => {} + DFlatMap(_, f) => { + reach_func(ctx, f.0); + } + DScan(_, f) => { + reach_func(ctx, f.0); + } + DKeyby(_, f) => { + reach_func(ctx, f.0); + } + DUnkey(_) => {} + DApply(_, f) => { + reach_func(ctx, f.0); + } + DWindow(a0, a1, a2) => { + todo!() + } + DMerge(_) => {} + } +} + +fn visit_top_stmt(ctx: &mut Context, s: Stmt) { + let info = s.info; + match s.kind { + SDef(m, x, _, ps, t, b) => { + ctx.stack + .bind_expr_decl(x, ExprDecl::Def(info, m, ps, t, b)); + } + SBif(m, x, _, ts, t) => { + ctx.stack.bind_expr_decl(x, ExprDecl::Bif(info, m, ts, t)); + } + SEnum(m, x, _, xts) => { + ctx.stack.bind_type_decl(x, TypeDecl::Enum(info, m, xts)); + } + SBit(m, x, _) => { + ctx.stack.bind_type_decl(x, TypeDecl::Bit(info, m)); + } + SVal(..) | SExpr(..) => { + ctx.diagnostics.push_error(Error::UncompileableCode { + info, + msg: "Top level statements are not allowed", + }); + } + SRecDef(..) => todo!(), + SNoop => {} + } +} + +fn visit_type(ctx: &mut Context, t: Type) { + match t.kind() { + TFun(ts, t) => { + ts.into_iter().for_each(|t| visit_type(ctx, t)); + visit_type(ctx, t); + } + TRecord(t) => { + visit_type(ctx, t); + } + TArray(t, _) => { + visit_type(ctx, t); + } + TNominal(x, _) => match ctx.stack.find_type_decl(&x) { + Some(TypeDecl::Bit(info, m)) => { + if !ctx.reachable.contains(&x) { + ctx.reachable.insert(x.clone()); + ctx.stmts.push_back(SBit(m, x, vector![]).with(info)); + } + } + Some(TypeDecl::Enum(info, m, xts)) => { + if !ctx.reachable.contains(&x) { + ctx.reachable.insert(x.clone()); + xts.clone() + .into_iter() + .for_each(|(x, t)| visit_type(ctx, t)); + ctx.stmts.push_back(SEnum(m, x, vector![], xts).with(info)); + } + } + None => unreachable!("Type should be declared by now {:?}", x), + }, + TRowEmpty => {} + TRowExtend((x, t), r) => { + visit_type(ctx, t); + visit_type(ctx, r); + } + TAlias(_, _, t) => visit_type(ctx, t), + TVar(..) | TGeneric(..) | TRecordConcat(..) | TTuple(..) | TArrayConcat(..) => { + todo!() + } + TUnit => {} + TNever => {} + TError => {} + } +} + +fn visit_pattern(ctx: &mut Context, p: Pattern) { + let t = visit_type(ctx, p.t); +} + +fn visit_expr_stmt(ctx: &mut Context, s: Stmt) { + let e = match s.kind { + SVal(p, e) => { + visit_pattern(ctx, p); + e + } + SExpr(e) => e, + x => unreachable!("{:?}", x), + }; + match e.kind() { + EConst(_) => {} + EFunCall(..) => {} + EFunCallDirect(x, ts, es) => reach_func(ctx, x), + EFunReturn(_) => {} + ELoopBreak(_) => {} + EIfElse(e, b0, b1) => { + visit_block(ctx, b0); + visit_block(ctx, b1); + } + ERecord(_) => {} + ERecordConcat(_, _) => {} + ERecordAccess(_, _) => {} + EDef(x, _) => reach_func(ctx, x), + EVariant(_, _, _, _) => {} + EVariantAccess(_, _, _, _) => {} + EVariantCheck(_, _, _, _) => {} + EArray(_) => todo!(), + EArrayConcat(_, _) => todo!(), + ELoop(_) + | ELoopContinue + | EArrayAccess(_, _) + | EFun(_, _, _) + | EMatch(_, _) + | EMut(_, _) + | EVal(_) + | EVar(_) + | EDo(_) + | ENoop(_) + | ETuple(_) + | ETupleAccess(_, _) + | EFor(_, _, _) + | EWhile(_, _) => { + unreachable!("{:?}", e) + } + EError => unreachable!(), + } +} + +fn visit_block(ctx: &mut Context, b: Block) { + b.ss.into_iter().for_each(|s| visit_expr_stmt(ctx, s)); +} + +fn reach_func(ctx: &mut Context, x: Name) { + match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Def(info, m, ps, t, b)) => { + if !ctx.reachable.contains(&x) { + ctx.reachable.insert(x.clone()); + ps.clone().into_iter().for_each(|p| visit_pattern(ctx, p)); + visit_type(ctx, t.clone()); + visit_block(ctx, b.clone()); + ctx.stmts + .push_back(SDef(m, x, vector![], ps, t, b).with(info)); + } + } + Some(ExprDecl::Bif(info, m, ts, t)) => { + if !ctx.reachable.contains(&x) { + ctx.reachable.insert(x.clone()); + ts.clone().into_iter().for_each(|t| visit_type(ctx, t)); + visit_type(ctx, t.clone()); + ctx.stmts.push_back(SBif(m, x, vector![], ts, t).with(info)); + } + } + y => unreachable!("{:?} {:?}", x, y), + } +} + +fn reach_type(ctx: &mut Context, x: Name) { + match ctx.stack.find_type_decl(&x) { + Some(TypeDecl::Bit(info, m)) => { + if !ctx.reachable.contains(&x) { + ctx.reachable.insert(x.clone()); + ctx.stmts.push_back(SBit(m, x, vector![]).with(info)); + } + } + Some(TypeDecl::Enum(info, m, xts)) => { + if !ctx.reachable.contains(&x) { + ctx.reachable.insert(x.clone()); + xts.clone() + .into_iter() + .for_each(|(_, t)| visit_type(ctx, t)); + ctx.stmts.push_back(SEnum(m, x, vector![], xts).with(info)); + } + } + y => unreachable!("{:?} {:?}", x, y), + } +} diff --git a/arc-lang/crates/compiler/passes/hir-to-flink/Cargo.toml b/arc-lang/crates/compiler/passes/hir-to-flink/Cargo.toml new file mode 100644 index 000000000..4295cdbd2 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-to-flink/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "hir-to-flink" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/arc-lang/crates/compiler/passes/hir-to-flink/src/lib.rs b/arc-lang/crates/compiler/passes/hir-to-flink/src/lib.rs new file mode 100644 index 000000000..7d12d9af8 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-to-flink/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: usize, right: usize) -> usize { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/arc-lang/crates/compiler/passes/hir-to-mlir/Cargo.toml b/arc-lang/crates/compiler/passes/hir-to-mlir/Cargo.toml new file mode 100644 index 000000000..1ec383118 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-to-mlir/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "hir-to-mlir" +version.workspace = true +edition.workspace = true + +[dependencies] +codegen.workspace = true +hir.workspace = true +mlir.workspace = true +parser.workspace = true +utils.workspace = true +info.workspace = true +diagnostics.workspace = true +im-rc.workspace = true +regex.workspace = true +lazy_static.workspace = true +stack.workspace = true +name-gen.workspace = true +value.workspace = true diff --git a/arc-lang/crates/compiler/passes/hir-to-mlir/src/context.rs b/arc-lang/crates/compiler/passes/hir-to-mlir/src/context.rs new file mode 100644 index 000000000..cfb5ed2c3 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-to-mlir/src/context.rs @@ -0,0 +1,65 @@ +use diagnostics::Diagnostics; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use mlir::*; +use name_gen::NameGen; +use stack::Stack; +use std::rc::Rc; + +#[derive(Clone, Debug)] +pub struct Context { + pub(crate) next_expr_name: NameGen, + pub(crate) stack: Stack, + pub diagnostics: Diagnostics, + pub(crate) items: Vector, +} + +#[derive(Clone, Debug)] +pub(crate) enum ScopeKind { + Top, + Block, + While, + Def, +} + +#[derive(Clone, Debug)] +pub(crate) enum ExprDecl { + Def, + Bif(Name, Type), + Var(Type), + Variant(Info, Name), +} + +#[derive(Clone, Debug)] +pub(crate) enum TypeDecl { + Enum(Vector<(Name, Type)>), + Native(Name), + Adt(Name), +} + +impl Default for Context { + fn default() -> Self { + Self { + next_expr_name: NameGen::new("x"), + stack: Stack::new(ScopeKind::Top), + diagnostics: Diagnostics::default(), + items: vector![], + } + } +} + +impl Context { + pub fn new() -> Self { + Self::default() + } + + pub(crate) fn fresh_expr_name(&mut self) -> Name { + self.next_expr_name.fresh() + } + + pub(crate) fn add_item(&mut self, item: Item) { + self.items.push_back(item); + } +} diff --git a/arc-lang/crates/compiler/passes/hir-to-mlir/src/lib.rs b/arc-lang/crates/compiler/passes/hir-to-mlir/src/lib.rs new file mode 100644 index 000000000..fc942f035 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-to-mlir/src/lib.rs @@ -0,0 +1,329 @@ +//! HIR -> MLIR: +//! * Patterns are flattened (pattern compilation) +//! * Functions are flattened (lambda lifting) +//! * Expressions are flattened (ANF) +#![allow(unused)] + +pub mod context; + +use std::io::Read; + +use context::ExprDecl; +use diagnostics::Error; +use im_rc::ordmap; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use mlir::*; +use regex::Matches; +use regex::Regex; +use utils::OptionUtils; +use utils::VectorUtils; +use value::dynamic::Dataflow; + +use crate::context::Context; +use crate::context::ScopeKind; +use crate::context::TypeDecl; + +pub fn process(ctx: &mut Context, c: Dataflow, hir: Vector) -> Vector { + hir.into_iter().for_each(|s| lower_top_stmt(ctx, s)); + std::mem::take(&mut ctx.items) +} + +pub fn process_eager(ctx: &mut Context, hir: Vector) -> Vector { + hir.into_iter().for_each(|s| lower_top_stmt(ctx, s)); + std::mem::take(&mut ctx.items) +} + +fn lower_const(ctx: &mut Context, c: hir::Const) -> Const { + match c { + hir::CInt(c) => Const::CInt(c), + hir::CFloat(c) => Const::CFloat(c), + hir::CBool(c) => Const::CBool(c), + hir::CString(c) => Const::CString(c), + hir::CUnit => Const::CUnit, + hir::CChar(c) => Const::CChar(c), + } +} + +fn lower_meta(ctx: &mut Context, m: hir::Meta) -> Meta { + m.into_iter() + .map(|(x, c)| (x, c.map(|c| lower_const(ctx, c)))) + .collect() +} + +fn lower_top_stmt(ctx: &mut Context, s: hir::Stmt) { + let info = s.info; + match s.kind { + hir::SDef(m, x, _, ps, t, b) => { + let m = lower_meta(ctx, m); + ctx.stack.bind_expr_decl(x.clone(), ExprDecl::Def); + ctx.stack.push_scope(ScopeKind::Def); + let vs = ps.mapm(ctx, lower_pattern); + let b = lower_block(ctx, b); + let t = lower_type(ctx, t, info); + ctx.stack.pop_scope(); + ctx.items.push_back(IDef(x, vs, t, b).with(m)); + } + hir::SBif(m, x, _, ts, t) => { + let m = lower_meta(ctx, m); + if m.get("staged").is_some() { + return; + } + let t = lower_type(ctx, t, info); + let vs = ts + .into_iter() + .enumerate() + .map(|(i, t)| { + let x = format!("__{}", i); + let t = lower_type(ctx, t, info); + VName(x).with(t) + }) + .collect(); + if let Some(Some(CString(x1))) = m.get("mlir") { + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Bif(x1.clone(), t.clone())); + } else if let Some(Some(CString(x1))) = m.get("rust") { + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Bif(x1.clone(), t.clone())); + ctx.items.push_back(IExternDef(x1.clone(), vs, t).with(m)); + } else { + ctx.diagnostics.push_error(Error::UncompileableCode { + info, + msg: "Expected either `mlir` or `rust` attribute", + }); + } + } + hir::SEnum(m, x, _, xts) => { + let xts = xts.mapm(ctx, |ctx, (x, t)| (x, lower_type(ctx, t, info))); + ctx.stack.bind_type_decl(x, TypeDecl::Enum(xts)); + } + hir::SBit(m, x, _) => { + let m = lower_meta(ctx, m); + if m.get("staged").is_some() { + return; + } + if let Some(Some(CString(x1))) = m.get("mlir") { + ctx.stack.bind_type_decl(x, TypeDecl::Native(x1.clone())); + } else if let Some(Some(CString(x1))) = m.get("rust") { + ctx.stack.bind_type_decl(x, TypeDecl::Adt(x1.clone())); + } else { + ctx.diagnostics.push_error(Error::UncompileableCode { + info, + msg: r#"Type must be tagged with "mlir" or "rust""#, + }); + } + } + hir::SVal(..) | hir::SExpr(..) => { + ctx.diagnostics.push_error(Error::UncompileableCode { + info, + msg: "Top level statements are not allowed", + }); + } + hir::SRecDef(..) => todo!(), + hir::SNoop => {} + } +} + +fn lower_row(ctx: &mut Context, t: hir::Type, info: Info, xts: &mut Vector<(Name, Type)>) { + match t.kind.as_ref().clone() { + hir::TRowEmpty => {} + hir::TRowExtend((x, t), r) => { + let t = lower_type(ctx, t, info); + xts.push_back((x, t)); + lower_row(ctx, r, info, xts); + } + _ => unreachable!(), + } +} + +fn lower_type(ctx: &mut Context, t: hir::Type, info: Info) -> Type { + match t.kind() { + hir::TFun(ts, t) => { + let ts = ts.mapm(ctx, |ctx, t| lower_type(ctx, t, info)); + let t = lower_type(ctx, t, info); + TFun(ts, t).into() + } + hir::TRecord(t) => { + let mut xts = Vector::new(); + lower_row(ctx, t, info, &mut xts); + xts.sort_by(|(x0, _), (x1, _)| x0.cmp(x1)); + TRecord(xts).into() + } + hir::TArray(_, _) => todo!(), + hir::TNominal(x, ts) => match ctx.stack.find_type_decl(&x) { + Some(TypeDecl::Native(x1)) => { + let ts = ts.mapm(ctx, |ctx, t| lower_type(ctx, t, info)); + TNative(x1, ts).into() + } + Some(TypeDecl::Adt(x1)) => { + let ts = ts.mapm(ctx, |ctx, t| lower_type(ctx, t, info)); + TAdt(x1, ts).into() + } + Some(TypeDecl::Enum(xts)) => TEnum(xts).into(), + None => unreachable!("Type should be declared by now {:?}", x), + }, + hir::TAlias(_, _, t) => lower_type(ctx, t, info), + hir::TVar(..) + | hir::TGeneric(..) + | hir::TRowEmpty + | hir::TRowExtend(..) + | hir::TRecordConcat(..) + | hir::TTuple(..) + | hir::TArrayConcat(..) => { + ctx.diagnostics.push_error(Error::UncompileableCode { + info, + msg: "Type should be lowered by now", + }); + TError.into() + } + hir::TUnit => TRecord(vector![]).into(), + hir::TNever => TEnum(vector![]).into(), + hir::TError => TError.into(), + } +} + +fn lower_pattern(ctx: &mut Context, p: hir::Pattern) -> Val { + let t = lower_type(ctx, p.t, p.info); + if let hir::PVal(x) = p.kind.as_ref().clone() { + VName(x).with(t) + } else { + ctx.diagnostics.push_error(Error::UncompileableCode { + info: p.info, + msg: "Pattern not compiled", + }); + VError.with(t) + } +} + +fn lower_expr_val(ctx: &mut Context, e: hir::Expr) -> Val { + let t = lower_type(ctx, e.t, e.info); + if let hir::ExprKind::EVal(x) = e.kind.as_ref().clone() { + VName(x).with(t) + } else { + ctx.diagnostics.push_error(Error::UncompileableCode { + info: e.info, + msg: "Code not in ANF", + }); + VError.with(t) + } +} + +fn lower_expr_stmt(ctx: &mut Context, s: hir::Stmt) -> Stmt { + let (v, e) = match s.kind { + hir::SVal(p, e) => { + let v = lower_pattern(ctx, p); + (vector![v], e) + } + hir::SExpr(e) => (vector![], e), + e => unreachable!("{:?}", e), + }; + match e.kind() { + hir::EConst(c) => { + let c = lower_const(ctx, c); + SConst(c).with(v) + } + hir::EFunCall(e, es) => { + let v1 = lower_expr_val(ctx, e); + let vs = es.mapm(ctx, lower_expr_val); + SFunCallIndirect(v1, vs).with(v) + } + hir::EFunCallDirect(x, ts, es) => match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Bif(x1, _)) => { + let es = es.mapm(ctx, lower_expr_val); + SFunCallDirect(x1, es).with(v) + } + Some(ExprDecl::Def) => { + let es = es.mapm(ctx, lower_expr_val); + SFunCallDirect(x, es).with(v) + } + y => unreachable!("{:?} {:?}", x, y), + }, + hir::EFunReturn(e) => { + let v1 = lower_expr_val(ctx, e); + SFunReturn(v1).with(v) + } + hir::ELoopBreak(e) => { + let v1 = lower_expr_val(ctx, e); + SWhileBreak(vector![v1]).with(v) + } + hir::EIfElse(e, b0, b1) => { + let v1 = lower_expr_val(ctx, e); + let b0 = lower_block(ctx, b0); + let b1 = lower_block(ctx, b1); + SIfElse(v1, b0, b1).with(v) + } + hir::ERecord(xes) => { + let xes = xes.mapm(ctx, |ctx, (x, e)| { + let v = lower_expr_val(ctx, e); + (x, v) + }); + SRecord(xes).with(v) + } + hir::ERecordConcat(_, _) => todo!(), + hir::ERecordAccess(e, x) => { + let v1 = lower_expr_val(ctx, e); + SRecordAccess(v1, x).with(v) + } + hir::EDef(x, ts) => match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Bif(x1, _)) => { + let ts = ts.mapm(ctx, |ctx, t| lower_type(ctx, t, s.info)); + SFun(x1).with(v) + } + Some(ExprDecl::Def) => { + let ts = ts.mapm(ctx, |ctx, t| lower_type(ctx, t, s.info)); + SFun(x).with(v) + } + _ => unreachable!(), + }, + hir::EVariant(_, _, x, e) => { + let v1 = lower_expr_val(ctx, e); + SVariant(x, v1).with(v) + } + hir::EVariantAccess(_, _, x, e) => { + let v1 = lower_expr_val(ctx, e); + SVariantAccess(x, v1).with(v) + } + hir::EVariantCheck(_, _, x, e) => { + let v1 = lower_expr_val(ctx, e); + SVariantCheck(x, v1).with(v) + } + hir::EArray(_) => todo!(), + hir::EArrayConcat(_, _) => todo!(), + hir::ELoop(_) + | hir::ELoopContinue + | hir::EArrayAccess(_, _) + | hir::EFun(_, _, _) + | hir::EMatch(_, _) + | hir::EMut(_, _) + | hir::EVal(_) + | hir::EVar(_) + | hir::EDo(_) + | hir::ENoop(_) + | hir::ETuple(_) + | hir::ETupleAccess(_, _) + | hir::EFor(_, _, _) + | hir::EWhile(_, _) => { + ctx.diagnostics.push_error(Error::UncompileableCode { + info: e.info, + msg: "Complex expression", + }); + SError.with(v) + } + hir::EError => SError.with(v), + } +} + +fn lower_block(ctx: &mut Context, b: hir::Block) -> Block { + ctx.stack.push_scope(ScopeKind::Block); + let mut ss = b.ss.mapm(ctx, lower_expr_stmt); + let v = lower_expr_val(ctx, b.e); + ctx.stack.pop_scope(); + match ctx.stack.iter().next().unwrap().kind { + ScopeKind::Def => ss.push_back(SFunReturn(v).with([])), + ScopeKind::While => ss.push_back(SWhileYield(vector![v]).with([])), + _ => ss.push_back(SBlockResult(v).with([])), + } + Block::new(ss) +} diff --git a/arc-lang/crates/compiler/passes/hir-to-rust/Cargo.toml b/arc-lang/crates/compiler/passes/hir-to-rust/Cargo.toml new file mode 100644 index 000000000..404006411 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-to-rust/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "hir-to-rust" +version.workspace = true +edition.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +hir.workspace = true +rust.workspace = true +diagnostics.workspace = true +im-rc.workspace = true +info.workspace = true +name-gen.workspace = true +stack.workspace = true +utils.workspace = true diff --git a/arc-lang/crates/compiler/passes/hir-to-rust/src/context.rs b/arc-lang/crates/compiler/passes/hir-to-rust/src/context.rs new file mode 100644 index 000000000..7e292d9cd --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-to-rust/src/context.rs @@ -0,0 +1,67 @@ +use diagnostics::Diagnostics; +use im_rc::vector; +use im_rc::HashMap; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use name_gen::NameGen; +use rust::*; +use stack::Stack; +use std::rc::Rc; + +#[derive(Clone, Debug)] +pub struct Context { + pub(crate) next_struct_name: NameGen, + pub(crate) stack: Stack, + pub diagnostics: Diagnostics, + pub(crate) items: Vector, + pub(crate) structs: HashMap, Name>, +} + +#[derive(Clone, Debug)] +pub(crate) enum ScopeKind { + Top, + Block, + While, + Def, +} + +#[derive(Clone, Debug)] +pub(crate) enum ExprDecl { + Def, + Bif(Name, Type), + Var(Type), + Variant(Info, Name), +} + +#[derive(Clone, Debug)] +pub(crate) enum TypeDecl { + Enum(Vector<(Name, Type)>), + Adt(Name), +} + +impl Default for Context { + fn default() -> Self { + Self { + next_struct_name: NameGen::new("S"), + stack: Stack::new(ScopeKind::Top), + diagnostics: Diagnostics::default(), + items: vector![], + structs: HashMap::new(), + } + } +} + +impl Context { + pub fn new() -> Self { + Self::default() + } + + pub(crate) fn fresh_struct_name(&mut self) -> Name { + self.next_struct_name.fresh() + } + + pub(crate) fn add_item(&mut self, item: Item) { + self.items.push_back(item); + } +} diff --git a/arc-lang/crates/compiler/passes/hir-to-rust/src/lib.rs b/arc-lang/crates/compiler/passes/hir-to-rust/src/lib.rs new file mode 100644 index 000000000..5ab4570a4 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-to-rust/src/lib.rs @@ -0,0 +1,294 @@ +//! HIR -> Rust: +//! * Replace rows with structs +#![allow(unused)] + +pub mod context; + +use std::io::Read; + +use context::ExprDecl; +use diagnostics::Error; +use im_rc::ordmap; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use rust::*; +use utils::OptionUtils; +use utils::VectorUtils; + +use crate::context::Context; +use crate::context::ScopeKind; +use crate::context::TypeDecl; + +pub fn process(ctx: &mut Context, ss: Vector) -> Vector { + ss.into_iter().for_each(|s| lower_top_stmt(ctx, s)); + std::mem::take(&mut ctx.items) +} + +pub fn process_eager(ctx: &mut Context, ss: Vector) -> Vector { + ss.into_iter().for_each(|s| lower_top_stmt(ctx, s)); + std::mem::take(&mut ctx.items) +} + +fn lower_const(ctx: &mut Context, c: hir::Const) -> Const { + match c { + hir::CInt(c) => Const::CInt(c), + hir::CFloat(c) => Const::CFloat(c), + hir::CBool(c) => Const::CBool(c), + hir::CString(c) => Const::CString(c), + hir::CUnit => Const::CUnit, + hir::CChar(c) => Const::CChar(c), + } +} + +fn lower_meta(ctx: &mut Context, m: hir::Meta) -> Meta { + m.into_iter() + .map(|(x, c)| (x, c.map(|c| lower_const(ctx, c)))) + .collect() +} + +fn lower_top_stmt(ctx: &mut Context, s: hir::Stmt) { + let info = s.info; + match s.kind { + hir::SDef(m, x, _, ps, t, b) => { + let m = lower_meta(ctx, m); + ctx.stack.push_scope(ScopeKind::Def); + let vs = ps.mapm(ctx, lower_pattern); + let b = lower_block(ctx, b); + let t = lower_type(ctx, t, info); + ctx.stack.pop_scope(); + ctx.items.push_back(IDef(m, x, vs, t, b).with(info)); + } + hir::SBif(m, x, _, ts, t) => { + let m = lower_meta(ctx, m); + let t = lower_type(ctx, t, info); + if let Some(Some(CString(x1))) = m.get("rust") { + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Bif(x1.clone(), t.clone())); + } else { + ctx.diagnostics.push_error(Error::UncompileableCode { + info, + msg: "Expected `rust` attribute", + }); + } + } + hir::SEnum(m, x, _, xts) => { + let xts = xts.mapm(ctx, |ctx, (x, t)| (x, lower_type(ctx, t, info))); + ctx.stack.bind_type_decl(x, TypeDecl::Enum(xts)); + } + hir::SBit(m, x, _) => { + let m = lower_meta(ctx, m); + if let Some(Some(CString(x1))) = m.get("rust") { + ctx.stack.bind_type_decl(x, TypeDecl::Adt(x1.clone())); + } else { + ctx.diagnostics.push_error(Error::UncompileableCode { + info, + msg: r#"Type must be tagged with "rust""#, + }); + } + } + hir::SVal(..) | hir::SExpr(..) => { + ctx.diagnostics.push_error(Error::UncompileableCode { + info, + msg: "Top level statements are not allowed", + }); + } + hir::SRecDef(..) => todo!(), + hir::SNoop => {} + } +} + +fn lower_type(ctx: &mut Context, t: hir::Type, info: Info) -> Type { + match t.kind() { + hir::TFun(ts, t) => { + let ts = ts.mapm(ctx, |ctx, t| lower_type(ctx, t, info)); + let t = lower_type(ctx, t, info); + TFun(ts, t).into() + } + hir::TRecord(t) => { + let mut xts = hir::row_to_fields(t).map(|(x, t)| (x, lower_type(ctx, t, info))); + xts.sort_by(|(x0, _), (x1, _)| x0.cmp(x1)); + if let Some(x) = ctx.structs.get(&xts) { + TNominal(x.clone(), vector![]).into() + } else { + let x = ctx.fresh_struct_name(); + ctx.structs.insert(xts.clone(), x.clone()); + ctx.add_item(IStruct(x.clone(), xts.clone()).with(info)); + TNominal(x, vector![]).into() + } + } + hir::TArray(_, _) => todo!(), + hir::TNominal(x, ts) => match ctx.stack.find_type_decl(&x) { + Some(TypeDecl::Adt(x1)) => { + let ts = ts.mapm(ctx, |ctx, t| lower_type(ctx, t, info)); + TNominal(x1, ts).into() + } + Some(TypeDecl::Enum(xts)) => TNominal(x, vector![]).into(), + None => unreachable!("Type should be declared by now {:?}", x), + }, + hir::TAlias(_, _, t) => lower_type(ctx, t, info), + hir::TVar(..) + | hir::TGeneric(..) + | hir::TRowEmpty + | hir::TRowExtend(..) + | hir::TRecordConcat(..) + | hir::TTuple(..) + | hir::TArrayConcat(..) => { + ctx.diagnostics.push_error(Error::UncompileableCode { + info, + msg: "Type should be lowered by now", + }); + TError.into() + } + hir::TUnit => TNominal("()".to_string(), vector![]).into(), + hir::TNever => TNominal("!".to_string(), vector![]).into(), + hir::TError => TError.into(), + } +} + +fn lower_pattern(ctx: &mut Context, p: hir::Pattern) -> Val { + let t = lower_type(ctx, p.t, p.info); + if let hir::PVal(x) = p.kind.as_ref().clone() { + VName(x).with(t) + } else { + ctx.diagnostics.push_error(Error::UncompileableCode { + info: p.info, + msg: "Pattern not compiled", + }); + VError.with(t) + } +} + +fn lower_expr_val(ctx: &mut Context, e: hir::Expr) -> Val { + let t = lower_type(ctx, e.t, e.info); + if let hir::ExprKind::EVal(x) = e.kind.as_ref().clone() { + VName(x).with(t) + } else { + ctx.diagnostics.push_error(Error::UncompileableCode { + info: e.info, + msg: "Code not in ANF", + }); + VError.with(t) + } +} + +fn lower_expr_stmt(ctx: &mut Context, s: hir::Stmt) -> Stmt { + let (v, e) = match s.kind { + hir::SVal(p, e) => { + let v = lower_pattern(ctx, p); + (vector![v], e) + } + hir::SExpr(e) => (vector![], e), + x => unreachable!("{:?}", x), + }; + match e.kind() { + hir::EConst(c) => { + let c = lower_const(ctx, c); + SConst(c).with(v) + } + hir::EFunCall(e, es) => { + let v1 = lower_expr_val(ctx, e); + let vs = es.mapm(ctx, lower_expr_val); + SFunCallIndirect(v1, vs).with(v) + } + hir::EFunCallDirect(x, ts, es) => match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Bif(x1, _)) => { + let es = es.mapm(ctx, lower_expr_val); + SFunCallDirect(x1, es).with(v) + } + Some(ExprDecl::Def) => { + let es = es.mapm(ctx, lower_expr_val); + SFunCallDirect(x, es).with(v) + } + y => unreachable!("{:?} {:?}", x, y), + }, + hir::EFunReturn(e) => { + let v1 = lower_expr_val(ctx, e); + SFunReturn(v1).with(v) + } + hir::ELoopBreak(e) => { + let v1 = lower_expr_val(ctx, e); + SWhileBreak(vector![v1]).with(v) + } + hir::EIfElse(e, b0, b1) => { + let v1 = lower_expr_val(ctx, e); + let b0 = lower_block(ctx, b0); + let b1 = lower_block(ctx, b1); + SIfElse(v1, b0, b1).with(v) + } + hir::ERecord(xes) => { + let xes = xes.mapm(ctx, |ctx, (x, e)| { + let v = lower_expr_val(ctx, e); + (x, v) + }); + let xts = xes.clone().map(|(x, v)| (x, v.t)); + let x = ctx.structs.get(&xts).unwrap(); + SStruct(x.clone(), xes).with(v) + } + hir::ERecordConcat(_, _) => todo!(), + hir::ERecordAccess(e, x) => { + let v1 = lower_expr_val(ctx, e); + SStructAccess(v1, x).with(v) + } + hir::EDef(x, ts) => match ctx.stack.find_expr_decl(&x) { + Some(ExprDecl::Bif(x1, _)) => { + let ts = ts.mapm(ctx, |ctx, t| lower_type(ctx, t, s.info)); + SFun(x1).with(v) + } + Some(ExprDecl::Def) => { + let ts = ts.mapm(ctx, |ctx, t| lower_type(ctx, t, s.info)); + SFun(x).with(v) + } + y => unreachable!("{:?} {:?}", x, y), + }, + hir::EVariant(_, _, x, e) => { + let v1 = lower_expr_val(ctx, e); + SVariant(x, v1).with(v) + } + hir::EVariantAccess(_, _, x, e) => { + let v1 = lower_expr_val(ctx, e); + SVariantAccess(x, v1).with(v) + } + hir::EVariantCheck(_, _, x, e) => { + let v1 = lower_expr_val(ctx, e); + SVariantCheck(x, v1).with(v) + } + hir::EArray(_) => todo!(), + hir::EArrayConcat(_, _) => todo!(), + hir::ELoop(_) + | hir::ELoopContinue + | hir::EArrayAccess(_, _) + | hir::EFun(_, _, _) + | hir::EMatch(_, _) + | hir::EMut(_, _) + | hir::EVal(_) + | hir::EVar(_) + | hir::EDo(_) + | hir::ENoop(_) + | hir::ETuple(_) + | hir::ETupleAccess(_, _) + | hir::EFor(_, _, _) + | hir::EWhile(_, _) => { + ctx.diagnostics.push_error(Error::UncompileableCode { + info: e.info, + msg: "Complex expression", + }); + SError.with(v) + } + hir::EError => SError.with(v), + } +} + +fn lower_block(ctx: &mut Context, b: hir::Block) -> Block { + ctx.stack.push_scope(ScopeKind::Block); + let mut ss = b.ss.mapm(ctx, lower_expr_stmt); + let v = lower_expr_val(ctx, b.e); + ctx.stack.pop_scope(); + match ctx.stack.iter().next().unwrap().kind { + ScopeKind::Def => ss.push_back(SFunReturn(v).with([])), + ScopeKind::While => ss.push_back(SWhileYield(vector![v]).with([])), + _ => ss.push_back(SBlockResult(v).with([])), + } + Block::new(ss) +} diff --git a/arc-lang/crates/compiler/passes/hir-type-inference/Cargo.toml b/arc-lang/crates/compiler/passes/hir-type-inference/Cargo.toml new file mode 100644 index 000000000..f35130378 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-type-inference/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "hir-type-inference" +version.workspace = true +edition.workspace = true + +[dependencies] +im-rc.workspace = true +hir.workspace = true +write-hir.workspace = true +utils.workspace = true +codegen.workspace = true +info.workspace = true +diagnostics.workspace = true +name-gen.workspace = true +stack.workspace = true +tracing.workspace = true diff --git a/arc-lang/crates/compiler/passes/hir-type-inference/src/context.rs b/arc-lang/crates/compiler/passes/hir-type-inference/src/context.rs new file mode 100644 index 000000000..656112af9 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-type-inference/src/context.rs @@ -0,0 +1,110 @@ +use diagnostics::Diagnostics; +use hir::*; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::Vector; +use info::Info; +use name_gen::NameGen; +use stack::Stack; + +#[derive(Clone, Debug)] +pub struct Context { + pub(crate) stack: Stack, + next_type_uid: NameGen, + next_row_uid: NameGen, + subst: Vector<(Name, Type)>, + pub diagnostics: Diagnostics, +} + +#[derive(Clone, Debug)] +pub(crate) enum ScopeKind { + Top, + Block, + While, + For, + Loop(Type), + Def(Type), + Fun(Type), + Enum, + Type, + Arm, +} + +#[derive(Clone, Debug)] +pub(crate) enum ExprDecl { + Def(Info, Type, Vector, Vector), + Var(Info, Type), + Val(Info, Type), + Variant(Info, Name, usize), +} + +#[derive(Clone, Debug)] +pub(crate) enum TypeDecl { + Enum(Info, Vector, Vector<(Name, Type)>), + Bit(Info, Vector), + Generic(Info), +} + +impl Default for Context { + fn default() -> Self { + Self { + stack: Stack::new(ScopeKind::Top), + subst: vector![], + next_type_uid: NameGen::new("u"), + next_row_uid: NameGen::new("r"), + diagnostics: Diagnostics::default(), + } + } +} + +impl Context { + pub fn new() -> Context { + Self::default() + } + + pub(crate) fn return_type(&self) -> Type { + self.stack + .iter() + .find_map(|scope| match &scope.kind { + ScopeKind::Fun(ty) => Some(ty), + _ => None, + }) + .cloned() + .unwrap() + } + + pub(crate) fn break_type(&self) -> Type { + self.stack + .iter() + .find_map(|scope| match &scope.kind { + ScopeKind::Loop(ty) => Some(ty), + _ => None, + }) + .cloned() + .unwrap() + } + + pub(crate) fn fresh_t(&mut self) -> Type { + TVar(self.next_type_uid.fresh()).into() + } + + pub(crate) fn fresh_ts(&mut self, n: i32) -> Vector { + (0..n).into_iter().fold(vector![], |mut tys, _| { + let ty = self.fresh_t(); + tys.push_back(ty); + tys + }) + } + + pub(crate) fn fresh_r(&mut self) -> Type { + TVar(self.next_row_uid.fresh()).into() + } + + pub(crate) fn get_subst(&self) -> Vector<(Name, Type)> { + self.subst.clone() + } + + pub(crate) fn set_subst(&mut self, subst: Vector<(Name, Type)>) { + self.subst = subst; + } +} diff --git a/arc-lang/crates/compiler/passes/hir-type-inference/src/lib.rs b/arc-lang/crates/compiler/passes/hir-type-inference/src/lib.rs new file mode 100644 index 000000000..0f33e3e80 --- /dev/null +++ b/arc-lang/crates/compiler/passes/hir-type-inference/src/lib.rs @@ -0,0 +1,821 @@ +#![allow(unused)] +pub mod context; + +use diagnostics::Error; +use hir::*; +use im_rc::vector; +use im_rc::OrdMap; +use im_rc::OrdSet; +use im_rc::Vector; +use info::Info; +use utils::AssocVectorUtils; +use utils::OptionUtils; +use utils::VectorUtils; + +use crate::context::*; + +pub fn process(ctx: &mut Context, ss: Vector) -> Vector { + let ss = ss.mapm(ctx, infer_stmt); + let f = &|t| apply(ctx.get_subst(), t); + ss.map(|s| s.map_type(&f)) +} + +fn infer_block(ctx: &mut Context, b: Block) -> Block { + ctx.stack.push_scope(ScopeKind::Block); + let ss = b.ss.mapm(ctx, infer_stmt); + let e = infer_expr(ctx, b.e); + ctx.stack.pop_scope(); + Block::new(ss, e, b.info) +} + +fn infer_stmt(ctx: &mut Context, s: Stmt) -> Stmt { + let info = s.info; + match s.clone().kind { + SVal(p, e) => { + let p = infer_pattern(ctx, p); + let e = infer_expr(ctx, e); + unify(ctx, p.t.clone(), e.t.clone(), info); + SVal(p, e).with(info) + } + SExpr(e) => { + let e = infer_expr(ctx, e); + SExpr(e).with(info) + } + SBif(m, x, gs, ts, t) => { + ctx.stack.bind_expr_decl( + x.clone(), + ExprDecl::Def( + info, + TFun(ts.clone(), t.clone()).into(), + gs.clone(), + vector![], + ), + ); + SBif(m, x, gs, ts, t).with(info) + } + SDef(m, x, gs0, ps, t, b) => { + ctx.stack.push_scope(ScopeKind::Def(t.clone())); + + let t_fun: Type = TFun(ps.clone().map(|p| p.t), t.clone()).into(); + + ctx.stack.bind_expr_decl( + x.clone(), + ExprDecl::Def(info, t_fun.clone(), gs0.clone(), vector![]), + ); + + let ps = ps.mapm(ctx, infer_pattern); + let b = infer_block(ctx, b); + unify(ctx, t.clone(), b.e.t.clone(), info); + ctx.stack.pop_scope(); + + // Apply MGU to all types in the function + // * Consider if this could be changed so that we only apply the MGU to the function type + let f = &|t| apply(ctx.get_subst(), t); + let ps = ps.map(|p| p.map_type(f)); + let t = f(t); + let b = b.map_type(f); + let t_fun: Type = TFun(ps.clone().map(|p| p.t), t.clone()).into(); + + // Generalise all types in the function + // Create a subsitution from free type variables to generics + // * We could treat generics and free type variables the same, which would mean we + // could get rid of this step. + let ftv = ftv(t_fun.clone()).into_iter().collect::>(); + let gs1 = (0..ftv.len()) + .into_iter() + .map(|i| format!("G{i}")) + .collect::>(); + let s = ftv + .into_iter() + .zip(gs1.clone()) + .map(|(tv, g)| (tv, TGeneric(g).into())) + .collect::>(); + + let f = &|t| generalise(s.clone(), t); + let ps = ps.map(|p| p.map_type(f)); + let t = f(t); + let b = b.map_type(f); + let t_fun: Type = TFun(ps.clone().map(|p| p.t), t.clone()).into(); + + ctx.stack.bind_expr_decl( + x.clone(), + ExprDecl::Def(info, t_fun.clone(), gs0.clone(), gs1.clone()), + ); + SDef(m, x, gs0.concat(gs1), ps, t, b).with(info) + } + SEnum(m, x, gs, xts) => SEnum(m, x, gs, xts).with(info), + SBit(m, x, gs) => SBit(m, x, gs).with(info), + SNoop => SNoop.with(info), + SRecDef(_, _) => todo!(), + } +} + +fn ts_of_es(es: Vector) -> Vector { + es.into_iter().map(|e| e.t).collect() +} + +fn infer_expr(ctx: &mut Context, e: Expr) -> Expr { + let info = e.info; + let t = e.t.clone(); + match (*e.kind).clone() { + EConst(l) => { + unify(ctx, const_type(&l), t.clone(), info); + EConst(l).with(t, info) + } + EFun(ps, t1, b) => { + let ps = ps.mapm(ctx, infer_pattern); + let b = infer_block(ctx, b); + unify(ctx, t.clone(), b.e.t.clone(), info); + EFun(ps, t1, b).with(t, info) + } + EFunCall(e, es) => { + let e = infer_expr(ctx, e); + let es = es.mapm(ctx, infer_expr); + let t_fun = TFun(ts_of_es(es.clone()), t.clone()).into(); + unify(ctx, e.t.clone(), t_fun, info); + EFunCall(e, es).with(t, info) + } + EDef(x, ts0) => { + let (t1, ts) = infer_def(ctx, x.clone(), ts0); + unify(ctx, t.clone(), t1, info); + EDef(x, ts).with(t, info) + } + EFunCallDirect(x, ts0, es) => { + let (t1, ts1) = infer_def(ctx, x.clone(), ts0); + let es = es.mapm(ctx, infer_expr); + let t_fun = TFun(ts_of_es(es.clone()), t.clone()).into(); + unify(ctx, t1, t_fun, info); + EFunCallDirect(x, ts1, es).with(t, info) + } + ELoop(b) => { + let b = infer_block(ctx, b); + ELoop(b).with(t, info) + } + ELoopBreak(e) => { + let e = infer_expr(ctx, e); + unify(ctx, ctx.break_type(), e.t.clone(), info); + ELoopBreak(e).with(t, info) + } + ELoopContinue => ELoopContinue.with(t, info), + EMatch(e, arms) => { + let e = infer_expr(ctx, e); + let arms = arms.mapm(ctx, |ctx, (p, b)| { + let p = infer_pattern(ctx, p); + unify(ctx, e.t.clone(), p.t.clone(), info); + let b = infer_block(ctx, b); + unify(ctx, t.clone(), b.e.t.clone(), info); + (p, b) + }); + EMatch(e, arms).with(t, info) + } + ERecord(xes) => { + let xes = xes.mapm_assoc(ctx, infer_expr); + let xts = xes.clone().map(|(x, e)| (x, e.t)); + unify( + ctx, + t.clone(), + TRecord(fields_to_rows(xts, TRowEmpty.into())).into(), + info, + ); + ERecord(xes).with(t, info) + } + ERecordAccess(e, x) => { + let e = infer_expr(ctx, e); + let r = ctx.fresh_r(); + let t1 = TRecord(TRowExtend((x.clone(), t.clone()), r).into()).into(); + unify(ctx, t1, e.t.clone(), info); + ERecordAccess(e, x).with(t, info) + } + ERecordConcat(e0, e1) => { + let e0 = infer_expr(ctx, e0); + let e1 = infer_expr(ctx, e1); + let r0 = ctx.fresh_r(); + let r1 = ctx.fresh_r(); + unify(ctx, TRecord(r0.clone()).into(), e0.t.clone(), info); + unify(ctx, TRecord(r1.clone()).into(), e1.t.clone(), info); + unify(ctx, TRecordConcat(r0, r1).into(), t.clone(), info); + ERecordConcat(e0, e1).with(t, info) + } + EFunReturn(e) => { + let e = infer_expr(ctx, e); + unify(ctx, ctx.return_type(), e.t.clone(), info); + EFunReturn(e).with(t, info) + } + EVariant(x0, ts, x1, e) => { + let e = infer_expr(ctx, e); + let t1 = match ctx.stack.find_type_decl(&x0) { + Some(TypeDecl::Enum(_, gs, xts)) => { + let s = gs.zip(&ts); + let t = xts.find_assoc(&x1).unwrap().clone(); + apply(s, t) + } + _ => unreachable!(), + }; + unify( + ctx, + t.clone(), + TNominal(x0.clone(), ts.clone()).into(), + info, + ); + unify(ctx, t1.clone(), e.t.clone(), info); + EVariant(x0, ts, x1, e).with(t, info) + } + EIfElse(e, b0, b1) => { + let e = infer_expr(ctx, e); + unify(ctx, e.t.clone(), atom("Bool"), info); + let b0 = infer_block(ctx, b0); + let b1 = infer_block(ctx, b1); + unify(ctx, b0.e.t.clone(), b1.e.t.clone(), info); + unify(ctx, t.clone(), b0.e.t.clone(), info); + EIfElse(e, b0, b1).with(t, info) + } + ENoop(e) => { + let e = infer_expr(ctx, e); + unify(ctx, t.clone(), e.t.clone(), info); + ENoop(e).with(t, info) + } + // TODO: Array concatenation + EArray(es) => { + let t1 = ctx.fresh_t(); + let es = es.mapm(ctx, |ctx, e2| { + unify(ctx, e2.t.clone(), t1.clone(), info); + infer_expr(ctx, e2) + }); + // let e = infer_expr(ctx, e); + unify( + ctx, + t.clone(), + TArray(t1.clone(), Some(es.len() as i32)).into(), + info, + ); + EArray(es).with(t, info) + } + // TODO: Array size as a type variable + EArrayAccess(e0, e1) => { + let e0 = infer_expr(ctx, e0); + let e1 = infer_expr(ctx, e1); + let t = ctx.fresh_t(); + unify(ctx, e0.t.clone(), TArray(t.clone(), None).into(), info); + unify(ctx, e1.t.clone(), atom("i32"), info); + EArrayAccess(e0, e1).with(t, info) + } + EArrayConcat(e0, e1) => { + todo!() + // let e0 = infer_expr(ctx, e0); + // let e1 = infer_expr(ctx, e1); + // let t = ctx.fresh_t(); + // unify(ctx, e0.t.clone(), TArray(t.clone(), None).into(), info); + // unify(ctx, e1.t.clone(), TArray(t.clone(), None).into(), info); + // EArrayConcat(e0, e1).with(t, info) + } + EMut(e0, e1) => { + let e0 = infer_expr(ctx, e0); + let e1 = infer_expr(ctx, e1); + unify(ctx, e0.t.clone(), e1.t.clone(), info); + EMut(e0, e1).with(t, info) + } + EVal(x) => { + if let Some(ExprDecl::Val(info, t1)) = ctx.stack.find_expr_decl(&x) { + unify(ctx, t.clone(), t1, info); + EVal(x).with(t, info) + } else { + unreachable!() + } + } + EVar(x) => { + if let Some(ExprDecl::Var(info, t1)) = ctx.stack.find_expr_decl(&x) { + unify(ctx, t.clone(), t1, info); + EVar(x).with(t, info) + } else { + unreachable!() + } + } + EDo(b) => { + let b = infer_block(ctx, b); + unify(ctx, t.clone(), b.e.t.clone(), info); + EDo(b).with(t, info) + } + ETuple(es) => { + let es = es.mapm(ctx, infer_expr); + let ts = es.clone().map(|e| e.t.clone()); + unify(ctx, t.clone(), TTuple(ts, true).into(), info); + ETuple(es).with(t, info) + } + ETupleAccess(e, i) => { + let e = infer_expr(ctx, e); + let ts = ctx.fresh_ts(i + 1); + unify(ctx, e.t.clone(), TTuple(ts.clone(), false).into(), info); + unify(ctx, t.clone(), ts[i as usize].clone(), info); + ETupleAccess(e, i).with(t, info) + } + EFor(_, _, _) => todo!(), + EWhile(e, b) => { + let e = infer_expr(ctx, e); + let b = infer_block(ctx, b); + unify(ctx, e.t.clone(), atom("Bool"), info); + unify(ctx, b.e.t.clone(), TUnit.into(), info); + EWhile(e, b).with(t, info) + } + EError => EError.with(t, info), + EVariantAccess(..) | EVariantCheck(..) => { + unreachable!("Should not occur until after flattening") + } + } +} + +fn infer_def(ctx: &mut Context, x: Name, ts0: Vector) -> (Type, Vector) { + if let Some(ExprDecl::Def(info, t_fun, gs0, gs1)) = ctx.stack.find_expr_decl(&x) { + let s0 = gs0.zip(&ts0); + let s1 = gs1.mapm(ctx, |ctx, x| (x, ctx.fresh_t())); + let ts1 = s1.clone().map(|(_, t)| t); + let t_fun = instantiate(compose(s0, s1), t_fun); + (t_fun, ts0.concat(ts1)) + } else { + unreachable!() + } +} + +fn infer_pattern(ctx: &mut Context, p: Pattern) -> Pattern { + let t = p.t.clone(); + let info = p.info; + match p.kind() { + PIgnore => PIgnore.with(t, info), + POr(p0, p1) => { + let p0 = infer_pattern(ctx, p0); + let p1 = infer_pattern(ctx, p1); + unify(ctx, p0.t.clone(), p1.t.clone(), info); + POr(p0, p1).with(t, info) + } + PNoop(p) => { + let p = infer_pattern(ctx, p); + unify(ctx, t.clone(), p.t.clone(), info); + PNoop(p).with(t, info) + } + PRecord(xps) => { + let xps = xps.mapm(ctx, |ctx, (x, p)| (x, infer_pattern(ctx, p))); + let xts = xps.clone().map(|(x, p)| (x, p.t)); + unify( + ctx, + t.clone(), + TRecord(fields_to_rows(xts, TRowEmpty.into())).into(), + info, + ); + PRecord(xps).with(t, info) + } + PRecordConcat(p0, p1) => { + todo!() + // let p0 = infer_pattern(ctx, p0); + // let p1 = infer_pattern(ctx, p1); + // unify(ctx, p0.t.clone(), p1.t.clone(), info); + // unify(ctx, t.clone(), p0.t.clone(), info); + // PRecordConcat(p0, p1).with(t, info) + } + PArray(ps) => { + let t1 = ctx.fresh_t(); + let ps = ps.mapm(ctx, |ctx, p| { + unify(ctx, p.t.clone(), t1.clone(), info); + infer_pattern(ctx, p) + }); + // let e = infer_expr(ctx, e); + unify( + ctx, + t.clone(), + TArray(t1.clone(), Some(ps.len() as i32)).into(), + info, + ); + PArray(ps).with(t, info) + } + PArrayConcat(p0, p1) => { + todo!() + // let p0 = infer_pattern(ctx, p0); + // let p1 = infer_pattern(ctx, p1); + // unify(ctx, p0.t.clone(), p1.t.clone(), info); + // unify(ctx, t.clone(), p0.t.clone(), info); + // PArrayConcat(p0, p1).with(t, info) + } + PConst(c) => { + let t = const_type(&c); + unify(ctx, t.clone(), p.t.clone(), info); + PConst(c).with(t, info) + } + PVar(x) => { + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Var(info, t.clone())); + PVar(x).with(t, info) + } + PVal(x) => { + ctx.stack + .bind_expr_decl(x.clone(), ExprDecl::Val(info, t.clone())); + PVal(x).with(t, info) + } + PVariant(x0, ts, x1, p) => { + let p = infer_pattern(ctx, p); + let t1 = match ctx.stack.find_type_decl(&x0) { + Some(TypeDecl::Enum(_, gs, xts)) => { + let s = gs.zip(&ts); + let t = xts.find_assoc(&x1).unwrap().clone(); + apply(s, t) + } + _ => unreachable!(), + }; + unify( + ctx, + t.clone(), + TNominal(x0.clone(), ts.clone()).into(), + info, + ); + unify(ctx, t1.clone(), p.t.clone(), info); + PVariant(x0, ts, x1, p).with(t, info) + } + PTuple(ps) => { + let ps = ps.mapm(ctx, infer_pattern); + let ts = ps.clone().map(|p| p.t); + unify(ctx, t.clone(), TTuple(ts, true).into(), info); + PTuple(ps).with(t, info) + } + PError => PError.with(t, info), + } +} + +fn const_type(l: &Const) -> Type { + match l { + CInt(_) => atom("i32"), + CFloat(_) => atom("f32"), + CBool(_) => atom("bool"), + CString(_) => atom("String"), + CChar(_) => atom("char"), + CUnit => TUnit.into(), + } +} + +fn atom(arg: &str) -> Type { + TNominal(arg.to_string(), vector![]).into() +} + +fn unify(ctx: &mut Context, t0: Type, t1: Type, info: Info) { + let s0 = ctx.get_subst(); + let s1 = mgu(ctx, apply(s0.clone(), t0), apply(s0.clone(), t1), info); + let s2 = compose(s1, s0); + let s3 = simplify(s2); + ctx.set_subst(s3); +} + +fn try_unify(ctx: &mut Context, t0: Type, t1: Type, info: Info) -> bool { + let s0 = ctx.get_subst(); + todo!() + // try_mgu(ctx, apply(s0.clone(), t0), apply(s0.clone(), t1), info) +} + +// Simplify constraints +fn simplify(s: Vector<(Name, Type)>) -> Vector<(Name, Type)> { + s.map(|(x, t)| match t.kind() { + TRecordConcat(r0, r1) => { + let (xts0, t0) = deconstruct_row(r0); + let (xts1, t1) = deconstruct_row(r1); + let t = match (t0.kind(), t1.kind()) { + (TRowEmpty, TRowEmpty) => { + TRecord(xts_to_row(xts0.concat(xts1), TRowEmpty.into())).into() + } + (TRowEmpty, t) | (t, TRowEmpty) => { + TRecord(xts_to_row(xts0.concat(xts1), t.into())).into() + } + _ => t, + }; + (x, t) + } + _ => (x, t), + }) +} + +fn mgu(ctx: &mut Context, t0: Type, t1: Type, info: Info) -> Vector<(Name, Type)> { + match (t0.kind(), t1.kind()) { + (TFun(ts0, t0), TFun(ts1, t1)) if ts0.len() == ts1.len() => { + let s = mgu_fold(ctx, ts0, ts1, info); + mgu_acc(ctx, t0, t1, s, info) + } + (TVar(x0), t) | (t, TVar(x0)) => match t { + TVar(x1) if x0 == x1 => vector![], + t if ftv(t.clone().into()).contains(&x0) => { + ctx.diagnostics.push_error(Error::InfiniteType { + info, + t: write_hir::type_to_string(&t.into()), + }); + vector![] + } + t => vector![(x0, t.into())], + }, + (TRecord(r0), TRecord(r1)) => mgu(ctx, r0, r1, info), + (TRecordConcat(r0, r1), TRecordConcat(r2, r3)) => mgu_fold(ctx, [r0, r1], [r2, r3], info), + (TRecordConcat(r0, r1), r2) | (r2, TRecordConcat(r0, r1)) => { + let (xts0, t0) = deconstruct_row(r0); + let (xts1, t1) = deconstruct_row(r1); + let (xts2, t2) = deconstruct_row(r2.into()); + + let mut xts = vector![]; // Rows present in r2 but not in r0 or r1 + let mut s = vector![]; + for (x, t) in xts2.into_iter() { + match (xts0.find_assoc(&x), xts1.find_assoc(&x)) { + (Some(t3), _) | (_, Some(t3)) => s = mgu_acc(ctx, t, t3.clone(), s, info), + (None, None) => xts.push_back((x, t)), + } + } + + match (t0.kind(), t1.kind()) { + (TVar(x), _) | (_, TVar(x)) => { + let r = xts_to_row(xts, t2); + mgu_acc(ctx, TVar(x).into(), r.into(), s, info) + } + (TGeneric(x), _) | (_, TGeneric(x)) => { + let r = xts_to_row(xts, t2); + mgu_acc(ctx, TGeneric(x).into(), r.into(), s, info) + } + (TRowEmpty, TRowEmpty) => { + if xts.is_empty() { + vector![] + } else { + todo!("fail") + } + } + _ => unreachable!(), + } + } + (TNominal(x0, ts0), TNominal(x1, ts1)) if x0 == x1 => mgu_fold(ctx, ts0, ts1, info), + (TGeneric(x), TGeneric(y)) if x == y => vector![], + (TRowEmpty, TRowEmpty) => vector![], + (TRowExtend(xt0, r0), r1) | (r1, TRowExtend(xt0, r0)) => { + // println!("t0: {}", write_hir::type_to_string(&t0.into())); + // println!("t1: {}", write_hir::type_to_string(&t1.into())); + mgu_row(ctx, (xt0, r0), r1.into(), vector![], info) + } + (TAlias(info0, info1, t0), t1) | (t1, TAlias(info0, info1, t0)) => { + mgu(ctx, t0, t1.into(), info) + } + (TTuple(ts0, c0), TTuple(ts1, c1)) if !c0 || !c1 || ts0.len() == ts1.len() => { + mgu_fold(ctx, ts0, ts1, info) + } + (TArray(t0, n0), TArray(t1, n1)) if !n0.is_some() || !n1.is_some() || n0 == n1 => { + mgu(ctx, t0, t1, info) + } + (TUnit, TUnit) => vector![], + (TNever, _) | (_, TNever) => vector![], + (TError, _) | (_, TError) => vector![], + _ => { + ctx.diagnostics.push_error(Error::TypeMismatch { + lhs: write_hir::type_to_string(&t0.into()), + rhs: write_hir::type_to_string(&t1.into()), + info, + }); + vector![] + } + } +} + +fn deconstruct_row(r: Type) -> (Vector<(Name, Type)>, Type) { + fn rec(r: Type, xts: &mut Vector<(Name, Type)>) -> Type { + match r.kind() { + TRowEmpty => TRowEmpty.into(), + TVar(x) => TVar(x).into(), + TGeneric(x) => TGeneric(x).into(), + TRowExtend(xt, r) => { + xts.push_back(xt); + rec(r, xts) + } + TRecord(r) => rec(r, xts), + TRecordConcat(r0, r1) => TRecordConcat(r0, r1).into(), + _ => unreachable!("Expected a row type"), + } + } + let mut xts = vector![]; + let t = rec(r, &mut xts); + (xts, t) +} + +fn mgu_row( + ctx: &mut Context, + ((x0, t0), r0): ((Name, Type), Type), // Left-hand side of unification + r1: Type, // Right-hand side of unification + mut xts1: Vector<(Name, Type)>, // Rows that are in r1 but not in r0 + info: Info, +) -> Vector<(Name, Type)> { + // tracing::trace!("mgu_row"); + // for (x, t) in &xts1 { + // tracing::trace!(" {}: {}", x, write_hir::type_to_string(&t)); + // } + match r1.kind() { + TRowEmpty => { + // tracing::trace!("TRowEmpty"); + ctx.diagnostics + .push_error(Error::RowNotFound { info, x: x0 }); + vector![] + } + TRowExtend((x1, t1), r2) => { + if x0 == x1 { + // tracing::trace!("TRowExtend {} == {}", x0, x1); + let r3 = xts_to_row(xts1, r2); + mgu_fold(ctx, [t0, r0], [t1, r3], info) + } else { + // tracing::trace!("TRowExtend {} != {}", x0, x1); + xts1.push_back((x1, t1)); + mgu_row(ctx, ((x0, t0), r0), r2, xts1, info) + } + } + TVar(x) => { + // tracing::trace!("TVar {}", x); + let r2 = xts_to_row(xts1, ctx.fresh_r()); + let r3 = TRowExtend((x0, t0), ctx.fresh_r()).into(); + // tracing::trace!(" r0 = r2: {} = {}", write_hir::type_to_string(&r0), write_hir::type_to_string(&r2)); + // tracing::trace!(" r1 = r3: {} = {}", write_hir::type_to_string(&r1), write_hir::type_to_string(&r3)); + mgu_fold(ctx, [r0, r1], [r2, r3], info) + } + x => unreachable!("rewrite_row: not a row {:?}", x), + } +} + +fn xts_to_row(xts: impl IntoIterator, r0: Type) -> Type { + xts.into_iter() + .fold(r0, |r, (x, t)| TRowExtend((x, t), r).into()) +} + +fn row_tail(r: Type) -> Option { + match r.kind() { + TRowEmpty => None, + TRowExtend(_, r) => row_tail(r), + TVar(x) => Some(TVar(x).into()), + _ => unreachable!("row_tail: not a row"), + } +} + +fn row_get(x: Name, r: Type) -> Option { + match r.kind() { + TRowEmpty => None, + TRowExtend((x0, t), r) => { + if x == x0 { + Some(t) + } else { + row_get(x, r) + } + } + TVar(x) => Some(TVar(x).into()), + _ => unreachable!("row_contains: not a row"), + } +} + +fn ftv(t: Type) -> OrdSet { + fn ftv(acc: &mut OrdSet, t: Type) { + match t.kind() { + TFun(ts, t) => { + ts.into_iter().for_each(|t| ftv(acc, t)); + ftv(acc, t) + } + TRecord(r) => ftv(acc, r), + TRowEmpty => {} + TRowExtend((_, t), r) => { + ftv(acc, t); + ftv(acc, r); + } + TRecordConcat(t0, t1) => { + ftv(acc, t0); + ftv(acc, t1); + } + TNominal(_, ts) => ts.into_iter().for_each(|t| ftv(acc, t)), + TGeneric(_) => {} + TVar(x) => { + acc.insert(x); + } + TTuple(ts, _) => ts.into_iter().for_each(|t| ftv(acc, t)), + TAlias(_, _, t) => ftv(acc, t), + TArray(t, n) => ftv(acc, t), + TArrayConcat(t0, t1) => { + ftv(acc, t0); + ftv(acc, t1); + } + TUnit => {} + TNever => {} + TError => {} + } + } + let mut acc = OrdSet::new(); + ftv(&mut acc, t); + acc +} + +fn mgu_acc( + ctx: &mut Context, + t0: Type, + t1: Type, + s0: Vector<(Name, Type)>, + info: Info, +) -> Vector<(Name, Type)> { + let t0 = apply(s0.clone(), t0); + let t1 = apply(s0.clone(), t1); + let s1 = mgu(ctx, t0, t1, info); + compose(s1, s0) +} + +fn mgu_fold( + ctx: &mut Context, + ts0: impl IntoIterator, + ts1: impl IntoIterator, + info: Info, +) -> Vector<(Name, Type)> { + ts0.into_iter().zip(ts1).fold(vector![], |s0, (t0, t1)| { + let t0 = apply(s0.clone(), t0); + let t1 = apply(s0.clone(), t1); + let s1 = mgu(ctx, t0, t1, info); + compose(s1, s0) + }) +} + +fn compose(s0: Vector<(Name, Type)>, s1: Vector<(Name, Type)>) -> Vector<(Name, Type)> { + s1.into_iter() + .map(|(x, t)| (x, apply(s0.clone(), t))) + .chain(s0.clone()) + .collect() +} + +fn apply(s: Vector<(Name, Type)>, t: Type) -> Type { + let f = |t: Type| apply(s.clone(), t); + match t.kind() { + TFun(ts, t) => TFun(ts.map(f), f(t)), + TRecord(r) => TRecord(f(r)), + TNominal(x, ts) => TNominal(x, ts.map(f)), + TRowEmpty => TRowEmpty, + TRowExtend((x, t), r) => TRowExtend((x, f(t)), f(r)), + TRecordConcat(t0, t1) => TRecordConcat(f(t0), f(t1)), + TGeneric(x) => TGeneric(x), + TVar(x) => { + return s + .into_iter() + .find_map(|(x1, t1)| if x == *x1 { Some(t1) } else { None }) + .unwrap_or(t); + } + TTuple(ts, closed) => TTuple(ts.map(f), closed), + TArray(t, n) => TArray(f(t), n), + TArrayConcat(t0, t1) => TArrayConcat(f(t0), f(t1)), + TAlias(info0, info1, t) => TAlias(info0, info1, f(t)), + TUnit => TUnit, + TNever => TNever, + TError => TError, + } + .into() +} + +fn instantiate(s: Vector<(Name, Type)>, t: Type) -> Type { + let f = |t: Type| instantiate(s.clone(), t); + match t.kind() { + TFun(ts, t) => TFun(ts.map(f), f(t)), + TRecord(r) => TRecord(f(r)), + TNominal(x, ts) => TNominal(x, ts.map(f)), + TRowEmpty => TRowEmpty, + TRowExtend((x, t), r) => TRowExtend((x, f(t)), f(r)), + TRecordConcat(t0, t1) => TRecordConcat(f(t0), f(t1)), + TGeneric(x) => { + return s + .into_iter() + .find_map(|(x1, t1)| if x == *x1 { Some(t1) } else { None }) + .expect("Generic should be bound"); + } + TVar(x) => TVar(x), + TTuple(ts, closed) => TTuple(ts.map(f), closed), + TArray(t, n) => TArray(f(t), n), + TArrayConcat(t0, t1) => TArrayConcat(f(t0), f(t1)), + TAlias(info0, info1, t1) => TAlias(info0, info1, f(t1)), + TUnit => TUnit, + TNever => TNever, + TError => TError, + } + .into() +} + +fn generalise(s: Vector<(Name, Type)>, t: Type) -> Type { + let f = |t: Type| generalise(s.clone(), t); + match t.kind() { + TFun(ts, t) => TFun(ts.map(f), f(t)), + TRecord(r) => TRecord(f(r)), + TRowEmpty => TRowEmpty, + TRowExtend((x, t), r) => TRowExtend((x, f(t)), f(r)), + TRecordConcat(t0, t1) => TRecordConcat(f(t0), f(t1)), + TNominal(x, ts) => TNominal(x, ts.map(f)), + TGeneric(x) => TGeneric(x), + TVar(x) => { + return s + .into_iter() + .find_map(|(x1, t1)| if x == *x1 { Some(t1) } else { None }) + .unwrap_or(t); + } + TTuple(ts, closed) => TTuple(ts.map(f), closed), + TArray(t, n) => TArray(f(t), n), + TArrayConcat(t0, t1) => TArrayConcat(f(t0), f(t1)), + TAlias(info0, info1, t) => TAlias(info0, info1, f(t)), + TUnit => TUnit, + TNever => TNever, + TError => TError, + } + .into() +} + +fn fields_to_rows(xts: Vector<(Name, Type)>, r: Type) -> Type { + xts.into_iter() + .rev() + .fold(r, |r, (x, t)| TRowExtend((x, t), r).into()) +} diff --git a/arc-lang/crates/compiler/passes/lexer/Cargo.toml b/arc-lang/crates/compiler/passes/lexer/Cargo.toml new file mode 100644 index 000000000..fefafaae4 --- /dev/null +++ b/arc-lang/crates/compiler/passes/lexer/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "lexer" +version.workspace = true +edition.workspace = true + +[dependencies] +diagnostics.workspace = true +info.workspace = true +logos.workspace = true +syn.workspace = true +quote.workspace = true +regex.workspace = true diff --git a/arc-lang/crates/compiler/passes/lexer/src/lib.rs b/arc-lang/crates/compiler/passes/lexer/src/lib.rs new file mode 100644 index 000000000..127564017 --- /dev/null +++ b/arc-lang/crates/compiler/passes/lexer/src/lib.rs @@ -0,0 +1,65 @@ +#![allow(unused)] +pub mod tokens; + +use std::convert::TryInto; + +use diagnostics::Diagnostics; +use diagnostics::Error; +use info::ByteIndex; +use info::Info; +use regex::Regex; +use tokens::Token; + +pub struct Lexer<'a> { + id: usize, + inner: logos::Lexer<'a, Token>, + diagnostics: Diagnostics, + regex: Regex, +} + +impl<'a> Lexer<'a> { + pub fn new(id: usize, source: &'a str) -> Self { + Self { + id, + inner: logos::Lexer::new(source), + diagnostics: Diagnostics::default(), + regex: Regex::new("(?ms)^(?[a-z]+)(?.*?)---").unwrap(), + } + } + + pub fn diagnostics(self) -> Diagnostics { + self.diagnostics + } +} + +impl<'a> Iterator for Lexer<'a> { + type Item = (ByteIndex, Token, ByteIndex); + + fn next(&mut self) -> Option { + loop { + let token = self.inner.next()?; + let span = self.inner.span(); + let start = span.start.try_into().unwrap(); + let end = span.end.try_into().unwrap(); + match token { + Ok(Token::MinusMinusMinus) => { + let span = self.inner.span(); + let beginning = span.end; + let m = self.regex.captures(&self.inner.remainder()).unwrap(); + let lang = m["lang"].to_owned(); + let code = m["code"].to_owned(); + let len = m[0].len(); + let end = beginning + len; + self.inner.bump(len); + return Some((start, Token::Inject((lang, code)), end.try_into().unwrap())); + } + Ok(token) => return Some((start, token, end)), + Err(err) => { + let info = Info::new(self.id, start, end); + self.diagnostics + .push_error(Error::LexerInvalidToken { info, err }) + } + } + } + } +} diff --git a/arc-lang/crates/compiler/passes/lexer/src/tokens.rs b/arc-lang/crates/compiler/passes/lexer/src/tokens.rs new file mode 100644 index 000000000..e2767f445 --- /dev/null +++ b/arc-lang/crates/compiler/passes/lexer/src/tokens.rs @@ -0,0 +1,279 @@ +//! Module which generates a `LogosLexer`. + +use diagnostics::LexerError; +use std::fmt::Debug; +use std::fmt::Display; +use std::str::FromStr; + +use logos::Lexer; +use logos::Logos; + +#[rustfmt::skip] +#[derive(Logos, Debug, Clone, PartialEq)] +#[logos(error = LexerError)] +#[logos(subpattern bin = r"0[bB][0-1][_0-1]*")] +#[logos(subpattern oct = r"0[oO][0-7][_0-7]*")] +#[logos(subpattern dec = r"[0-9][_0-9]*")] +#[logos(subpattern hex = r"0[xX][0-9a-fA-F][_0-9a-fA-F]*")] +#[logos(subpattern exp = r"[eE][+-]?[0-9][_0-9]*")] +#[logos(subpattern id = r"[A-Za-z_][A-Za-z0-9_]*")] +#[logos(skip r"([ \t\f\n]+|#[^\r\n]*|#[^\n]*)")] +pub enum Token { + #[token("(")] ParenL, + #[token(")")] ParenR, + #[token("[")] BrackL, + #[token("]")] BrackR, + #[token("{")] BraceL, + #[token("}")] BraceR, + #[token("<")] AngleL, + #[token(">")] AngleR, + // Operators + #[token("!=")] Neq, + #[token("*")] Star, + #[token("+")] Plus, + #[token("++")] PlusPlus, + #[token("&")] Ampersand, + #[token(",")] Comma, + #[token("-")] Minus, + #[token(".")] Dot, + #[token("..")] DotDot, + #[token("..=")] DotDotEq, + #[token("/")] Slash, + #[token(":")] Colon, + #[token("::")] ColonColon, + #[token(";")] Semi, + #[token("<=")] Leq, + #[token("=")] Eq, + #[token("==")] EqEq, + #[token("=>")] Imply, + #[token(">=")] Geq, + #[token("@")] AtSign, + #[token("_")] Underscore, + #[token("|")] Bar, + #[token("+=")] PlusEq, + #[token("-=")] MinusEq, + #[token("*=")] StarEq, + #[token("/=")] SlashEq, + #[token("~")] Tilde, + #[token("!")] Bang, + #[token("?")] Question, + // Keywords + #[token("and")] And, + #[token("as")] As, + #[token("break")] Break, + #[token("catch")] Catch, + #[token("continue")] Continue, + #[token("def")] Def, + #[token("desc")] Desc, + #[token("do")] Do, + #[token("else")] Else, + #[token("finally")] Finally, + #[token("for")] For, + #[token("from")] From, + #[token("fun")] Fun, + #[token("group")] Group, + #[token("if")] If, + #[token("in")] In, + #[token("into")] Into, + #[token("join")] Join, + #[token("loop")] Loop, + #[token("match")] Match, + #[token("not")] Not, + #[token("on")] On, + #[token("or")] Or, + #[token("of")] Of, + #[token("return")] Return, + #[token("select")] Select, + #[token("compute")] Compute, + #[token("repeat")] Repeat, + #[token("throw")] Throw, + #[token("try")] Try, + #[token("type")] Type, + #[token("val")] Val, + #[token("var")] Var, + #[token("with")] With, + #[token("where")] Where, + #[token("while")] While, + #[token("use")] Use, + #[token("union")] Union, + #[token("over")] Over, + #[token("roll")] Roll, + #[token("order")] Order, + #[token("enum")] Enum, + #[token("---")] MinusMinusMinus, + #[logos(skip)] Inject((String, String)), + // Identifiers and Literals + #[regex(r"(?&id)", |lex| lex.slice().to_string())] Name(String), + // TODO: Parse without - + #[regex(r"-?((?&bin)|(?&dec)|(?&hex)|(?&oct))", |lex| lex.slice().parse())] Int(i32), + #[regex(r"-?((?&bin)|(?&dec)|(?&hex)|(?&oct))(?&id)", Token::parse_suffix)] IntSuffix((i32, String)), + #[regex(r"-?(((?&dec)\.(?&dec)(?&exp)?)|((?&dec)(?&exp)))", |lex| lex.slice().parse())] Float(f32), + #[regex(r"-?(((?&dec)\.(?&dec)(?&exp)?)|((?&dec)(?&exp)))(?&id)", Token::parse_suffix)] FloatSuffix((f32, String)), + + #[regex(r#"true|false"#, |lex| lex.slice().parse())] Bool(bool), + #[regex(r"'[^']'", |lex| lex.slice().get(1..lex.slice().len()-1).unwrap().parse())] Char(char), + #[regex(r#""([^"\\]|\\.)*""#, |lex| lex.slice().get(1..lex.slice().len()-1).unwrap_or("").to_string())] String(String), +} + +impl Token { + fn parse_suffix<'s, T>(lexer: &Lexer<'s, Token>) -> Result<(T, String), ::Err> + where + T: std::str::FromStr, + ::Err: Debug, + { + let slice = lexer.slice(); + let end = slice.chars().position(|char| !char.is_digit(10)).unwrap(); + let int = slice[..end].parse()?; + let suffix = slice[end..].to_string(); + Ok((int, suffix)) + } +} + +impl Display for Token { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Token::ParenL => write!(f, "("), + Token::ParenR => write!(f, ")"), + Token::BrackL => write!(f, "["), + Token::BrackR => write!(f, "]"), + Token::BraceL => write!(f, "{{"), + Token::BraceR => write!(f, "}}"), + Token::AngleL => write!(f, "<"), + Token::AngleR => write!(f, ">"), + Token::Neq => write!(f, "!="), + Token::Star => write!(f, "*"), + Token::Plus => write!(f, "+"), + Token::PlusPlus => write!(f, "++"), + Token::Comma => write!(f, ","), + Token::Minus => write!(f, "-"), + Token::Dot => write!(f, "."), + Token::DotDot => write!(f, ".."), + Token::DotDotEq => write!(f, "..="), + Token::Slash => write!(f, "/"), + Token::Colon => write!(f, ":"), + Token::ColonColon => write!(f, "::"), + Token::Semi => write!(f, ";"), + Token::Leq => write!(f, "<="), + Token::Eq => write!(f, "="), + Token::EqEq => write!(f, "=="), + Token::Imply => write!(f, "=>"), + Token::Geq => write!(f, ">="), + Token::Ampersand => write!(f, "&"), + Token::AtSign => write!(f, "@"), + Token::Underscore => write!(f, "_"), + Token::Bar => write!(f, "|"), + Token::PlusEq => write!(f, "+="), + Token::MinusEq => write!(f, "-="), + Token::StarEq => write!(f, "*="), + Token::SlashEq => write!(f, "/="), + Token::Tilde => write!(f, "~"), + Token::Bang => write!(f, "!"), + Token::Question => write!(f, "?"), + Token::And => write!(f, "and"), + Token::As => write!(f, "as"), + Token::Break => write!(f, "break"), + Token::Catch => write!(f, "catch"), + Token::Continue => write!(f, "continue"), + Token::Def => write!(f, "def"), + Token::Desc => write!(f, "desc"), + Token::Do => write!(f, "do"), + Token::Else => write!(f, "else"), + Token::Finally => write!(f, "finally"), + Token::For => write!(f, "for"), + Token::From => write!(f, "from"), + Token::Fun => write!(f, "fun"), + Token::Group => write!(f, "group"), + Token::If => write!(f, "if"), + Token::In => write!(f, "in"), + Token::Into => write!(f, "into"), + Token::Join => write!(f, "join"), + Token::Loop => write!(f, "loop"), + Token::Match => write!(f, "match"), + Token::Not => write!(f, "not"), + Token::On => write!(f, "on"), + Token::Or => write!(f, "or"), + Token::Of => write!(f, "of"), + Token::Return => write!(f, "return"), + Token::Select => write!(f, "select"), + Token::Compute => write!(f, "compute"), + Token::Repeat => write!(f, "repeat"), + Token::Throw => write!(f, "throw"), + Token::Try => write!(f, "try"), + Token::Type => write!(f, "type"), + Token::Val => write!(f, "val"), + Token::Var => write!(f, "var"), + Token::With => write!(f, "with"), + Token::Where => write!(f, "where"), + Token::While => write!(f, "while"), + Token::Use => write!(f, "use"), + Token::Union => write!(f, "union"), + Token::Name(x) => write!(f, "{x}"), + Token::Int(l) => write!(f, "{l}"), + Token::IntSuffix((l, x)) => write!(f, "{l}{x}"), + Token::Float(l) => write!(f, "{l}"), + Token::FloatSuffix((l, x)) => write!(f, "{l}{x}"), + Token::Bool(l) => write!(f, "{l}"), + Token::Char(l) => write!(f, "{l}"), + Token::String(l) => write!(f, "{l}"), + Token::Over => write!(f, "over"), + Token::Roll => write!(f, "roll"), + Token::Order => write!(f, "order"), + Token::Enum => write!(f, "enum"), + Token::MinusMinusMinus => unreachable!(), + Token::Inject((lang, code)) => write!(f, "---{lang}{code}---"), + } + } +} + +pub const KEYWORDS: &[&str] = &[ + "and", "as", "break", "catch", "continue", "def", "desc", "do", "else", "finally", "for", + "from", "fun", "group", "if", "in", "into", "join", "loop", "match", "not", "on", "or", "of", + "return", "select", "compute", "repeat", "throw", "try", "type", "val", "var", "where", "with", + "while", "use", "union", "over", "roll", "order", "enum", "rust", +]; + +pub const NUMERICS: &[&str] = &[ + "0[bB][0-1][_0-1]*", + "0[oO][0-7][_0-7]*", + "[0-9][_0-9]*", + "0[xX][0-9a-fA-F][_0-9a-fA-F]*", +]; + +pub const BUILTINS: &[&str] = &["true", "false"]; + +pub const STRINGS: &[&str] = &[r#""([^"\\]|\\.)*""#, r"'[^']'"]; + +pub const COMMENTS: &[&str] = &["#[^\r\n]*", "#[^\n]*"]; + +pub const TYPES: &[&str] = &[ + "i8", + "i16", + "i32", + "i64", + "i128", + "u8", + "u16", + "u32", + "u64", + "u128", + "f32", + "f64", + "Int", + "Float", + "bool", + "char", + "String", + "Vec", + "Option", + "Result", + "Set", + "Dict", + "Stream", + "Matrix", + "File", + "SocketAddr", + "Url", + "Path", + "Duration", + "Time", +]; diff --git a/arc-lang/crates/compiler/passes/ll-parser/Cargo.toml b/arc-lang/crates/compiler/passes/ll-parser/Cargo.toml new file mode 100644 index 000000000..2dfc991a9 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ll-parser/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "ll-parser" +version.workspace = true +edition.workspace = true + +[[bin]] +name = "ll-parser" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +ariadne = "0.2" +chumsky = { git = "https://github.com/zesterer/chumsky.git", version = "1.0.0-alpha.3", features = ["std", "spill-stack", "label", "extension", "sync", "memoization"] } +lexer = { path = "../lexer"} +logos = "0.12.1" +ast = { path = "../../irs/ast" } +im-rc = { version = "15.1.0" } diff --git a/arc-lang/crates/compiler/passes/ll-parser/src/main.rs b/arc-lang/crates/compiler/passes/ll-parser/src/main.rs new file mode 100644 index 000000000..31ded3567 --- /dev/null +++ b/arc-lang/crates/compiler/passes/ll-parser/src/main.rs @@ -0,0 +1,129 @@ +//! An example of using logos with chumsky to parse sexprs +//! Run it with the following command: +//! cargo run --example logos + +// use ariadne::{Color, Label, Report, ReportKind, Source}; +// use ast::*; +// use chumsky::{ +// input::{Stream, ValueInput}, +// prelude::*, +// }; +// use im_rc::Vector; +// use lexer::tokens::Token; +// use logos::Logos; +// +// trait Tok<'a>: ValueInput<'a, Token = Token, Span = SimpleSpan> {} +// impl<'a, I: ValueInput<'a, Token = Token, Span = SimpleSpan>> Tok<'a> for I {} +// +// trait Syn<'a, I: Tok<'a>, T>: Parser<'a, I, T, extra::Err>> {} +// impl<'a, I: Tok<'a>, T, P: Parser<'a, I, T, extra::Err>>> Syn<'a, I, T> for P {} +// +// fn parse_name<'a, I: Tok<'a>>() -> impl Syn<'a, I, Name> { +// select! { Token::Name(x) => x }.labelled("name") +// } +// +// fn parse_field<'a, I: Tok<'a>>() -> impl Syn<'a, I, (Name, Pattern)> { +// parse_name() +// .then_ignore(just(Token::Colon)) +// .then(parse_pattern()) +// } +// +// fn parse_pattern<'a, I: Tok<'a>>() -> impl Syn<'a, I, Pattern> { +// recursive(|pattern| { +// let r#const = r#const().map(PConst); +// let name = parse_name().map(PVar); +// let variant = just(Token::Case) +// .ignore_then(parse_name()) +// .then(pattern) +// .map(|(x, p)| PVariant(x, p)); +// let tuple = pattern.delimited_by(just(Token::ParenL), just(Token::ParenR)); +// let record = parse_name().then(pattern.or_not()).separated_by(just(Token::Comma)).collect::>(); +// record +// +// }) +// } +// +// fn parse_path<'a, I: Tok<'a>>() -> impl Syn<'a, I, Path> { +// let path = parse_name().separated_by(just(Token::ColonColon)).collect::>(); +// let abs = just(Token::ColonColon).ignore_then(path).map(PAbs); +// let rel = path.map(PRel); +// abs.or(rel) +// } +// +// fn parse_type<'a, I: Tok<'a>>() -> impl Syn<'a, I, Type> { +// recursive(|ty| { +// todo!() +// +// }) +// } +// +// fn parse_param<'a, I: Tok<'a>>() -> impl Syn<'a, I, (Pattern, Option)> { +// parse_pattern() +// .then(just(Token::Colon).ignore_then(parse_type())).or_not() +// } +// +// fn parse_item<'a, I: Tok<'a>>() -> impl Syn<'a, I, Item> { +// let def = just(Token::Def).then(parse_param) +// } +// +// fn lit<'a, I: Tok<'a>>() -> impl Syn<'a, I, Lit> { +// select! { +// Token::Bool(x) => LBool(x), +// Token::Float(x) => LFloat(x, None), +// Token::Int(x) => LInt(x, None), +// Token::String(x) => LString(x), +// Token::Char(x) => LChar(x), +// Token::FloatSuffix((l, x)) => LFloat(l, Some(x)), +// Token::IntSuffix((l, x)) => LInt(l, Some(x)), +// } +// } +// +// fn r#const<'a, I: Tok<'a>>() -> impl Syn<'a, I, Const> { +// select! { +// Token::Bool(x) => CBool(x), +// Token::Char(x) => CChar(x), +// Token::Float(x) => CFloat(x), +// Token::Int(x) => CInt(x), +// Token::String(x) => CString(x), +// } +// } +// +// fn expr<'a, I: Tok<'a>>() -> impl Syn<'a, I, Expr> { +// recursive(|expr| { +// let ident = select! { Token::Name(x) => x }.labelled("identifier"); +// +// todo!() +// }) +// } +// +// const SRC: &str = r" +// (- +// (* (+ 4.0 7.3) 7.0) +// (/ 5.0 3.0) +// ) +// "; + +fn main() { + // let token_iter = Token::lexer(SRC) + // .spanned() + // .map(|(tok, span)| (tok, span.into())); + // + // let token_stream = Stream::from_iter(token_iter).spanned((SRC.len()..SRC.len()).into()); + + // match expr().parse(token_stream).into_result() { + // Ok(sexpr) => println!("{:#?}", sexpr), + // Err(errs) => errs.into_iter().for_each(|e| { + // Report::build(ReportKind::Error, (), e.span().start) + // .with_code(3) + // .with_message(e.to_string()) + // .with_label( + // Label::new(e.span().into_range()) + // .with_message(e.reason().to_string()) + // .with_color(Color::Red), + // ) + // .finish() + // .eprint(Source::from(SRC)) + // .unwrap() + // }), + // } +} diff --git a/arc-lang/crates/compiler/passes/parser/Cargo.toml b/arc-lang/crates/compiler/passes/parser/Cargo.toml new file mode 100644 index 000000000..cab7a1011 --- /dev/null +++ b/arc-lang/crates/compiler/passes/parser/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "parser" +build = "build.rs" +version.workspace = true +edition.workspace = true + +[dependencies] +ast.workspace = true +lexer.workspace = true +info.workspace = true +diagnostics.workspace = true +sources.workspace = true +lalrpop-util.workspace = true +im-rc.workspace = true +syn.workspace = true + +[build-dependencies] +lalrpop.workspace = true diff --git a/arc-lang/crates/compiler/passes/parser/build.rs b/arc-lang/crates/compiler/passes/parser/build.rs new file mode 100644 index 000000000..412c39dde --- /dev/null +++ b/arc-lang/crates/compiler/passes/parser/build.rs @@ -0,0 +1,12 @@ +//! Build script related to internal compiler functions. + +extern crate lalrpop; + +/// A build-script. Here we generate the `arc-script` parser. +fn main() { + lalrpop::Configuration::new() + .emit_whitespace(false) + .use_cargo_dir_conventions() + .process() + .unwrap(); +} diff --git a/arc-lang/crates/compiler/passes/parser/src/context.rs b/arc-lang/crates/compiler/passes/parser/src/context.rs new file mode 100644 index 000000000..60c62e56a --- /dev/null +++ b/arc-lang/crates/compiler/passes/parser/src/context.rs @@ -0,0 +1,21 @@ +use diagnostics::Diagnostics; +use sources::Sources; + +#[derive(Debug, Default)] +pub struct Context { + pub diagnostics: Diagnostics, + pub sources: Sources, +} + +impl Context { + pub fn new() -> Self { + Self { + diagnostics: Diagnostics::default(), + sources: Sources::new(), + } + } + + pub fn id(&self) -> usize { + self.sources.len() + } +} diff --git a/arc-lang/crates/compiler/passes/parser/src/error.rs b/arc-lang/crates/compiler/passes/parser/src/error.rs new file mode 100644 index 000000000..a9894c340 --- /dev/null +++ b/arc-lang/crates/compiler/passes/parser/src/error.rs @@ -0,0 +1,37 @@ +//! Module for converting errors emitted by `LALRPOP` into compiler diagnostics. + +use diagnostics::Error; +use info::ByteIndex; +use info::Info; +use info::SourceId; +use lalrpop_util::ParseError; +use lexer::tokens::Token; + +/// Converts an LALRPOP `ErrorRecovery` into a `Diagnostic`. +pub(crate) fn parser_error(error: ParseError, file: SourceId) -> Error { + match error { + // User errors (lexer errors) are handled by the lexer. + ParseError::User { error: () } => unreachable!("Lexer should have caught this error"), + // Error generated by the parser when it encounters additional, unexpected tokens. + ParseError::ExtraToken { token: (l, t, r) } => Error::ParserExtraToken { + found: format!("{t:?}"), + info: Info::from_range(file, l..r), + }, + // Error generated by the parser when it encounters a token (or EOF) it did not expect. + ParseError::InvalidToken { .. } => unreachable!("Lexer should have caught this error"), + // Error generated by the parser when it encounters an EOF it did not expect. + ParseError::UnrecognizedEof { location, expected } => Error::ParserUnrecognizedEof { + info: Info::from_range(file, location..location), + expected, + }, + // Error generated by the parser when it encounters a token it did not expect. + ParseError::UnrecognizedToken { + token: (l, t, r), + expected, + } => Error::ParserUnrecognizedToken { + found: format!("{t}"), + info: Info::from_range(file, l..r), + expected, + }, + } +} diff --git a/arc-lang/crates/compiler/passes/parser/src/grammar.lalrpop b/arc-lang/crates/compiler/passes/parser/src/grammar.lalrpop new file mode 100644 index 000000000..e9e4ea353 --- /dev/null +++ b/arc-lang/crates/compiler/passes/parser/src/grammar.lalrpop @@ -0,0 +1,489 @@ +use ast::*; +use im_rc::vector; +use im_rc::Vector; +use info::ByteIndex; +use info::Spanned; +use lexer::tokens::Token; +use info::Info; +use std::rc::Rc; +use crate::error::parser_error; +use diagnostics::Diagnostics; +use info::SourceId; + +//============================================================================= +// Grammar +//============================================================================= + +grammar(id: SourceId, diagnostics: &mut Diagnostics); + +extern { + type Error = (); + type Location = ByteIndex; + + enum Token { + // Grouping + "(" => Token::ParenL, + ")" => Token::ParenR, + "[" => Token::BrackL, + "]" => Token::BrackR, + "{" => Token::BraceL, + "}" => Token::BraceR, + "<" => Token::AngleL, + ">" => Token::AngleR, + // Operators + "!=" => Token::Neq, + "*" => Token::Star, + "+" => Token::Plus, + "++" => Token::PlusPlus, + "&" => Token::Ampersand, + "," => Token::Comma, + "-" => Token::Minus, + "." => Token::Dot, + ".." => Token::DotDot, + "..=" => Token::DotDotEq, + "/" => Token::Slash, + ":" => Token::Colon, + "::" => Token::ColonColon, + ";" => Token::Semi, + "<=" => Token::Leq, + ">=" => Token::Geq, + "=" => Token::Eq, + "==" => Token::EqEq, + "=>" => Token::Imply, + "_" => Token::Underscore, + "|" => Token::Bar, + "@" => Token::AtSign, + "+=" => Token::PlusEq, + "-=" => Token::MinusEq, + "*=" => Token::StarEq, + "/=" => Token::SlashEq, + "~" => Token::Tilde, + "!" => Token::Bang, + "?" => Token::Question, + // Keywords + "and" => Token::And, + "as" => Token::As, + "break" => Token::Break, + "catch" => Token::Catch, + "enum" => Token::Enum, + "continue" => Token::Continue, + "compute" => Token::Compute, + "do" => Token::Do, + "def" => Token::Def, + "desc" => Token::Desc, + "else" => Token::Else, + "finally" => Token::Finally, + "for" => Token::For, + "from" => Token::From, + "fun" => Token::Fun, + "group" => Token::Group, + "if" => Token::If, + "in" => Token::In, + "into" => Token::Into, + "join" => Token::Join, + "loop" => Token::Loop, + "match" => Token::Match, + "not" => Token::Not, + "on" => Token::On, + "of" => Token::Of, + "or" => Token::Or, + "return" => Token::Return, + "repeat" => Token::Repeat, + "throw" => Token::Throw, + "try" => Token::Try, + "type" => Token::Type, + "val" => Token::Val, + "var" => Token::Var, + "with" => Token::With, + "where" => Token::Where, + "while" => Token::While, + "with" => Token::With, + "use" => Token::Use, + "select" => Token::Select, + "union" => Token::Union, + "over" => Token::Over, + "roll" => Token::Roll, + "order" => Token::Order, + // Identifiers and Literals + Inject => Token::Inject(<(String, String)>), + Name => Token::Name(), + Int => Token::Int(), + Float => Token::Float(), + IntSuffix => Token::IntSuffix(<(i32, String)>), + FloatSuffix => Token::FloatSuffix(<(f32, String)>), + Bool => Token::Bool(), + Char => Token::Char(), + String => Token::String(), + } +} + +Paren = "(" ")"; +Brack = "[" "]"; +Brace = "{" "}"; + +Error: () = ! => diagnostics.push_error(parser_error(<>.error, id)); + +#[inline] Epsilon: () = { () } + +#[inline] Default: X = { + Epsilon => Default::default(), + X, +} + +Fst = B; +Snd = A ; +Split = B ; +Pair = A B; + +LList: Vector = { + Epsilon => vector![], + > => { l.push_back(x); l } +} + +NonemptyLList: Vector = { + X => vector![<>], + > => { l.push_back(x); l } +} + +#[inline] SeparatedLList: Vector = { + Epsilon => vector![], + SeparatedNonemptyLList +} + +SeparatedNonemptyLList: Vector = { + X => vector![<>], + > S => { l.push_back(x); l } +} + +#[inline] SeparatedLListTrailing = > S?; + +#[inline] Seq = SeparatedLListTrailing<",", X>; +#[inline] SeqNonempty = SeparatedNonemptyLList<",", X>; +#[inline] SeqExplicit: Vector = "," > => { l.push_front(x); l }; + +Spanned: Spanned = => (x, Info::new(id, l, r)); + +pub(crate) Program = LList; + +pub(crate) Splice: Splice = { + Name => SName(<>), + Block => SBlock(<>), +} + +Attr: Attr = Spanned<(Name Snd<":", Const>?)> => Attr { x: <>.0.0, c: <>.0.1, info: <>.1 }; +Meta: Meta = Default>>>; + +DefBody: Body = { + "=" ";" => BExpr(<>), + => BBlock(<>), +} + +FunBody: Body = { + "=" => BExpr(<>), + => BBlock(<>), +} + +TypeAnnot = ":" >; + +Params = Paren>; +Param = Pattern; + +Generics = Default>>; +Generic = Name; + +Bounds = Default>>; +Bound = Name Brack>>; + +Binop: Binop = { + Op3, + Op4, + Op5, + Op6, + Op7, + Op8, +} + +Unop = Op9; + +Index = Int; // FIXME + +UseSuffix: UseSuffix = { + "*" => UGlob, + Snd<"as", Name> => UAlias(<>), +} + +#[inline] Expr: Expr = Spanned => (<>.0).with(<>.1); + +// Note: This cannot be succeeded by a brace +E0: ExprKind = { + "return" >?> => EFunReturn(<>), + "break" >?> => ELoopBreak(<>), + "continue" => ELoopContinue, + "throw" >> => EThrow(<>), + E1, +} + +// Note: This cannot be succeeded by a brace +E1: ExprKind = { + "from" > "in" >> => EQuery(<>), + "fun" >>> => EFun(<>), + E2, +} + +Op2: Option = { + "=" => None, + "+=" => Some(BAdd.with(<>)), + "-=" => Some(BSub.with(<>)), + "*=" => Some(BMul.with(<>)), + "/=" => Some(BDiv.with(<>)), +} + +E2: ExprKind = { + Expr> Op2 Expr> => EMut(<>), + E3, +} + +Op3: Binop = { + ".." => BRExc.with(<>), + "..=" => BRInc.with(<>), +} +E3: ExprKind = { + Expr> Op3 Expr> => EBinop(<>), + E4, +} + +Op4: Binop = { + "or" => BOr.with(<>), + "and" => BAnd.with(<>), +} +E4: ExprKind = { + Expr> Op4 Expr> => EBinop(<>), + E5, +} + +Op5: Binop = { + "==" => BEq.with(<>), + "!=" => BNeq.with(<>), +} +E5: ExprKind = { + Expr> Op5 Expr> => EBinop(<>), + E6, +} + +Op6: Binop = { + "<" => BLt.with(<>), + ">" => BGt.with(<>), + "<=" => BLeq.with(<>), + ">=" => BGeq.with(<>), +} +E6: ExprKind = { + Expr> Op6 Expr> => EBinop(<>), + E7, +} + +Op7: Binop = { + "+" => BAdd.with(<>), + "-" => BSub.with(<>), +} +E7: ExprKind = { + Expr> Op7 Expr> => EBinop(<>), + >> "&" >> => ERecordConcat(<>), + >> "++" >> => EArrayConcat(<>), + E8, +} + +Op8: Binop = { + "*" => BMul.with(<>), + "/" => BDiv.with(<>), +} +E8: ExprKind = { + Expr> Op8 Expr> => EBinop(<>), + E9, +} + +Op9: Unop = { + "not" => UNot.with(<>), + "-" => UNeg.with(<>), + "+" => UPos.with(<>), +} +E9: ExprKind = { + Op9 Expr> => EUnop(<>), + E10, +} + +E10: ExprKind = { + >> ":" > => ETypeAnnot(<>), + >> "?" => EThrow(<>), + E11, +} + +E11: ExprKind = { + Expr Paren>>> => EFunCall(<>), + >> "." => ETupleAccess(<>), + >> "." => ERecordAccess(<>), + >> >>> => EArrayAccess(<>), + >> "." >> => ERecordAccessMulti(<>), + >> "." >>>> => EMethodCall(<>), + Primary, +} + +// These may not be followed by a brace +// This could allow `if Foo { ... } else { ... }` +// to be parsed as `if { ... } else { ... }` +E12: ExprKind = { + Name Record => EVariantRecord(<>), + E13 +} + +ExprField: ExprField = { + Name Snd<":", Expr>>? => FName(<>), + >> "." => FExpr(<>), +} + +Dict = Brace>>>; +Set = Brace>; + +TypeField = Pair>>; + +PatternField = Pair>?>; + +E13: ExprKind = { + Paren>> => EParen(<>), + Lit => ELit(<>), + Name TypeArgsExplicit => EName(<>), + Array>> => EArray(<>), + Tuple>> => ETuple(<>), + Record => ERecord(<>), + "do" => EDo(<>), + "if" >> ?> => EIfElse(<>), + "match" >> > => EMatch(<>), + "loop" => ELoop(<>), + "while" >> => EWhile(<>), + "for" > "in" >> => EFor(<>), + "try" "catch" > ?> => ETry(<>), + Error => EError, +} + +QueryStmts = NonemptyLList; +QueryStmt: QueryStmt = { + "from" > "in" >> => QFrom(<>), + "with" > "=" >> => QWith(<>), + "where" >> => QWhere(<>), + "join" > "in" >> "on" >> => QJoinOn(<>), + "union" >> => QUnion(<>), + "group" >> > <("as" )?> => QGroup(<>), + "over" >> > <("as" )?> => QOver(<>), + "roll" >> <("of" >>)?> <("as" )?> => QRoll(<>), + "compute" >> <("of" >>)?> <("as" )?> => QCompute(<>), + "select" >> => QSelect(<>), + "into" >> => QInto(<>), + "order" >> => QOrder(<>), +} + +Order: Order = { + Epsilon => OAsc, + "desc" => ODesc, +} + +Arms = SeqNonempty; +Arm = > "=>" >>; + +Block: Block = Spanned>?>>> => Block::new(<>.0.0, <>.0.1, <>.1); + +#[inline] Stmts = LList; +Stmt: Stmt = Spanned => Stmt { kind: <>.0, info: <>.1 }; +StmtKind: StmtKind = { + "def" >>> => SDef(<>), + "enum" >> => SEnum(<>), + "type" "=" > ";" => SType(<>), + >> ";" => SExpr(<>), + "val" "=" >> ";" => SVal(<>), + "var" "=" >> ";" => SVar(<>), + Inject => SInject(<>.0, <>.1), + ";" => SNoop, +} + +Variant: Variant = { + Name => VUnit(<>), + Name Paren>> => VTuple(<>), + Name Record => VRecord(<>), +} + +Pattern

: Pattern = Spanned

=> (<>.0).with(<>.1); + +P0: PatternKind = { + > ":" > => PTypeAnnot(<>), + P1 +} + +P1: PatternKind = { + > "or" > => POr(<>), + > "&" > => PRecordConcat(<>), + > "++" > => PArrayConcat(<>), + P2 +} + +P2: PatternKind = { + Paren> => PParen(<>), + Const => PConst(<>), + Name => PName(<>), + Name Paren>> => PVariantTuple(<>), + Name Record => PVariantRecord(<>), + Tuple> => PTuple(<>), + Record => PRecord(<>), + Array> => PArray(<>), + "_" => PIgnore, + Error => PError, +} + +Type: Type = Spanned => (<>.0).with(<>.1); + +T0: TypeKind = { + "fun" >>> ":" > => TFun(<>), + T1 +} + +T1: TypeKind = { + > "&" > => TRecordConcat(<>), + > "++" > => TArrayConcat(<>), + T2 +} + +T2: TypeKind = { + Paren> => TParen(<>), + Name TypeArgs => TName(<>), + Tuple> => TTuple(<>), + Record => TRecord(<>), + Brack<(Type Snd<";", Int>?)> => TArray(<>.0, <>.1), + "(" ")" => TUnit, + "!" => TNever, + "_" => TIgnore, + Error => TError, +} + +TypeArgsExplicit = Default>>>>; +TypeArgs = Default>>>; + +Record = Brace>; +Array = Brack>; +Tuple = Paren>; + +Lit: Lit = { + Bool => LBool(<>), + Char => LChar(<>), + Int => LInt(<>, None), + IntSuffix => LInt(<>.0, Some(<>.1)), + Float => LFloat(<>, None), + FloatSuffix => LFloat(<>.0, Some(<>.1)), + "(" ")" => LUnit, + String => LString(<>), +} + +Const: Const = { + Bool => CBool(<>), + Char => CChar(<>), + Int => CInt(<>), + Float => CFloat(<>), + "(" ")" => CUnit, + String => CString(<>), +} diff --git a/arc-lang/crates/compiler/passes/parser/src/lib.rs b/arc-lang/crates/compiler/passes/parser/src/lib.rs new file mode 100644 index 000000000..b9ffa2064 --- /dev/null +++ b/arc-lang/crates/compiler/passes/parser/src/lib.rs @@ -0,0 +1,53 @@ +#![allow(macro_use_extern_crate)] + +use context::Context; +use diagnostics::Diagnostics; +use im_rc::Vector; +use info::Info; +use lexer::Lexer; + +pub(crate) mod grammar { + #![allow(warnings)] + include!(concat!(env!("OUT_DIR"), "/grammar.rs")); +} +pub mod context; +pub(crate) mod error; + +pub fn parse_program( + ctx: &mut Context, + name: impl Into, + source: impl Into, +) -> Vector { + let source = source.into(); + let id = ctx.sources.len(); + let mut lexer = Lexer::new(id, &source); + let program = match grammar::ProgramParser::new().parse(id, &mut ctx.diagnostics, &mut lexer) { + Ok(program) => program, + Err(e) => { + ctx.diagnostics + .push_error(crate::error::parser_error(e, id)); + Vector::new() + } + }; + ctx.diagnostics.append(&mut lexer.diagnostics()); + ctx.sources.add(name, source); + program +} + +pub fn parse_splice( + info: Info, + diagnostics: &mut Diagnostics, + source: &str, +) -> Option { + let id = info.id().unwrap(); + let mut lexer = Lexer::new(id, source); + let splice = match grammar::SpliceParser::new().parse(id, diagnostics, &mut lexer) { + Ok(splice) => Some(splice), + Err(e) => { + diagnostics.push_error(crate::error::parser_error(e, id)); + None + } + }; + diagnostics.append(&mut lexer.diagnostics()); + splice +} diff --git a/arc-lang/crates/compiler/src/lib.rs b/arc-lang/crates/compiler/src/lib.rs new file mode 100644 index 000000000..353aa39f0 --- /dev/null +++ b/arc-lang/crates/compiler/src/lib.rs @@ -0,0 +1,242 @@ +#![allow(unused)] + +use anyhow::Result; +use config::Config; +use diagnostics::Error; +use hir::Stmt; +use hir::Type; +use im_rc::Vector; +use logging::Logger; +use sources::Sources; +use value::Value; + +#[derive(Debug)] +pub struct Compiler { + pub config: Config, + pub(crate) ctx0: parser::context::Context, + pub(crate) ctx1: ast_to_hir::context::Context, + pub(crate) ctx2: hir_lambda_lift::context::Context, + pub(crate) ctx3: hir_type_inference::context::Context, + pub(crate) ctx4: hir_patcomp::context::Context, + pub(crate) ctx5: hir_monomorphise::context::Context, + pub(crate) ctx6: hir_interpreter::context::Context, +} + +impl Compiler { + pub fn init(config: Config) -> Self { + Self { + config, + ctx0: Default::default(), + ctx1: Default::default(), + ctx2: Default::default(), + ctx3: Default::default(), + ctx4: Default::default(), + ctx5: Default::default(), + ctx6: Default::default(), + } + } + + pub fn new(config: Config, logger: Logger) -> Self { + let mut this = Self::init(config); + this.ctx0.diagnostics.backtrace = this.config.show.backtrace; + this.ctx1.diagnostics.backtrace = this.config.show.backtrace; + this.ctx2.diagnostics.backtrace = this.config.show.backtrace; + this.ctx3.diagnostics.backtrace = this.config.show.backtrace; + this.ctx4.diagnostics.backtrace = this.config.show.backtrace; + this.ctx5.diagnostics.backtrace = this.config.show.backtrace; + this.ctx6.ctx7.diagnostics.backtrace = this.config.show.backtrace; + this.ctx6.ctx8.diagnostics.backtrace = this.config.show.backtrace; + this.ctx6.ctx9.diagnostics.backtrace = this.config.show.backtrace; + + this.ctx0.diagnostics.failfast = this.config.failfast; + this.ctx1.diagnostics.failfast = this.config.failfast; + this.ctx2.diagnostics.failfast = this.config.failfast; + this.ctx3.diagnostics.failfast = this.config.failfast; + this.ctx4.diagnostics.failfast = this.config.failfast; + this.ctx5.diagnostics.failfast = this.config.failfast; + this.ctx6.ctx7.diagnostics.failfast = this.config.failfast; + this.ctx6.ctx8.diagnostics.failfast = this.config.failfast; + this.ctx6.ctx9.diagnostics.failfast = this.config.failfast; + this + } + + pub fn sources(&mut self) -> &mut Sources { + &mut self.ctx0.sources + } + + // pub fn dataflow(&mut self) -> &mut Dataflow { + // &mut self.ctx6.dataflow + // } + + pub fn parse( + &mut self, + name: impl Into, + source: impl Into, + ) -> Vector { + let ss = parser::parse_program(&mut self.ctx0, name, source); + if self.config.show.parsed { + self.show_ast(&ss); + return Vector::new(); + } + ss + } + + pub fn ast_to_hir(&mut self, ss: Vector) -> Vector { + let ss = ast_to_hir::process(&mut self.ctx1, ss); + if self.config.show.resolved { + if !ss.is_empty() { + self.show_hir(&ss); + } + return Vector::new(); + } else { + ss + } + } + + pub fn infer(&mut self, ss: Vector) -> Vector { + let ss = hir_type_inference::process(&mut self.ctx3, ss); + if self.config.show.inferred { + if !ss.is_empty() { + self.show_hir(&ss); + } + return Vector::new(); + } else { + ss + } + } + + pub fn patcomp(&mut self, ss: Vector) -> Vector { + let ss = hir_patcomp::process(&mut self.ctx4, ss); + if self.config.show.patcomped { + if !ss.is_empty() { + self.show_hir(&ss); + } + return Vector::new(); + } else { + ss + } + } + + pub fn monomorphise(&mut self, ss: Vector) -> Vector { + let ss = hir_monomorphise::process(&mut self.ctx5, ss); + if self.config.show.monomorphised { + if !ss.is_empty() { + self.show_hir(&ss); + } + return Vector::new(); + } else { + ss + } + } + + pub fn interpret(&mut self, ss: Vector) { + hir_interpreter::process(&mut self.ctx6, ss) + } + + pub fn clear_caches(&mut self) { + self.ctx6.ctx10.clear_caches(); + } + + pub fn show_caches(&mut self) { + self.ctx6.ctx10.show_caches(); + } + + pub fn stmts(&self) -> Vector { + self.ctx5.stmts.clone() + } + + pub fn compile_prelude(&mut self) -> Result<()> { + let stmts = ast_prelude::prelude(); + let stmts = self.ast_to_hir(stmts); + let stmts = self.infer(stmts); + let stmts = self.patcomp(stmts); + let stmts = self.monomorphise(stmts); + if self.has_errors() { + self.emit_errors(); + panic!("Prelude should have compiled successfully."); + } + if self.config.show.prelude { + codegen::Context::stderr() + .debug() + .writeln(&stmts, write_hir::write)?; + } + self.interpret(stmts); + Ok(()) + } + + pub fn has_errors(&self) -> bool { + self.ctx0.diagnostics.has_errors() + || self.ctx1.diagnostics.has_errors() + || self.ctx2.diagnostics.has_errors() + || self.ctx3.diagnostics.has_errors() + || self.ctx4.diagnostics.has_errors() + || self.ctx5.diagnostics.has_errors() + || self.ctx6.ctx8.diagnostics.has_errors() + } + + pub fn emit_errors(&mut self) { + let sources = &mut self.ctx0.sources; + let opt = &self.config; + self.ctx0.diagnostics.emit_errors(sources, opt); + self.ctx1.diagnostics.emit_errors(sources, opt); + self.ctx2.diagnostics.emit_errors(sources, opt); + self.ctx3.diagnostics.emit_errors(sources, opt); + self.ctx4.diagnostics.emit_errors(sources, opt); + self.ctx5.diagnostics.emit_errors(sources, opt); + self.ctx6.ctx7.diagnostics.emit_errors(sources, opt); + self.ctx6.ctx8.diagnostics.emit_errors(sources, opt); + self.ctx6.ctx9.diagnostics.emit_errors(sources, opt); + self.ctx6.ctx10.diagnostics.emit_errors(sources, opt); + } + + pub fn clear(&mut self) { + self.ctx0 = Default::default(); + self.ctx1 = Default::default(); + self.ctx2 = Default::default(); + self.ctx3 = Default::default(); + self.ctx4 = Default::default(); + self.ctx5 = Default::default(); + self.ctx6 = Default::default(); + self.ctx6.ctx7 = Default::default(); + self.ctx6.ctx8 = Default::default(); + self.ctx6.ctx9 = Default::default(); + self.ctx6.ctx10 = Default::default(); + } + + pub fn print_value_type(&self, vt: &(Value, Type)) -> Result<(), std::io::Error> { + codegen::Context::stderr() + .colors(true) + .writeln(vt, write_value::write_value_type)?; + Ok(()) + } + + pub fn status(&self) {} + + pub fn show_ast(&self, ast: &Vector) -> Result<()> { + codegen::Context::stderr() + .with_opt(self.config.show) + .writeln(ast, write_ast::write)?; + Ok(()) + } + + pub fn show_hir(&self, hir: &Vector) -> Result<()> { + codegen::Context::stderr() + .with_opt(self.config.show) + .writeln(hir, write_hir::write)?; + Ok(()) + } + + pub fn show_mlir(&self, mlir: &Vector) -> Result<()> { + codegen::Context::stderr() + .with_opt(self.config.show) + .writeln(mlir, write_mlir::write)?; + Ok(()) + } + + pub fn show_rust(&self, rust: &Vector) -> Result<()> { + codegen::Context::stderr() + .with_opt(self.config.show) + .writeln(rust, write_rust::write)?; + Ok(()) + } +} diff --git a/arc-lang/crates/config/Cargo.toml b/arc-lang/crates/config/Cargo.toml new file mode 100644 index 000000000..b9463e4ea --- /dev/null +++ b/arc-lang/crates/config/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "config" +version.workspace = true +edition.workspace = true + +[dependencies] +clap.workspace = true diff --git a/arc-lang/crates/config/src/lib.rs b/arc-lang/crates/config/src/lib.rs new file mode 100644 index 000000000..0fcc8f2d2 --- /dev/null +++ b/arc-lang/crates/config/src/lib.rs @@ -0,0 +1,85 @@ +use clap::Parser; +use std::ffi::OsString; +use std::path::PathBuf; + +fn history() -> OsString { + std::env::temp_dir() + .join("arc-lang") + .join("history.txt") + .into_os_string() +} + +#[derive(Debug, Clone, Parser)] +pub struct Config { + /// Read source from file + pub file: Option, + /// Loads file statement-by-statement into the REPL. + #[clap(long)] + pub interactive: bool, + /// The history file to use + #[clap(long, default_value = history())] + pub history: PathBuf, + /// Clear build caches + #[clap(long)] + pub clear_caches: bool, + /// Print version + #[clap(long)] + pub version: bool, + #[clap(flatten)] + pub show: Show, + /// Fail on first error + #[clap(long)] + pub failfast: bool, +} + +#[derive(Debug, Default, Clone, Copy, Parser)] +pub struct Show { + /// Show build caches + #[clap(long = "show-caches")] + pub caches: bool, + /// Show IR after appending prelude + #[clap(long = "show-prelude")] + pub prelude: bool, + /// Show IR after parsing + #[clap(long = "show-parsed")] + pub parsed: bool, + /// Show IR after name resolution + #[clap(long = "show-resolved")] + pub resolved: bool, + /// Show IR after type inference + #[clap(long = "show-inferred")] + pub inferred: bool, + /// Show IR after pattern compilation + #[clap(long = "show-patcomped")] + pub patcomped: bool, + /// Show IR after monomorphisation + #[clap(long = "show-monomorphised")] + pub monomorphised: bool, + /// Show IR after interpretation + #[clap(long = "show-optimised")] + pub dataflow: bool, + /// Show IR after reachability analysis + #[clap(long = "show-reachable")] + pub reachable: bool, + /// Show Rust + #[clap(long = "show-mlir")] + pub mlir: bool, + /// Show MLIR + #[clap(long = "show-rust")] + pub rust: bool, + /// Show type annotations of expressions and patterns + #[clap(long = "show-types")] + pub types: bool, + /// Show warnings + #[clap(long = "show-warnings")] + pub warnings: bool, + /// Show hints + #[clap(long = "show-hints")] + pub hints: bool, + /// Show backtrace of the location in the compiler where errors are created. Used for debugging + #[clap(long = "show-backtrace")] + pub backtrace: bool, + /// Show colors + #[clap(long = "show-colors", default_value_t = true)] + pub colors: bool, +} diff --git a/arc-lang/crates/logging/Cargo.toml b/arc-lang/crates/logging/Cargo.toml new file mode 100644 index 000000000..d0dddd2ba --- /dev/null +++ b/arc-lang/crates/logging/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "logging" +version.workspace = true +edition.workspace = true +authors.workspace = true +homepage.workspace = true +repository.workspace = true +readme.workspace = true + +[dependencies] +tracing.workspace = true +tracing-subscriber.workspace = true diff --git a/arc-lang/crates/logging/src/lib.rs b/arc-lang/crates/logging/src/lib.rs new file mode 100644 index 000000000..643c11a50 --- /dev/null +++ b/arc-lang/crates/logging/src/lib.rs @@ -0,0 +1,62 @@ +use std::path::Path; +use std::str::FromStr; + +use tracing_subscriber::prelude::*; +use tracing_subscriber::reload::Handle; +use tracing_subscriber::EnvFilter; +use tracing_subscriber::Registry; + +pub struct Logger { + handle: Handle, +} + +pub const FILTER: &str = "info,librdkafka=off,rdkafka::client=off"; + +impl Logger { + pub fn file(path: &Path) -> Self { + let (layer, handle) = + tracing_subscriber::reload::Layer::new(EnvFilter::from_str(FILTER).unwrap()); + let file = std::fs::File::create(path).expect("failed to create log file"); + let fmt = tracing_subscriber::fmt::layer() + .with_file(false) + .with_line_number(false) + .with_ansi(false) + .compact() + .with_writer(file) + .with_filter(layer); + tracing_subscriber::registry().with(fmt).init(); + + Self { handle } + } + + pub fn stderr() -> Self { + let (layer, handle) = + tracing_subscriber::reload::Layer::new(EnvFilter::from_str(FILTER).unwrap()); + let fmt = tracing_subscriber::fmt::layer() + .with_file(false) + .with_line_number(false) + .compact() + .with_writer(std::io::stderr) + .with_filter(layer); + tracing_subscriber::registry().with(fmt).init(); + Self { handle } + } + + pub fn reload(&self, filter: &str) { + self.handle + .reload(EnvFilter::from_str(filter).unwrap()) + .unwrap(); + } + + pub fn enable_kafka(&self) { + self.handle + .reload(EnvFilter::from_str("info,librdkafka=on,rdkafka::client=on").unwrap()) + .unwrap(); + } + + pub fn disable_kafka(&self) { + self.handle + .reload(EnvFilter::from_str("info,librdkafka=off,rdkafka::client=off").unwrap()) + .unwrap(); + } +} diff --git a/arc-lang/crates/manager/Cargo.toml b/arc-lang/crates/manager/Cargo.toml new file mode 100644 index 000000000..a952ede1c --- /dev/null +++ b/arc-lang/crates/manager/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "daemon" +version.workspace = true +edition.workspace = true + +[dependencies] diff --git a/arc-lang/crates/manager/src/lib.rs b/arc-lang/crates/manager/src/lib.rs new file mode 100644 index 000000000..c3b5dc91a --- /dev/null +++ b/arc-lang/crates/manager/src/lib.rs @@ -0,0 +1,13 @@ +pub struct Manager { + pub pids: Vec, +} + +impl Manager { + pub fn new() -> Manager { + Manager { pids: Vec::new() } + } + + pub fn spawn(&mut self) { + + } +} diff --git a/arc-lang/crates/repl/Cargo.toml b/arc-lang/crates/repl/Cargo.toml new file mode 100644 index 000000000..22b6aa9d0 --- /dev/null +++ b/arc-lang/crates/repl/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "repl" +version.workspace = true +edition.workspace = true + +[dependencies] +compiler.workspace = true +im-rc.workspace = true +info.workspace = true +codegen.workspace = true +config.workspace = true +build.workspace = true +lexer.workspace = true +rustyline.workspace = true +colored.workspace = true +regex.workspace = true +clap.workspace = true +shlex.workspace = true +anyhow.workspace = true +colors.workspace = true + +completer.workspace = true +highlighter.workspace = true +validator.workspace = true diff --git a/arc-lang/crates/repl/completer/Cargo.toml b/arc-lang/crates/repl/completer/Cargo.toml new file mode 100644 index 000000000..31478fb73 --- /dev/null +++ b/arc-lang/crates/repl/completer/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "completer" +version = "0.1.0" +edition = "2021" + +[dependencies] +lexer.workspace = true +rustyline.workspace = true +clap.workspace = true diff --git a/arc-lang/crates/repl/completer/src/lib.rs b/arc-lang/crates/repl/completer/src/lib.rs new file mode 100644 index 000000000..76b3182b8 --- /dev/null +++ b/arc-lang/crates/repl/completer/src/lib.rs @@ -0,0 +1,48 @@ +use lexer::tokens::KEYWORDS; +use rustyline::completion::Completer; +use rustyline::completion::Pair; +use rustyline::Result; + +pub struct KeywordCompleter; + +impl KeywordCompleter { + pub fn new() -> Self { + Self + } +} + +impl Completer for KeywordCompleter { + type Candidate = Pair; + + fn complete( + &self, + line: &str, + pos: usize, + _ctx: &rustyline::Context<'_>, + ) -> Result<(usize, Vec)> { + let mut start = pos - 1; + let mut end = pos; + let chars = line.chars().collect::>(); + while start > 0 { + match chars[start] { + 'a'..='z' => start -= 1, + _ => break, + } + } + while end < line.len() { + match chars[end] { + 'a'..='z' => end += 1, + _ => break, + } + } + let matches = KEYWORDS + .into_iter() + .filter(|cmd| cmd.starts_with(&line[start..end])) + .map(|x| Pair { + display: x.to_string(), + replacement: x.to_string(), + }) + .collect(); + Ok((start, matches)) + } +} diff --git a/arc-lang/crates/repl/highlighter/Cargo.toml b/arc-lang/crates/repl/highlighter/Cargo.toml new file mode 100644 index 000000000..9d69692c2 --- /dev/null +++ b/arc-lang/crates/repl/highlighter/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "highlighter" +version.workspace = true +edition.workspace = true + +[dependencies] +rustyline.workspace = true +colors.workspace = true +colored.workspace = true +lexer.workspace = true +regex.workspace = true +clap.workspace = true diff --git a/arc-lang/crates/repl/highlighter/src/lib.rs b/arc-lang/crates/repl/highlighter/src/lib.rs new file mode 100644 index 000000000..1a0699782 --- /dev/null +++ b/arc-lang/crates/repl/highlighter/src/lib.rs @@ -0,0 +1,83 @@ +#![allow(unused)] +use std::borrow::Cow; +use std::fmt::Display; + +use colored::Colorize; +use colors::BUILTIN_COLOR; +use colors::COMMENT_COLOR; +use colors::KEYWORD_COLOR; +use colors::NUMERIC_COLOR; +use colors::STRING_COLOR; +use lexer::tokens::BUILTINS; +use lexer::tokens::KEYWORDS; +use lexer::tokens::NUMERICS; +use lexer::tokens::STRINGS; +use regex::Regex; +use rustyline::highlight::Highlighter; + +pub struct SyntaxHighlighter { + pub regex: Regex, +} + +fn join(patterns: impl IntoIterator) -> String { + patterns + .into_iter() + .map(|pattern| pattern.to_string()) + .collect::>() + .join("|") +} + +fn capture_group(name: impl Display, pattern: impl Display) -> String { + format!(r"(?P<{name}>{pattern})") +} + +fn word(pattern: impl Display) -> String { + format!(r"\b(?:{pattern})\b") +} + +fn followed_by(a: impl Display, b: impl Display) -> String { + format!(r"{a} *{b}") +} + +fn maybe(a: impl Display) -> String { + format!(r"(?:{a})?") +} + +impl SyntaxHighlighter { + pub fn new() -> Self { + let pattern = &join(&[ + capture_group("keyword", &word(join(KEYWORDS))), + capture_group("numeric", &word(join(NUMERICS))), + capture_group("string", &join(STRINGS)), + capture_group("builtin", &word(join(BUILTINS))), + capture_group("comment", r"#.*"), + ]); + Self { + regex: Regex::new(pattern).unwrap(), + } + } +} + +impl Highlighter for SyntaxHighlighter { + fn highlight<'l>(&self, line: &'l str, _pos: usize) -> Cow<'l, str> { + self.regex.replace_all(line, |caps: ®ex::Captures| { + if let Some(s) = caps.name("keyword") { + s.as_str().color(KEYWORD_COLOR).bold().to_string() + } else if let Some(s) = caps.name("numeric") { + s.as_str().color(NUMERIC_COLOR).to_string() + } else if let Some(s) = caps.name("string") { + s.as_str().color(STRING_COLOR).to_string() + } else if let Some(s) = caps.name("builtin") { + s.as_str().color(BUILTIN_COLOR).bold().to_string() + } else if let Some(s) = caps.name("comment") { + s.as_str().color(COMMENT_COLOR).to_string() + } else { + unreachable!() + } + }) + } + + fn highlight_char(&self, line: &str, _pos: usize) -> bool { + self.regex.is_match(line) + } +} diff --git a/arc-lang/crates/repl/src/context.rs b/arc-lang/crates/repl/src/context.rs new file mode 100644 index 000000000..a51c5d62e --- /dev/null +++ b/arc-lang/crates/repl/src/context.rs @@ -0,0 +1,102 @@ +use anyhow::Result; +use colored::Color; +use im_rc::Vector; +use rustyline::config::Configurer; +use rustyline::error::ReadlineError; +use rustyline::history::FileHistory; +use rustyline::history::MemHistory; +use rustyline::Cmd; +use rustyline::CompletionType; +use rustyline::EditMode; +use rustyline::Editor; +use rustyline::Helper; +use rustyline::KeyCode; +use rustyline::KeyEvent; +use rustyline::Modifiers; + +use compiler::Compiler; + +use super::helper::Repl; + +#[derive(Debug)] +pub(crate) struct Context { + pub(crate) count: usize, + pub(crate) editor: Editor, + pub(crate) compiler: Compiler, +} + +impl Drop for Context { + fn drop(&mut self) { + self.save_history(); + } +} + +impl Context { + pub(crate) fn new(compiler: Compiler) -> Result { + let mut this = Self { + count: 0, + editor: Editor::new()?, + compiler, + }; + this.editor.set_helper(Some(Repl::default())); + this.config()?; + this.color(Color::Green); + if !this.compiler.config.history.exists() { + std::fs::create_dir_all(this.compiler.config.history.parent().unwrap())?; + std::fs::File::create(&this.compiler.config.history)?; + } + this.load_history(); + Ok(this) + } + + pub(crate) fn save_history(&mut self) { + self.editor.save_history(&self.compiler.config.history).ok(); + } + + pub(crate) fn load_history(&mut self) { + self.editor.load_history(&self.compiler.config.history).ok(); + } + + pub(crate) fn color(&mut self, color: Color) { + self.editor.helper_mut().unwrap().prompt_color = color; + } + + pub(crate) fn readline_initial( + &mut self, + s: &str, + ) -> std::result::Result { + self.count += 1; + self.editor.readline_with_initial(">> ", (s, "")) + } + + pub(crate) fn readline(&mut self) -> std::result::Result { + self.count += 1; + self.editor.readline(">> ") + } + + pub(crate) fn config(&mut self) -> Result<()> { + self.editor.set_history_ignore_dups(true)?; + self.editor.set_edit_mode(EditMode::Vi); + self.editor.set_completion_type(CompletionType::List); + self.editor + .bind_sequence(KeyEvent::ctrl('j'), Cmd::NextHistory); + self.editor + .bind_sequence(KeyEvent::ctrl('k'), Cmd::PreviousHistory); + self.editor + .bind_sequence(KeyEvent::ctrl('l'), Cmd::ClearScreen); + self.editor + .bind_sequence(KeyEvent::ctrl('c'), Cmd::Interrupt); + self.editor.bind_sequence(KeyEvent::ctrl('v'), Cmd::YankPop); + self.editor.bind_sequence( + KeyEvent::ctrl('M'), + Cmd::AcceptOrInsertLine { + accept_in_the_middle: false, + }, + ); + self.editor.bind_sequence( + KeyEvent(KeyCode::Enter, Modifiers::CTRL), + Cmd::HistorySearchForward, + ); + Ok(()) + } +} diff --git a/arc-lang/crates/repl/src/helper/hinter.rs b/arc-lang/crates/repl/src/helper/hinter.rs new file mode 100644 index 000000000..12ed69e38 --- /dev/null +++ b/arc-lang/crates/repl/src/helper/hinter.rs @@ -0,0 +1,5 @@ +use rustyline::hint::Hinter; +use rustyline::Hinter; + +use super::Repl; + diff --git a/arc-lang/crates/repl/src/helper/mod.rs b/arc-lang/crates/repl/src/helper/mod.rs new file mode 100644 index 000000000..0dfdf1233 --- /dev/null +++ b/arc-lang/crates/repl/src/helper/mod.rs @@ -0,0 +1,148 @@ +use std::borrow::Cow; + +use colored::Color; +use colored::Color::Green; +use colored::Colorize; +use rustyline::completion::Completer; +use rustyline::completion::FilenameCompleter; +use rustyline::completion::Pair; +use rustyline::config::Configurer; +use rustyline::highlight::Highlighter; +use rustyline::highlight::MatchingBracketHighlighter; +use rustyline::hint::Hinter; +use rustyline::hint::HistoryHinter; +use rustyline::history::FileHistory; +use rustyline::validate::MatchingBracketValidator; +use rustyline::validate::ValidationContext; +use rustyline::validate::ValidationResult; +use rustyline::validate::ValidationResult::Incomplete; +use rustyline::validate::ValidationResult::Invalid; +use rustyline::validate::ValidationResult::Valid; +use rustyline::validate::Validator; +use rustyline::Cmd; +use rustyline::CompletionType; +use rustyline::EditMode; +use rustyline::Editor; +use rustyline::Helper; +use rustyline::KeyCode; +use rustyline::KeyEvent; +use rustyline::Modifiers; +use rustyline::Result; + +use completer::KeywordCompleter; +use highlighter::SyntaxHighlighter; +use validator::StatementValidator; + +pub(crate) struct Repl { + validator1: MatchingBracketValidator, + validator2: StatementValidator, + completer1: FilenameCompleter, + completer2: KeywordCompleter, + highlighter1: SyntaxHighlighter, + highlighter2: MatchingBracketHighlighter, + hinter: HistoryHinter, + pub(crate) prompt_color: Color, +} + +impl Helper for Repl {} + +impl Default for Repl { + fn default() -> Self { + Self { + validator1: MatchingBracketValidator::new(), + validator2: StatementValidator::new(), + completer1: FilenameCompleter::new(), + completer2: KeywordCompleter::new(), + highlighter1: SyntaxHighlighter::new(), + highlighter2: MatchingBracketHighlighter::new(), + hinter: HistoryHinter {}, + prompt_color: Green, + } + } +} + +impl Repl { + pub(crate) fn new() -> Self { + Self::default() + } +} + +impl Completer for Repl { + type Candidate = Pair; + + fn complete( + &self, + line: &str, + pos: usize, + ctx: &rustyline::Context<'_>, + ) -> Result<(usize, Vec)> { + let (start, matches) = self.completer1.complete(line, pos, ctx)?; + if !matches.is_empty() { + Ok((start, matches)) + } else { + self.completer2.complete(line, pos, ctx) + } + } +} + +impl Validator for Repl { + fn validate(&self, ctx: &mut ValidationContext) -> Result { + if let r @ (Incomplete | Invalid(_)) = self.validator1.validate(ctx)? { + return Ok(r); + } + if let r @ (Incomplete | Invalid(_)) = self.validator2.validate(ctx)? { + return Ok(r); + } + Ok(Valid(None)) + } +} + +impl Highlighter for Repl { + fn highlight<'l>(&self, line: &'l str, pos: usize) -> Cow<'l, str> { + let line = self.highlighter1.highlight(line, pos); + match line { + Cow::Borrowed(line) => self.highlighter2.highlight(line, pos), + Cow::Owned(line) => match self.highlighter2.highlight(line.as_str(), pos) { + Cow::Borrowed(line) => Cow::Owned(line.to_string()), + Cow::Owned(line) => Cow::Owned(line), + }, + } + } + + fn highlight_prompt<'b, 's: 'b, 'p: 'b>( + &'s self, + prompt: &'p str, + default: bool, + ) -> Cow<'b, str> { + if default { + Cow::Owned(prompt.color(self.prompt_color).to_string()) + } else { + Cow::Borrowed(prompt) + } + } + + fn highlight_hint<'h>(&self, hint: &'h str) -> Cow<'h, str> { + Cow::Borrowed(hint) + } + + fn highlight_candidate<'c>( + &self, + candidate: &'c str, // FIXME should be Completer::Candidate + completion: CompletionType, + ) -> Cow<'c, str> { + let _ = completion; + Cow::Borrowed(candidate) + } + + fn highlight_char(&self, line: &str, pos: usize) -> bool { + self.highlighter1.highlight_char(line, pos) || self.highlighter2.highlight_char(line, pos) + } +} + +impl Hinter for Repl { + type Hint = String; + + fn hint(&self, line: &str, pos: usize, ctx: &rustyline::Context<'_>) -> Option { + self.hinter.hint(line, pos, ctx) + } +} diff --git a/arc-lang/crates/repl/src/lib.rs b/arc-lang/crates/repl/src/lib.rs new file mode 100644 index 000000000..4d781ee31 --- /dev/null +++ b/arc-lang/crates/repl/src/lib.rs @@ -0,0 +1,81 @@ +#![allow(unused)] + +use std::io; +use std::io::LineWriter; +use std::io::Write; +use std::process::exit; + +use anyhow::Result; +use colored::Color; +use colored::Color::Blue; +use colored::Color::Green; +use colored::Color::Red; +use colored::Colorize; +use rustyline::completion::FilenameCompleter; +use rustyline::config::Configurer; +use rustyline::error::ReadlineError; +use rustyline::highlight::MatchingBracketHighlighter; +use rustyline::hint::HistoryHinter; +use rustyline::history::FileHistory; +use rustyline::validate::MatchingBracketValidator; +use rustyline::Cmd; +use rustyline::CompletionType; +use rustyline::EditMode; +use rustyline::Editor; +use rustyline::EventHandler; + +use compiler::Compiler; +use validator::StatementIterator; + +use self::context::Context; + +mod context; +pub mod helper; + +pub fn repl(compiler: Compiler, initial: Option) -> Result<()> { + let mut ctx = Context::new(compiler)?; + let mut stmts = initial.iter().flat_map(|s| StatementIterator::new(s)); + loop { + let input = if let Some(stmt) = stmts.next() { + ctx.editor.readline_with_initial(">> ", (stmt, "")) + } else { + ctx.editor.readline(">> ") + }; + match input { + Ok(input) => { + ctx.editor.add_history_entry(&input); + if let Err(e) = handle(&mut ctx, input) { + eprintln!("{}", e); + ctx.color(Red); + } else { + ctx.color(Green); + } + } + Err(ReadlineError::Interrupted) => { + eprintln!("Interrupted"); + ctx.color(Red); + } + Err(ReadlineError::Eof) => break, + Err(err) => { + eprintln!("Error: {:?}", err); + break; + } + } + } + Ok(()) +} + +fn handle(ctx: &mut Context, input: String) -> Result<()> { + let stmts = ctx.compiler.parse(ctx.count.to_string(), input); + let stmts = ctx.compiler.ast_to_hir(stmts); + let stmts = ctx.compiler.infer(stmts); + let stmts = ctx.compiler.patcomp(stmts); + let stmts = ctx.compiler.monomorphise(stmts); + if ctx.compiler.has_errors() { + ctx.color(Red); + ctx.compiler.emit_errors(); + return Ok(()); + } + ctx.compiler.interpret(stmts); + Ok(()) +} diff --git a/arc-lang/crates/repl/validator/Cargo.toml b/arc-lang/crates/repl/validator/Cargo.toml new file mode 100644 index 000000000..ed5e4c564 --- /dev/null +++ b/arc-lang/crates/repl/validator/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "validator" +version.workspace = true +edition.workspace = true + +[dependencies] +rustyline.workspace = true +colored.workspace = true diff --git a/arc-lang/crates/repl/validator/src/lib.rs b/arc-lang/crates/repl/validator/src/lib.rs new file mode 100644 index 000000000..5bace06d8 --- /dev/null +++ b/arc-lang/crates/repl/validator/src/lib.rs @@ -0,0 +1,72 @@ +use colored::Color::Blue; +use colored::Colorize; +use rustyline::validate::ValidationContext; +use rustyline::validate::ValidationResult; +use rustyline::validate::Validator; +use rustyline::Result; + +#[derive(Default)] +pub struct StatementValidator; + +impl StatementValidator { + pub fn new() -> Self { + Self::default() + } +} + +impl Validator for StatementValidator { + fn validate(&self, ctx: &mut ValidationContext) -> Result { + let input = ctx.input(); + let stmts = StatementIterator::new(input); + if (stmts.count() > 0 && input.ends_with(";")) || input.ends_with("\n") { + Ok(ValidationResult::Valid(None)) + } else { + if input.is_empty() { + Ok(ValidationResult::Invalid(Some( + " Enter statement".color(Blue).to_string(), + ))) + } else { + return Ok(ValidationResult::Incomplete); + } + } + } +} + +pub struct StatementIterator<'a> { + input: &'a str, +} + +impl<'a> StatementIterator<'a> { + pub fn new(input: &'a str) -> Self { + Self { + input: input.trim(), + } + } +} + +impl<'a> Iterator for StatementIterator<'a> { + type Item = &'a str; + + fn next(&mut self) -> Option { + let mut depth = 0; + let mut end = 0; + for (i, c) in self.input.char_indices() { + match c { + '(' | '{' | '[' => depth += 1, + ')' | '}' | ']' => depth -= 1, + ';' if depth == 0 => { + end = i; + break; + } + _ => continue, + } + } + if end == 0 { + None + } else { + let stmt = &self.input[..end + 1].trim(); + self.input = &self.input[end + 1..]; + Some(stmt) + } + } +} diff --git a/arc-lang/crates/runtime/Cargo.toml b/arc-lang/crates/runtime/Cargo.toml new file mode 100644 index 000000000..927b29421 --- /dev/null +++ b/arc-lang/crates/runtime/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "runtime" +version.workspace = true +edition.workspace = true + +[dependencies] +macros.workspace = true +builtins.workspace = true +runner.workspace = true +state.workspace = true +formats.workspace = true + +tokio.workspace = true +serde.workspace = true +time.workspace = true +hexf.workspace = true diff --git a/arc-lang/crates/runtime/builtins/.cargo/config b/arc-lang/crates/runtime/builtins/.cargo/config new file mode 100644 index 000000000..bd3e57a4b --- /dev/null +++ b/arc-lang/crates/runtime/builtins/.cargo/config @@ -0,0 +1,8 @@ +[target.x86_64-unknown-linux-gnu] +rustflags = [ "-Clink-args=-Wl,-rpath,\\$ORIGIN" ] + +[target.aarch64-apple-darwin] +rustflags = [ "-Clink-args=-Wl,-rpath,@loader_path" ] + +[target.x86_64-apple-darwin] +rustflags = [ "-Clink-args=-Wl,-rpath,@loader_path" ] diff --git a/arc-lang/crates/runtime/builtins/Cargo.toml b/arc-lang/crates/runtime/builtins/Cargo.toml new file mode 100644 index 000000000..fa5a89437 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "builtins" +version.workspace = true +edition.workspace = true + +[dependencies] +macros.workspace = true +image.workspace = true +ort.workspace = true +ndarray.workspace = true +time.workspace = true +serde.workspace = true +float-cmp.workspace = true +tokio.workspace = true +tokio-util.workspace = true +formats.workspace = true +num.workspace = true +num-traits.workspace = true +url.workspace = true +tokio-stream.workspace = true +futures.workspace = true +tracing.workspace = true +once_cell.workspace = true +derive_more.workspace = true +minus.workspace = true +hyper.workspace = true +# ouroborus.workspace = true +# polars.workspace = true diff --git a/arc-lang/crates/runtime/builtins/src/aggregator.rs b/arc-lang/crates/runtime/builtins/src/aggregator.rs new file mode 100644 index 000000000..ea7bdb4c8 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/aggregator.rs @@ -0,0 +1,31 @@ +#![allow(unused)] + +use serde::Deserialize; +use serde::Serialize; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[repr(C)] +pub enum Aggregator { + Monoid { + lift: F0, + combine: F1, + identity: F2, + lower: F3, + }, +} + +impl Aggregator P, fn(P, P) -> P, fn() -> P, fn(P) -> O> { + pub fn monoid( + lift: fn(I) -> P, + combine: fn(P, P) -> P, + identity: fn() -> P, + lower: fn(P) -> O, + ) -> Self { + Self::Monoid { + lift, + combine, + identity, + lower, + } + } +} diff --git a/arc-lang/crates/runtime/builtins/src/array.rs b/arc-lang/crates/runtime/builtins/src/array.rs new file mode 100644 index 000000000..49b3e7379 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/array.rs @@ -0,0 +1,89 @@ +use macros::Send; +use macros::Sync; +use macros::Unpin; + +use std::convert::TryInto; +use std::marker::PhantomData; +use std::mem; +use std::mem::MaybeUninit; + +use serde::de::SeqAccess; +use serde::de::Visitor; +use serde::ser::SerializeTuple; +use serde::Deserialize; +use serde::Deserializer; +use serde::Serialize; +use serde::Serializer; + +use crate::traits::Data; +use crate::traits::DeepClone; + +#[derive(Clone, Debug, Send, Sync, Unpin, Eq, PartialEq, Hash)] +#[repr(C)] +pub struct Array(pub [T; N]); + +impl DeepClone for Array { + fn deep_clone(&self) -> Self { + let data = { + let mut data: [MaybeUninit; N] = unsafe { MaybeUninit::uninit().assume_init() }; + for (new, old) in data.iter_mut().zip(self.0.iter()) { + new.write(old.deep_clone()); + } + unsafe { mem::transmute_copy::<[MaybeUninit; N], [T; N]>(&data) } + }; + Array(data) + } +} + +impl Array { + pub fn new(data: [T; N]) -> Self { + Array(data) + } +} + +impl From<[T; N]> for Array { + fn from(data: [T; N]) -> Self { + Array(data) + } +} + +impl Serialize for Array { + fn serialize(&self, s: S) -> Result { + let mut s = s.serialize_tuple(N)?; + for item in &self.0 { + s.serialize_element(item)?; + } + s.end() + } +} + +impl<'de, T: Data, const N: usize> Deserialize<'de> for Array { + fn deserialize>(d: D) -> Result, D::Error> { + Ok(Array(d.deserialize_tuple(N, ArrayVisitor(PhantomData))?)) + } +} + +struct ArrayVisitor(PhantomData); + +impl<'de, T: Data, const N: usize> Visitor<'de> for ArrayVisitor { + type Value = [T; N]; + + fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { + formatter.write_str(&format!("an array of length {}", N)) + } + + #[inline] + fn visit_seq>(self, mut seq: A) -> Result { + let mut data = Vec::with_capacity(N); + for _ in 0..N { + match (seq.next_element())? { + Some(val) => data.push(val), + None => return Err(serde::de::Error::invalid_length(N, &self)), + } + } + match data.try_into() { + Ok(arr) => Ok(arr), + Err(_) => unreachable!(), + } + } +} diff --git a/arc-lang/crates/runtime/builtins/src/blob.rs b/arc-lang/crates/runtime/builtins/src/blob.rs new file mode 100644 index 000000000..73c2f479a --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/blob.rs @@ -0,0 +1,14 @@ +use serde::Deserialize; +use serde::Serialize; + +use crate::cow::Cow; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[repr(C)] +pub struct Blob(pub Cow>); + +impl Blob { + pub fn new(bytes: std::vec::Vec) -> Self { + Self(Cow::new(bytes)) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/cow.rs b/arc-lang/crates/runtime/builtins/src/cow.rs new file mode 100644 index 000000000..36e61f96c --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/cow.rs @@ -0,0 +1,95 @@ +use macros::DeepClone; +use macros::Send; +use macros::Sync; +use macros::Unpin; +use serde::Deserialize; +use serde::Serialize; + +use crate::traits::DeepClone; + +#[derive( + DeepClone, + Clone, + Debug, + Send, + Sync, + Unpin, + Serialize, + Deserialize, + Eq, + PartialEq, + Hash, + Ord, + PartialOrd, +)] +#[repr(C)] +pub struct Cow(pub std::rc::Rc); + +impl std::ops::Deref for Cow { + type Target = T; + + fn deref(&self) -> &Self::Target { + self.0.as_ref() + } +} + +impl Cow { + /// Create a new cow. + pub fn new(value: T) -> Cow { + Cow(std::rc::Rc::new(value)) + } + + /// Copy the value of the cow. + pub fn copy(&self) -> T + where + T: Clone, + { + self.0.as_ref().clone() + } + + /// Take the value of the cow. If the cow is shared, it will be cloned. + pub fn take(self) -> T + where + T: Clone, + { + match std::rc::Rc::try_unwrap(self.0) { + Ok(this) => this, + Err(this) => this.as_ref().clone(), + } + } + + /// Update the value of the cow. If the cow is shared, it will be cloned. + pub fn update(&mut self, f: impl FnOnce(&mut T) -> O) -> O + where + T: Clone, + { + if let Some(this) = std::rc::Rc::get_mut(&mut self.0) { + f(this) + } else { + let mut this = self.copy(); + let o = f(&mut this); + self.0 = std::rc::Rc::new(this); + o + } + } + + /// Map the value of the cow. If the cow is shared, it will be cloned. + pub fn map(self, f: impl FnOnce(T) -> O) -> O + where + T: Clone, + { + match std::rc::Rc::try_unwrap(self.0) { + Ok(this) => f(this), + Err(this) => f(this.as_ref().clone()), + } + } + + /// Set the value of the cow. If the cow is shared, it will be cloned. + /// This is useful to prevent reallocating new cells. + pub fn set(&mut self, value: T) { + match std::rc::Rc::get_mut(&mut self.0) { + Some(this) => *this = value, + None => self.0 = std::rc::Rc::new(value), + } + } +} diff --git a/arc-lang/crates/runtime/builtins/src/dataflow.rs b/arc-lang/crates/runtime/builtins/src/dataflow.rs new file mode 100644 index 000000000..0794d3573 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/dataflow.rs @@ -0,0 +1,13 @@ +#[derive(Debug)] +pub struct Dataflow { + pub tx: tokio::sync::broadcast::Sender<()>, +} + +impl Dataflow { + pub fn new(tx: tokio::sync::broadcast::Sender<()>) -> Self { + Self { tx } + } + pub fn run(self) { + self.tx.send(()).unwrap(); + } +} diff --git a/arc-lang/crates/runtime/builtins/src/dataframe.rs b/arc-lang/crates/runtime/builtins/src/dataframe.rs new file mode 100644 index 000000000..511a9751a --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/dataframe.rs @@ -0,0 +1,13 @@ +// use crate::cow::Cow; +// use crate::vec::Vec; +// +// pub struct DataFrame(pub Cow); +// +// pub struct Series(pub Cow); +// +// impl DataFrame { +// pub fn new(columns: Vec) -> Self { +// DataFrame(polars::prelude::DataFrame::new(columns.0.take())) +// } +// +// } diff --git a/arc-lang/crates/runtime/builtins/src/dict.rs b/arc-lang/crates/runtime/builtins/src/dict.rs new file mode 100644 index 000000000..e14b4154f --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/dict.rs @@ -0,0 +1,69 @@ +use std::borrow::Borrow; +use std::collections::HashMap; +use std::hash::Hash; + +use serde::Deserialize; +use serde::Serialize; + +use crate::cow::Cow; +use crate::traits::Data; +use crate::traits::DeepClone; +use crate::traits::Key; + +#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)] +#[repr(C)] +pub struct Dict(pub Cow>); + +impl DeepClone for Dict { + fn deep_clone(&self) -> Self { + todo!() + // let map = self + // .0 + // .iter() + // .map(|(k, v)| (k.deep_clone(), v.deep_clone())) + // .collect(); + // Dict(map) + } +} + +impl Dict { + pub fn new() -> Dict { + Dict(Cow::new(HashMap::new())) + } + + pub fn get(self, key: impl Borrow) -> Option + where + K: Clone, + V: Clone, + { + self.0.get(key.borrow()).cloned() + } + + pub fn insert(mut self, key: K, val: V) -> Self + where + K: Clone, + V: Clone, + { + self.0.update(|this| this.insert(key, val)); + self + } + + pub fn remove(mut self, key: impl Borrow) -> Self + where + K: Clone, + V: Clone, + { + self.0.update(|this| this.remove(key.borrow())); + self + } + + pub fn contains_key(self, key: impl Borrow) -> bool { + self.0.contains_key(key.borrow()) + } +} + +impl From> for Dict { + fn from(map: std::collections::HashMap) -> Self { + Dict(Cow::new(map)) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/discretizer.rs b/arc-lang/crates/runtime/builtins/src/discretizer.rs new file mode 100644 index 000000000..1b0a527e6 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/discretizer.rs @@ -0,0 +1,36 @@ +use serde::Deserialize; +use serde::Serialize; + +use crate::duration::Duration; + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] +#[repr(C)] +pub enum Discretizer { + Tumbling { length: Duration }, + Sliding { length: Duration, step: Duration }, + Session { gap: Duration }, + Counting { length: i32 }, + Moving { length: i32, step: i32 }, +} + +impl Discretizer { + pub fn tumbling(length: Duration) -> Self { + Self::Tumbling { length } + } + + pub fn sliding(length: Duration, step: Duration) -> Self { + Self::Sliding { length, step } + } + + pub fn session(gap: Duration) -> Self { + Self::Session { gap } + } + + pub fn counting(length: i32) -> Self { + Self::Counting { length } + } + + pub fn moving(length: i32, step: i32) -> Self { + Self::Moving { length, step } + } +} diff --git a/arc-lang/crates/runtime/builtins/src/duration.rs b/arc-lang/crates/runtime/builtins/src/duration.rs new file mode 100644 index 000000000..0d0945dc9 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/duration.rs @@ -0,0 +1,30 @@ +use serde::Deserialize; +use serde::Serialize; + +#[derive(Clone, Copy, Serialize, Deserialize, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] +#[repr(C)] +pub struct Duration(pub time::Duration); + +impl Duration { + pub fn from_seconds(seconds: i64) -> Self { + Self(time::Duration::seconds(seconds)) + } + + pub fn from_milliseconds(milliseconds: i64) -> Self { + Self(time::Duration::milliseconds(milliseconds)) + } + + pub fn from_microseconds(microseconds: i64) -> Self { + Self(time::Duration::microseconds(microseconds)) + } + + pub fn from_nanoseconds(nanoseconds: i64) -> Self { + Self(time::Duration::nanoseconds(nanoseconds)) + } + + pub(crate) fn to_std(self) -> std::time::Duration { + let whole_seconds = self.0.whole_seconds() as u64; + let subsec_nanos = self.0.subsec_nanoseconds() as u32; + std::time::Duration::new(whole_seconds, subsec_nanos) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/encoding.rs b/arc-lang/crates/runtime/builtins/src/encoding.rs new file mode 100644 index 000000000..956db6b72 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/encoding.rs @@ -0,0 +1,18 @@ +use serde::Deserialize; +use serde::Serialize; + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] +#[repr(C)] +pub enum Encoding { + Csv { sep: char }, + Json, +} + +impl Encoding { + pub fn csv(sep: char) -> Self { + Self::Csv { sep } + } + pub fn json() -> Self { + Self::Json + } +} diff --git a/arc-lang/crates/runtime/builtins/src/file.rs b/arc-lang/crates/runtime/builtins/src/file.rs new file mode 100644 index 000000000..0cc1ffe59 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/file.rs @@ -0,0 +1,55 @@ +use std::fmt::Write; +use std::io::Read; + +use minus::ExitStrategy; + +use crate::blob::Blob; +use crate::path::Path; +use crate::string::String; + +#[derive(Debug, Clone)] +#[repr(C)] +pub struct File(pub std::rc::Rc>); + +impl File { + pub fn open(path: impl Into) -> Self { + File::from(std::fs::File::open(&path.into().0).unwrap()) + } + + pub fn read_to_string(self) -> String { + let mut string = std::string::String::new(); + self.0.borrow_mut().read_to_string(&mut string).unwrap(); + String::from(string) + } + + pub fn read_to_bytes(self) -> Blob { + let mut vec = std::vec::Vec::new(); + self.0.borrow_mut().read_to_end(&mut vec).unwrap(); + Blob::new(vec) + } + + pub fn inspect(self) { + let mut string = std::string::String::new(); + self.0.borrow_mut().read_to_string(&mut string).unwrap(); + if let Err(e) = logs(string) { + eprintln!("{}", e); + } + fn logs(string: std::string::String) -> Result<(), std::fmt::Error> { + let mut pager = minus::Pager::new(); + + for line in string.lines() { + writeln!(pager, "{}", line).unwrap(); + } + pager.set_exit_strategy(ExitStrategy::PagerQuit).unwrap(); + minus::page_all(pager).unwrap(); + Ok(()) + } + ().into() + } +} + +impl From for File { + fn from(file: std::fs::File) -> Self { + Self(std::rc::Rc::new(std::cell::RefCell::new(file))) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/image.rs b/arc-lang/crates/runtime/builtins/src/image.rs new file mode 100644 index 000000000..7665c6226 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/image.rs @@ -0,0 +1,174 @@ +use derive_more::Deref; +use derive_more::DerefMut; +use image::io::Reader; +use image::DynamicImage; +use image::GenericImage; +use image::GenericImageView; +use image::ImageFormat; +use ndarray::ArrayBase; +use serde::Deserialize; +use serde::Deserializer; +use serde::Serialize; +use serde::Serializer; +use std::io::Cursor; + +use crate::array::Array; +use crate::blob::Blob; +use crate::cow::Cow; +use crate::matrix::Matrix; +use crate::path::Path; +use crate::traits::DeepClone; + +#[derive(Clone, Debug)] +#[repr(C)] +pub struct Image(Cow); + +#[derive(Clone, Debug, Deref, DerefMut)] +struct Inner(DynamicImage); + +impl DeepClone for DynamicImage { + fn deep_clone(&self) -> Self { + self.clone() + } +} + +impl DeepClone for Inner { + fn deep_clone(&self) -> Self { + Self(self.0.clone()) + } +} + +impl Serialize for Inner { + fn serialize(&self, serializer: S) -> Result { + let mut bytes = std::vec::Vec::new(); + self.0 + .write_to(&mut Cursor::new(&mut bytes), ImageFormat::Png) + .unwrap(); + serializer.serialize_bytes(&bytes) + } +} + +impl<'de> Deserialize<'de> for Inner { + fn deserialize>(deserializer: D) -> Result { + let bytes = std::vec::Vec::::deserialize(deserializer)?; + let image = Reader::new(Cursor::new(bytes)) + .with_guessed_format() + .unwrap() + .decode() + .unwrap(); + Ok(Self(image)) + } +} + +impl Image { + pub fn new(data: Blob) -> Image { + let rd = Reader::new(Cursor::new(data.0.as_slice())) + .with_guessed_format() + .expect("Unknown image format"); + let img = rd.decode().expect("Failed to decode image"); + Image::from(img) + } + + pub fn crop(self, x: u32, y: u32, new_w: u32, new_h: u32) -> Self { + Image::from(self.0.crop_imm(x, y, new_w, new_h)) + } + + pub fn center_crop(self, new_w: u32, new_h: u32) -> Self { + let old_w = self.0.width(); + let old_h = self.0.height(); + self.crop((old_w - new_w) / 2, (old_h - new_h) / 2, new_w, new_h) + } + + pub fn resize(self, new_w: u32, new_h: u32) -> Self { + Image(Cow::new(Inner(self.0.resize_exact( + new_w, + new_h, + image::imageops::FilterType::Nearest, + )))) + } + + pub fn resize_width(self, new_w: u32) -> Self { + let old_w = self.0.width(); + let old_h = self.0.height(); + let new_h = (old_h as f32 * (new_w as f32 / old_w as f32)) as u32; + self.resize(new_w, new_h) + } + + pub fn resize_height(self, new_h: u32) -> Self { + let old_w = self.0.width(); + let old_h = self.0.height(); + let new_w = (old_w as f32 * (new_h as f32 / old_h as f32)) as u32; + self.resize(new_w, new_h) + } + + pub fn into_matrix(self) -> Matrix { + let w = self.0.width() as usize; + let h = self.0.height() as usize; + let mut array = ArrayBase::zeros(vec![3, w, h]); + for (x, y, rgb) in self.0.pixels() { + let x = x as usize; + let y = y as usize; + array[[0, x, y]] = rgb[0] as f32; + array[[1, x, y]] = rgb[1] as f32; + array[[2, x, y]] = rgb[2] as f32; + array[[3, x, y]] = rgb[3] as f32; + } + Matrix::from(array) + } + + pub fn from_matrix(matrix: Matrix) -> Self { + let w = matrix.0.shape()[1]; + let h = matrix.0.shape()[2]; + let mut img = DynamicImage::new_rgb8(w as u32, h as u32); + for x in 0..w { + for y in 0..h { + img.put_pixel( + x as u32, + y as u32, + image::Rgba([ + matrix.0[[0, x, y]] as u8, + matrix.0[[1, x, y]] as u8, + matrix.0[[2, x, y]] as u8, + matrix.0[[3, x, y]] as u8, + ]), + ); + } + } + Image::from(img) + } + + pub fn save(self, path: Path) { + self.0.save(path.0).unwrap(); + } + + pub fn height(self) -> u32 { + self.0.height() + } + + pub fn width(self) -> u32 { + self.0.width() + } + + pub fn draw_box(mut self, x: u32, y: u32, w: u32, h: u32, rgba: Array) { + let rgba = rgba.0.into(); + if x + w >= self.0.width() || y + h >= self.0.height() { + panic!("Box out of bounds"); + } + self.0.update(|this| { + for i in 0..w { + this.put_pixel(x + i, y, rgba); + this.put_pixel(x + i, y + h, rgba); + } + for i in 0..h { + this.put_pixel(x, y + i, rgba); + this.put_pixel(x + w, y + i, rgba); + } + }) + } +} + +impl From for Image { + fn from(image: DynamicImage) -> Self { + Image(Cow::new(Inner(image))) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/iterator.rs b/arc-lang/crates/runtime/builtins/src/iterator.rs new file mode 100644 index 000000000..3b73a358c --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/iterator.rs @@ -0,0 +1,35 @@ +use crate::cow::Cow; +use crate::traits::Data; + +#[derive(Debug, Clone)] +#[repr(C)] +pub struct Iter + Clone>(Cow); + +impl + Clone> Iter { + pub fn new(i: I) -> Iter { + Iter(Cow::new(i)) + } + + pub fn enumerate(self) -> Iter<(usize, T), std::iter::Enumerate> { + Iter(Cow::new(self.0.take().enumerate())) + } + + pub fn map U + Clone>(self, f: F) -> Iter> { + Iter(Cow::new(self.0.take().map(f))) + } + + pub fn filter bool + Clone>(self, f: F) -> Iter> { + Iter(Cow::new(self.0.take().filter(f))) + } +} + +impl + Clone> Iterator for Iter { + type Item = T; + + fn next(&mut self) -> std::option::Option { + self.0.update(|this| match this.next() { + Some(x) => std::option::Option::Some(x), + None => std::option::Option::None, + }) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/keyed_stream.rs b/arc-lang/crates/runtime/builtins/src/keyed_stream.rs new file mode 100644 index 000000000..5d3fcc5eb --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/keyed_stream.rs @@ -0,0 +1,326 @@ +#![allow(irrefutable_let_patterns)] +use std::collections::BTreeMap; +use std::collections::HashMap; + +use num::Integer; +use time::OffsetDateTime; +use tokio::sync::mpsc::Receiver; + +use crate::aggregator::Aggregator; +use crate::dict::Dict; +use crate::duration::Duration; +use crate::stream::Event; +use crate::stream::Stream; +use crate::time::Time; +use crate::traits::Data; +use crate::traits::Key; +use serde::Deserialize; +use serde::Serialize; + +#[derive(Debug, Serialize, Deserialize)] +pub(crate) enum KeyedEvent { + Data(Time, K, T), + Watermark(Time), + Snapshot(usize), + Sentinel, +} + +pub struct KeyedStream(pub(crate) Receiver>); + +impl KeyedStream { + pub fn map(mut self, f: fn(T) -> O) -> KeyedStream + where + O: Data, + { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + match self.recv().await { + KeyedEvent::Data(t, k, v) => tx1.send(KeyedEvent::Data(t, k, f(v))).await, + KeyedEvent::Watermark(t) => tx1.send(KeyedEvent::Watermark(t)).await, + KeyedEvent::Snapshot(i) => tx1.send(KeyedEvent::Snapshot(i)).await, + KeyedEvent::Sentinel => { + tx1.send(KeyedEvent::Sentinel).await.unwrap(); + break; + } + } + .unwrap() + } + }); + KeyedStream(rx1) + } + pub fn filter(mut self, f: fn(T) -> bool) -> KeyedStream { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + match self.recv().await { + KeyedEvent::Data(t, k, v) => { + if f(v.clone()) { + tx1.send(KeyedEvent::Data(t, k, v)).await.unwrap(); + } + } + KeyedEvent::Watermark(t) => tx1.send(KeyedEvent::Watermark(t)).await.unwrap(), + KeyedEvent::Snapshot(i) => tx1.send(KeyedEvent::Snapshot(i)).await.unwrap(), + KeyedEvent::Sentinel => { + tx1.send(KeyedEvent::Sentinel).await.unwrap(); + break; + } + } + } + }); + KeyedStream(rx1) + } + + pub fn join(mut self, index: Dict, merge: fn(T, T1) -> T2) -> KeyedStream + where + T1: Data, + T2: Data, + { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + match self.recv().await { + KeyedEvent::Data(t, k, v0) => { + if let Some(v1) = index.0.get(&k) { + let v2 = merge(v0, v1.clone()); + tx1.send(KeyedEvent::Data(t, k, v2)).await.unwrap(); + } + } + KeyedEvent::Watermark(t) => { + tx1.send(KeyedEvent::Watermark(t)).await.unwrap(); + } + KeyedEvent::Snapshot(i) => { + tx1.send(KeyedEvent::Snapshot(i)).await.unwrap(); + } + KeyedEvent::Sentinel => { + tx1.send(KeyedEvent::Sentinel).await.unwrap(); + break; + } + } + } + }); + KeyedStream(rx1) + } + + pub fn merge(mut self, mut other: Self) -> Self { + let (tx2, rx2) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + let event = tokio::select! { + event = self.recv() => { + if let KeyedEvent::Sentinel = event { + other.recv().await + } else { + event + } + }, + event = other.recv() => { + if let KeyedEvent::Sentinel = event { + self.recv().await + } else { + event + } + }, + }; + match event { + KeyedEvent::Data(t, k1, v1) => { + tx2.send(KeyedEvent::Data(t, k1, v1)).await.unwrap(); + } + KeyedEvent::Watermark(t) => { + tx2.send(KeyedEvent::Watermark(t)).await.unwrap(); + } + KeyedEvent::Snapshot(i) => { + tx2.send(KeyedEvent::Snapshot(i)).await.unwrap(); + } + KeyedEvent::Sentinel => { + tx2.send(KeyedEvent::Sentinel).await.unwrap(); + break; + } + } + } + }); + Self(rx2) + } + + pub fn split(mut self) -> (Self, Self) { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + let (tx2, rx2) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + let (l, r) = match self.recv().await { + KeyedEvent::Data(t, k1, v1) => { + let k2 = k1.clone(); + let v2 = v1.clone(); + tokio::join!( + tx1.send(KeyedEvent::Data(t, k2, v2)), + tx2.send(KeyedEvent::Data(t, k1, v1)), + ) + } + KeyedEvent::Watermark(t) => { + tokio::join!( + tx1.send(KeyedEvent::Watermark(t)), + tx2.send(KeyedEvent::Watermark(t)) + ) + } + KeyedEvent::Snapshot(i) => { + tokio::join!( + tx1.send(KeyedEvent::Snapshot(i)), + tx2.send(KeyedEvent::Snapshot(i)) + ) + } + KeyedEvent::Sentinel => { + tokio::join!( + tx1.send(KeyedEvent::Sentinel), + tx2.send(KeyedEvent::Sentinel) + ) + } + }; + l.unwrap(); + r.unwrap(); + } + }); + (Self(rx1), Self(rx2)) + } + + pub fn scan( + mut self, + agg: Aggregator P, fn(P, P) -> P, fn() -> P, fn(P) -> O>, + ) -> KeyedStream + where + P: Data, + O: Data, + { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + let mut state = HashMap::new(); + let Aggregator::Monoid { + lift, + combine, + identity, + lower, + } = agg + else { + unreachable!() + }; + tokio::task::spawn_local(async move { + loop { + match self.recv().await { + KeyedEvent::Data(t, k, v) => { + let p = state.entry(k.clone()).or_insert_with(identity); + *p = combine(p.clone(), lift(v)); + tx1.send(KeyedEvent::Data(t, k, lower(p.clone()))) + .await + .unwrap(); + } + KeyedEvent::Watermark(t) => { + tx1.send(KeyedEvent::Watermark(t)).await.unwrap(); + } + KeyedEvent::Snapshot(i) => { + tx1.send(KeyedEvent::Snapshot(i)).await.unwrap(); + } + KeyedEvent::Sentinel => { + tx1.send(KeyedEvent::Sentinel).await.unwrap(); + break; + } + } + } + }); + KeyedStream(rx1) + } + + #[allow(unstable_name_collisions)] + pub fn window( + mut self, + size: Duration, + agg: Aggregator P, fn(P, P) -> P, fn() -> P, fn(P) -> O>, + ) -> KeyedStream + where + P: Data, + O: Data, + { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + let mut aggs: BTreeMap> = BTreeMap::new(); + let Aggregator::Monoid { + lift, + combine, + identity, + lower, + } = agg + else { + unreachable!() + }; + tokio::task::spawn_local(async move { + loop { + match self.recv().await { + KeyedEvent::Data(time, key, data) => { + let slot = time + .0 + .unix_timestamp_nanos() + .div_floor(&size.0.whole_nanoseconds()); + let time = OffsetDateTime::from_unix_timestamp_nanos( + slot * size.0.whole_nanoseconds(), + ) + .expect("Error converting timestamp to OffsetDateTime."); + let p = aggs + .entry(time) + .or_insert_with(HashMap::new) + .entry(key) + .or_insert_with(identity); + *p = combine(p.clone(), lift(data)); + } + KeyedEvent::Watermark(watermark) => { + while let Some(entry) = aggs.first_entry() { + let time = *entry.key() + size.0; + if time < watermark.0 { + for (key, p) in entry.remove() { + tx1.send(KeyedEvent::Data(Time(time), key, lower(p))) + .await + .unwrap(); + } + tx1.send(KeyedEvent::Watermark(watermark)).await.unwrap(); + } else { + tx1.send(KeyedEvent::Watermark(watermark)).await.unwrap(); + break; + } + } + } + KeyedEvent::Snapshot(i) => { + tx1.send(KeyedEvent::Snapshot(i)).await.unwrap(); + } + KeyedEvent::Sentinel => { + tx1.send(KeyedEvent::Sentinel).await.unwrap(); + break; + } + } + } + }); + KeyedStream(rx1) + } + + pub fn unkey(mut self) -> Stream { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + match self.recv().await { + KeyedEvent::Data(t, _, v) => { + tx1.send(Event::Data(t, v)).await.unwrap(); + } + KeyedEvent::Watermark(t) => { + tx1.send(Event::Watermark(t)).await.unwrap(); + } + KeyedEvent::Snapshot(i) => { + tx1.send(Event::Snapshot(i)).await.unwrap(); + } + KeyedEvent::Sentinel => { + tx1.send(Event::Sentinel).await.unwrap(); + break; + } + } + } + }); + Stream(rx1) + } + + async fn recv(&mut self) -> KeyedEvent { + self.0.recv().await.unwrap() + } +} diff --git a/arc-lang/crates/runtime/builtins/src/lib.rs b/arc-lang/crates/runtime/builtins/src/lib.rs new file mode 100644 index 000000000..49bfd3096 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/lib.rs @@ -0,0 +1,30 @@ +pub mod aggregator; +pub mod array; +pub mod cow; +pub mod dataflow; +pub mod dataframe; +pub mod dict; +pub mod discretizer; +pub mod duration; +pub mod encoding; +pub mod file; +pub mod image; +pub mod iterator; +pub mod keyed_stream; +pub mod matrix; +pub mod model; +pub mod option; +pub mod path; +pub mod reader; +pub mod result; +pub mod set; +pub mod socket; +pub mod stream; +pub mod string; +pub mod time; +pub mod time_source; +pub mod traits; +pub mod url; +pub mod vec; +pub mod writer; +pub mod blob; diff --git a/arc-lang/crates/runtime/builtins/src/matrix.rs b/arc-lang/crates/runtime/builtins/src/matrix.rs new file mode 100644 index 000000000..19fc3c3a2 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/matrix.rs @@ -0,0 +1,83 @@ +#![allow(unused)] + +use std::cmp::Reverse; +use std::collections::BinaryHeap; + +use derive_more::Deref; +use derive_more::DerefMut; +use macros::DeepClone; +use ndarray::ArrayBase; +use ndarray::Axis; +use ndarray::Dim; +use ndarray::IxDynImpl; +use ndarray::OwnedRepr; +use num::Num; +use num::Zero; +use serde::Deserialize; +use serde::Serialize; + +use crate::array::Array; +use crate::cow::Cow; +use crate::iterator::Iter; +use crate::traits::Data; +use crate::traits::DeepClone; +use crate::vec::Vec; + +#[derive(DeepClone, Debug, Clone, Serialize, Deserialize, Eq, PartialEq)] +#[repr(C)] +pub struct Matrix(pub Cow>); + +#[derive(Debug, Clone, Deref, DerefMut, Serialize, Deserialize, Eq, PartialEq)] +#[repr(C)] +pub struct Inner(pub ArrayBase, Dim>); + +impl DeepClone for Inner { + fn deep_clone(&self) -> Self { + Inner(self.0.clone()) + } +} + +impl Matrix { + pub fn new(shape: impl Into>) -> Self + where + T: Clone + Zero, + { + Matrix::from(ArrayBase::zeros(shape.into().0.to_vec())) + } + + pub fn insert_axis(mut self, axis: usize) -> Self + where + T: Clone, + { + self.0.update(|this| this.0.insert_axis_inplace(Axis(axis))); + self + } + + pub fn remove_axis(mut self, axis: usize) -> Self + where + T: Clone, + { + self.0 + .map(|this| Matrix::from(this.0.remove_axis(Axis(axis)))) + } + + pub fn into_vec(self) -> Vec + where + T: Clone, + { + self.0.map(|this| Vec::from(this.0.into_raw_vec())) + } + + pub fn iter(self) -> Iter + Clone> + where + T: Clone, + { + Iter::new(self.0.take().0.into_raw_vec().into_iter()) + } +} + +impl From, Dim>> for Matrix { + fn from(array: ArrayBase, Dim>) -> Self { + Matrix(Cow::new(Inner(array))) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/model.rs b/arc-lang/crates/runtime/builtins/src/model.rs new file mode 100644 index 000000000..a8be7a764 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/model.rs @@ -0,0 +1,87 @@ +use ndarray::ArrayBase; +use ndarray::CowArray; +use ndarray::CowRepr; +use ndarray::Dim; +use ndarray::IxDynImpl; +use once_cell::sync::Lazy; +use ort::tensor::IntoTensorElementDataType; +use ort::tensor::TensorDataToType; +use ort::value::DynArrayRef; +use ort::Environment; +use ort::InMemorySession; +use ort::SessionBuilder; +use ort::Value; +use serde::Serialize; +use std::fmt::Debug; +use std::rc::Rc; +use std::sync::Arc; + +use crate::blob::Blob; +use crate::matrix::Matrix; + +#[derive(Clone)] +#[repr(C)] +pub struct Model { + bytes: &'static [u8], + session: Rc>, +} + +impl Serialize for Model { + fn serialize(&self, s: S) -> Result { + s.serialize_bytes(self.bytes) + } +} + +impl<'de> serde::Deserialize<'de> for Model { + fn deserialize>(d: D) -> Result { + let bytes = >::deserialize(d)?; + let bytes = std::vec::Vec::leak(bytes); + Ok(Model::from_bytes(bytes)) + } +} + +impl Debug for Model { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Model").finish() + } +} + +fn init() -> Arc { + Environment::builder() + .build() + .expect("Failed building ONNX") + .into_arc() +} + +static ONNX: Lazy> = Lazy::new(init); + +impl Model { + pub fn new(blob: Blob) -> Self { + Self::from_bytes(blob.0.take().leak()) + } + + fn from_bytes(bytes: &'static [u8]) -> Self { + let session = SessionBuilder::new(&ONNX) + .unwrap() + .with_model_from_memory(bytes) + .unwrap(); + Model { + bytes, + session: Rc::new(session), + } + } + + pub fn predict(&self, x: Matrix) -> Matrix + where + for<'a> DynArrayRef<'a>: From, Dim>>, + I: IntoTensorElementDataType + Debug + Clone, + O: TensorDataToType + Clone, + { + let x = x.0.map(|x| CowArray::from(x.0)); + let x = Value::from_array(self.session.allocator(), &x).unwrap(); + let y = self.session.run(vec![x]).unwrap(); + let y = y[0].try_extract::().unwrap(); + let y = y.view().map(|x| x.clone()); + Matrix::from(y) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/option.rs b/arc-lang/crates/runtime/builtins/src/option.rs new file mode 100644 index 000000000..7c6a62549 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/option.rs @@ -0,0 +1,50 @@ +use macros::DeepClone; +use serde::Deserialize; +use serde::Serialize; + +use crate::traits::DeepClone; + +#[derive(Clone, DeepClone, Debug, Serialize, Deserialize, Eq, PartialEq, Ord, PartialOrd, Hash)] +#[repr(C)] +pub struct Option(std::option::Option); + +impl DeepClone for std::option::Option { + fn deep_clone(&self) -> Self { + match self { + std::option::Option::Some(x) => std::option::Option::Some(x.deep_clone()), + std::option::Option::None => std::option::Option::None, + } + } +} + +impl Option { + pub fn some(x: T) -> Self { + Self(Some(x)) + } + + pub fn none() -> Self { + Self(None) + } + + pub fn is_some(self) -> bool { + self.0.is_some() + } + + pub fn is_none(self) -> bool { + self.0.is_none() + } + + pub fn unwrap(self) -> T { + self.0.unwrap() + } + + pub fn map U>(self, f: F) -> Option { + self.0.map(f).into() + } +} + +impl From> for Option { + fn from(x: std::option::Option) -> Self { + Self(x) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/path.rs b/arc-lang/crates/runtime/builtins/src/path.rs new file mode 100644 index 000000000..8147baf20 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/path.rs @@ -0,0 +1,24 @@ +use serde::Deserialize; +use serde::Serialize; + +#[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Serialize, Deserialize)] +#[repr(C)] +pub struct Path(pub std::path::PathBuf); + +impl Path { + pub fn new(path: impl AsRef) -> Self { + Self(std::path::PathBuf::from(path.as_ref())) + } +} + +impl<'a> From<&'a str> for Path { + fn from(path: &'a str) -> Self { + Self::new(path) + } +} + +impl From for Path { + fn from(path: std::path::PathBuf) -> Self { + Self(path) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/reader.rs b/arc-lang/crates/runtime/builtins/src/reader.rs new file mode 100644 index 000000000..346a0dc97 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/reader.rs @@ -0,0 +1,41 @@ +#![allow(unused)] +use serde::Deserialize; +use serde::Serialize; + +use crate::path::Path; +use crate::socket::SocketAddr; +use crate::stream::Stream; +use crate::string::String; +use crate::traits::Data; +use crate::url::Url; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[repr(C)] +pub enum Reader { + Stdin, + File { path: Path, watch: bool }, + Http { url: Url }, + Tcp { addr: SocketAddr }, + Kafka { addr: SocketAddr, topic: String }, +} + +impl Reader { + pub fn stdin() -> Self { + Self::Stdin + } + pub fn file(path: Path, watch: bool) -> Self { + if !path.0.exists() { + tracing::warn!("{} does not exist", path.0.display()); + } + Self::File { path, watch } + } + pub fn http(url: Url) -> Self { + Self::Http { url } + } + pub fn tcp(addr: SocketAddr) -> Self { + Self::Tcp { addr } + } + pub fn kafka(addr: SocketAddr, topic: String) -> Self { + Self::Kafka { addr, topic } + } +} diff --git a/arc-lang/crates/runtime/builtins/src/result.rs b/arc-lang/crates/runtime/builtins/src/result.rs new file mode 100644 index 000000000..6a56bb2d1 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/result.rs @@ -0,0 +1,61 @@ +use macros::DeepClone; +use serde::Deserialize; +use serde::Serialize; + +use crate::string::String; +use crate::traits::DeepClone; + +#[derive(Debug, DeepClone, Clone, Deserialize, Serialize, Eq, PartialEq, PartialOrd, Ord, Hash)] +#[repr(C)] +pub struct Result(pub std::result::Result); + +impl DeepClone for std::result::Result { + fn deep_clone(&self) -> Self { + match self { + std::result::Result::Ok(x) => std::result::Result::Ok(x.deep_clone()), + std::result::Result::Err(x) => std::result::Result::Err(x.deep_clone()), + } + } +} + +impl Result { + pub fn ok(x: T) -> Self { + Self(std::result::Result::Ok(x)) + } + + pub fn error(x: String) -> Self { + Self(std::result::Result::Err(x)) + } + + pub fn is_ok(self) -> bool { + matches!(self.0, std::result::Result::Ok(_)) + } + + pub fn is_error(self) -> bool { + matches!(self.0, std::result::Result::Err(_)) + } + + pub fn unwrap_ok(self) -> T { + match self.0 { + std::result::Result::Ok(x) => x, + std::result::Result::Err(_) => unreachable!(), + } + } + + pub fn unwrap_error(self) -> String { + match self.0 { + std::result::Result::Ok(_) => unreachable!(), + std::result::Result::Err(x) => x, + } + } + + pub fn map(self, f: impl FnOnce(T) -> U) -> Result { + Result(self.0.map(f)) + } +} + +impl From> for Result { + fn from(x: std::result::Result) -> Self { + Self(x.map_err(|x| String::from(x.to_string()))) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/set.rs b/arc-lang/crates/runtime/builtins/src/set.rs new file mode 100644 index 000000000..a6843b39a --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/set.rs @@ -0,0 +1,54 @@ +use std::borrow::Borrow; +use std::collections::HashSet; +use std::hash::Hash; + +use serde::Deserialize; +use serde::Serialize; + +use crate::cow::Cow; + +#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] +#[repr(C)] +pub struct Set(pub Cow>); + +impl Set { + pub fn new() -> Self { + Self(Cow::new(HashSet::new())) + } + + pub fn insert(mut self, value: T) -> Self + where + T: Clone, + { + self.0.update(|this| this.insert(value)); + self + } + + pub fn remove(mut self, value: impl Borrow) -> Self + where + T: Clone, + { + self.0.update(|this| this.remove(value.borrow())); + self + } + + pub fn contains(&self, value: impl Borrow) -> bool + where + T: Clone, + { + self.0.contains(value.borrow()) + } + + pub fn group(&self) -> Vec + where + T: Clone, + { + self.0.iter().cloned().collect() + } +} + +impl From> for Set { + fn from(set: HashSet) -> Self { + Self(Cow::new(set)) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/socket.rs b/arc-lang/crates/runtime/builtins/src/socket.rs new file mode 100644 index 000000000..94f44595f --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/socket.rs @@ -0,0 +1,24 @@ +use std::net::ToSocketAddrs; + +use serde::Deserialize; +use serde::Serialize; + +use crate::string::String; + +#[derive(Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize)] +#[repr(C)] +pub struct SocketAddr(pub std::net::SocketAddr); + +impl SocketAddr { + pub fn new(ip: &'static str, port: u16) -> Self { + Self(std::net::SocketAddr::new(ip.parse().unwrap(), port)) + } + pub fn parse(addr: String) -> Self { + addr.as_ref() + .to_socket_addrs() + .unwrap() + .next() + .map(Self) + .unwrap() + } +} diff --git a/arc-lang/crates/runtime/builtins/src/stream.rs b/arc-lang/crates/runtime/builtins/src/stream.rs new file mode 100644 index 000000000..bf83f5847 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/stream.rs @@ -0,0 +1,561 @@ +use formats::Decode; +use formats::Encode; +use futures::SinkExt; +use futures::StreamExt; +use time::OffsetDateTime; +use tokio::io::AsyncBufReadExt; +use tokio::io::AsyncReadExt; +use tokio::io::AsyncWriteExt; +use tokio::io::BufReader; +use tokio::io::BufWriter; +use tokio::sync::mpsc::Receiver; + +use crate::duration::Duration; +use crate::encoding::Encoding; +use crate::keyed_stream::KeyedEvent; +use crate::keyed_stream::KeyedStream; +use crate::path::Path; +use crate::reader::Reader; +use crate::socket::SocketAddr; +use crate::time::Time; +use crate::time_source::TimeSource; +use crate::traits::Data; +use crate::url::Url; +use crate::writer::Writer; +use serde::Deserialize; +use serde::Serialize; + +#[derive(Debug, Serialize, Deserialize)] +#[repr(C)] +pub(crate) enum Event { + Data(Time, T), + Watermark(Time), + Snapshot(usize), + Sentinel, +} + +pub struct Stream(pub(crate) Receiver>); + +impl Stream { + pub fn source( + reader: Reader, + encoding: Encoding, + time_source: TimeSource Time>, + ) -> Stream { + Self::_source_encoding(reader, encoding, time_source) + } + + fn _source_encoding( + reader: Reader, + encoding: Encoding, + time_source: TimeSource Time>, + ) -> Stream { + match encoding { + Encoding::Csv { sep } => { + let decoder = formats::csv::de::Reader::<1024>::new(sep); + Self::_source_reader(reader, decoder, time_source) + } + Encoding::Json => { + let decoder = formats::json::de::Reader::new(); + Self::_source_reader(reader, decoder, time_source) + } + } + } + + async fn read_pipe( + rx: impl AsyncReadExt + Unpin, + mut decoder: impl Decode + 'static, + watch: bool, + tx: tokio::sync::mpsc::Sender, + ) { + let mut rx = BufReader::new(rx); + let mut buf = Vec::with_capacity(1024); + loop { + match rx.read_until(b'\n', &mut buf).await { + Ok(0) => { + tracing::info!("EOF"); + if watch { + tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; + } else { + break; + } + } + Ok(n) => match decoder.decode(&buf[0..n]) { + Ok(data) => { + tracing::info!("Decoded: {:?}", data); + tx.send(data).await.unwrap(); + buf.clear(); + } + Err(e) => tracing::info!("Failed to decode: {}", e), + }, + Err(e) => panic!("Failed to read from stdin: {}", e), + } + } + } + + async fn read_file( + path: Path, + decoder: impl Decode + 'static, + watch: bool, + tx2: tokio::sync::mpsc::Sender, + ) { + match tokio::fs::File::open(&path.0).await { + Ok(rx) => Self::read_pipe(rx, decoder, watch, tx2).await, + Err(e) => panic!("Failed to open file `{}`: {}", path.0.display(), e), + } + } + + async fn read_socket( + addr: SocketAddr, + mut decoder: impl Decode + 'static, + tx: tokio::sync::mpsc::Sender, + ) { + tracing::info!("Trying to listen on {}", addr.0); + let socket = tokio::net::TcpListener::bind(addr.0).await.unwrap(); + tracing::info!("Listening on {}", addr.0); + let (socket, _) = socket.accept().await.unwrap(); + tracing::info!("Accepted connection from {}", addr.0); + let mut rx = tokio_util::codec::Framed::new(socket, tokio_util::codec::LinesCodec::new()); + loop { + match rx.next().await { + Some(Ok(line)) => match decoder.decode(line.as_bytes()) { + Ok(data) => { + tracing::info!("Decoded: {:?}", data); + tx.send(data).await.unwrap() + } + Err(e) => tracing::info!("Failed to decode: {}", e), + }, + Some(Err(e)) => tracing::info!("Failed to read: {}", e), + None => break, + } + } + } + + #[allow(unused)] + async fn read_http(url: Url, decoder: impl Decode + 'static, tx: tokio::sync::mpsc::Sender) { + todo!() + // let uri: Uri = url.0.to_string().parse().unwrap(); + // let client = hyper::Client::new(); + // let mut resp = client.get(uri).await.unwrap(); + // loop { + // match resp.body_mut().data().await { + // Some(Ok(chunk)) => match decoder.decode(&chunk) { + // Ok(data) => { + // tracing::info!("Decoded: {:?}", data); + // tx.send(data).await.unwrap(); + // } + // Err(e) => tracing::info!("Failed to decode: {}", e), + // }, + // Some(Err(e)) => tracing::info!("Failed to read: {}", e), + // None => break, + // } + // } + } + + #[allow(unused)] + async fn write_http( + rx: tokio::sync::mpsc::Receiver, + url: Url, + encoder: impl Encode + 'static, + ) { + todo!() + // let uri: Uri = url.0.to_string().parse().unwrap(); + // let client = hyper::Client::new(); + // let (mut tx1, rx1) = futures::channel::mpsc::channel(100); + // let req = Request::builder() + // .method(Method::POST) + // .uri(uri) + // .header("content-type", encoder.content_type()) + // .body(Body::wrap_stream(rx1)) + // .unwrap(); + // client.request(req).await.unwrap(); + // let mut buf = vec![0; 1024]; + // loop { + // match rx.recv().await { + // Some(data) => match encoder.encode(&data, &mut buf) { + // Ok(n) => { + // tracing::info!("Encoded: {:?}", data); + // let bytes: Result<_, std::io::Error> = + // Ok(hyper::body::Bytes::from(buf[0..n].to_vec())); + // tx1.send(bytes).await.unwrap(); + // } + // Err(e) => tracing::info!("Failed to encode: {}", e), + // }, + // None => break, + // } + // } + } + + async fn write_pipe( + mut rx: tokio::sync::mpsc::Receiver, + mut encoder: impl Encode + 'static, + tx: impl AsyncWriteExt + Unpin, + ) { + let mut tx = BufWriter::new(tx); + let mut buf = vec![0; 1024]; + loop { + match rx.recv().await { + Some(data) => match encoder.encode(&data, &mut buf) { + Ok(n) => { + tracing::info!("Encoded: {:?}", data); + tx.write_all(&buf[0..n]).await.unwrap(); + tx.flush().await.unwrap(); + } + Err(e) => tracing::info!("Failed to encode: {}", e), + }, + None => break, + } + } + } + + async fn write_file( + rx: tokio::sync::mpsc::Receiver, + path: Path, + encoder: impl Encode + 'static, + ) { + match tokio::fs::File::create(&path.0).await { + Ok(tx) => Self::write_pipe(rx, encoder, tx).await, + Err(e) => panic!("Failed to open file `{}`: {}", path.0.display(), e), + } + } + + async fn write_socket( + mut rx: tokio::sync::mpsc::Receiver, + addr: SocketAddr, + mut encoder: impl Encode + 'static, + ) { + tracing::info!("Connecting to {}", addr.0); + let socket = tokio::net::TcpStream::connect(addr.0).await.unwrap(); + tracing::info!("Connected to {}", addr.0); + let mut tx = tokio_util::codec::Framed::new(socket, tokio_util::codec::LinesCodec::new()); + let mut buf = vec![0; 1024]; + loop { + match rx.recv().await { + Some(data) => match encoder.encode(&data, &mut buf) { + Ok(n) => { + tracing::info!("Encoded: {:?}", data); + let s = std::str::from_utf8(&buf[0..n - 1]).unwrap(); // -1 to remove trailing newline + tracing::info!("Sending: [{}]", s); + tx.send(s).await.unwrap(); + } + Err(e) => tracing::info!("Failed to encode: {}", e), + }, + None => break, + } + } + } + + fn _source_reader( + reader: Reader, + decoder: impl Decode + 'static, + time_source: TimeSource Time>, + ) -> Stream { + let (tx2, rx2) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + match reader { + Reader::Stdin => Self::read_pipe(tokio::io::stdin(), decoder, false, tx2).await, + Reader::File { path, watch } => Self::read_file(path, decoder, watch, tx2).await, + Reader::Http { url } => Self::read_http(url, decoder, tx2).await, + Reader::Tcp { addr } => Self::read_socket(addr, decoder, tx2).await, + Reader::Kafka { addr: _, topic: _ } => todo!(), + } + }); + Self::_source_time(rx2, time_source) + } + + fn _source_time( + rx: tokio::sync::mpsc::Receiver, + time_source: TimeSource Time>, + ) -> Stream { + match time_source { + TimeSource::Ingestion { watermark_interval } => { + false; + Self::_source_ingestion_time(rx, watermark_interval) + } + TimeSource::Event { + extractor, + watermark_interval, + slack, + } => Self::_source_event_time(rx, extractor, watermark_interval, slack), + } + } + + fn _source_ingestion_time( + mut rx: tokio::sync::mpsc::Receiver, + watermark_interval: Duration, + ) -> Stream { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn(async move { + let mut watermark_interval = tokio::time::interval(watermark_interval.to_std()); + loop { + tokio::select! { + _ = watermark_interval.tick() => { + tx1.send(Event::Watermark(Time::now())).await.expect("Failed to send watermark"); + }, + data = rx.recv() => { + match data { + Some(data) => tx1.send(Event::Data(Time::now(), data)).await.expect("Failed to send data"), + None => { + tx1.send(Event::Sentinel).await.expect("Failed to send sentinel"); + break; + }, + } + } + } + } + }); + Stream(rx1) + } + + fn _source_event_time( + mut rx: tokio::sync::mpsc::Receiver, + extractor: fn(T) -> Time, + watermark_interval: Duration, + slack: Duration, + ) -> Stream { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn(async move { + let mut latest_time = OffsetDateTime::UNIX_EPOCH; + let slack = slack.to_std(); + let mut watermark_interval = tokio::time::interval(watermark_interval.to_std()); + let mut watermark = OffsetDateTime::UNIX_EPOCH; + loop { + tokio::select! { + _ = watermark_interval.tick() => { + if latest_time > OffsetDateTime::UNIX_EPOCH { + watermark = latest_time - slack; + tx1.send(Event::Watermark(Time(watermark))).await.expect("Failed to send watermark"); + } + }, + data = rx.recv() => { + match data { + Some(data) => { + let time = extractor(data.clone()); + if time.0 < watermark { + continue; + } + if time.0 > latest_time { + latest_time = time.0; + } + tx1.send(Event::Data(time, data)).await.expect("Failed to send data"); + } + None => { + tx1.send(Event::Sentinel).await.expect("Failed to send sentinel"); + break; + }, + } + } + } + } + }); + Stream(rx1) + } + + pub fn sink(self, writer: Writer, encoding: Encoding) { + let mut this = self; + let (tx, rx) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + let event = this.0.recv().await.expect("failed to receive event"); + match event { + Event::Data(_, data) => tx.send(data).await.unwrap(), + Event::Watermark(_) => continue, + Event::Snapshot(_) => todo!(), + Event::Sentinel => break, + } + } + }); + Self::_sink_encoding(rx, writer, encoding); + } + + fn _sink_encoding(rx: tokio::sync::mpsc::Receiver, writer: Writer, encoding: Encoding) { + match encoding { + Encoding::Csv { sep } => { + let encoder = formats::csv::ser::Writer::new(sep); + Self::_sink_writer(rx, writer, encoder); + } + Encoding::Json => { + let encoder = formats::json::ser::Writer::new(); + Self::_sink_writer(rx, writer, encoder); + } + } + } + + fn _sink_writer( + rx: tokio::sync::mpsc::Receiver, + writer: Writer, + encoder: impl Encode + 'static, + ) { + tokio::task::spawn_local(async move { + match writer { + Writer::Stdout => Self::write_pipe(rx, encoder, tokio::io::stdout()).await, + Writer::File { path } => Self::write_file(rx, path, encoder).await, + Writer::Http { url } => Self::write_http(rx, url, encoder).await, + Writer::Tcp { addr } => Self::write_socket(rx, addr, encoder).await, + Writer::Kafka { addr: _, topic: _ } => todo!(), + } + }); + } + + pub fn map(mut self, f: fn(T) -> O) -> Stream + where + O: Data, + { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + match self.recv().await { + Event::Data(t, v) => tx1.send(Event::Data(t, f(v))).await, + Event::Watermark(t) => tx1.send(Event::Watermark(t)).await, + Event::Snapshot(i) => tx1.send(Event::Snapshot(i)).await, + Event::Sentinel => { + tx1.send(Event::Sentinel).await.unwrap(); + break; + } + } + .unwrap() + } + }); + Stream(rx1) + } + + pub fn filter(mut self, f: fn(T) -> bool) -> Stream { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + match self.recv().await { + Event::Data(t, v) => { + if f(v.clone()) { + tx1.send(Event::Data(t, v)).await.unwrap(); + } + } + Event::Watermark(t) => tx1.send(Event::Watermark(t)).await.unwrap(), + Event::Snapshot(i) => tx1.send(Event::Snapshot(i)).await.unwrap(), + Event::Sentinel => { + tx1.send(Event::Sentinel).await.unwrap(); + break; + } + } + } + }); + Stream(rx1) + } + + pub fn keyby(mut self, fun: fn(T) -> K) -> KeyedStream { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + match self.0.recv().await.unwrap() { + Event::Data(t, v) => { + let k = fun(v.clone()); + tx1.send(KeyedEvent::Data(t, k, v)).await.unwrap(); + } + Event::Watermark(t) => { + tx1.send(KeyedEvent::Watermark(t)).await.unwrap(); + } + Event::Snapshot(i) => { + tx1.send(KeyedEvent::Snapshot(i)).await.unwrap(); + } + Event::Sentinel => { + tx1.send(KeyedEvent::Sentinel).await.unwrap(); + break; + } + } + } + }); + KeyedStream(rx1) + } + + pub fn scan(mut self, init: A, fun: fn(T, A) -> A) -> Stream { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + let mut acc = init; + loop { + match self.0.recv().await.unwrap() { + Event::Data(t, v) => { + acc = fun(v.clone(), acc); + tx1.send(Event::Data(t, acc.clone())).await.unwrap(); + } + Event::Watermark(t) => { + tx1.send(Event::Watermark(t)).await.unwrap(); + } + Event::Snapshot(i) => { + tx1.send(Event::Snapshot(i)).await.unwrap(); + } + Event::Sentinel => { + tx1.send(Event::Sentinel).await.unwrap(); + break; + } + } + } + }); + Stream(rx1) + } + + pub fn merge(mut self, mut other: Self) -> Self { + let (tx2, rx2) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + let event = tokio::select! { + event = self.recv() => if let Event::Sentinel = event { + other.recv().await + } else { + event + }, + event = other.recv() => if let Event::Sentinel = event { + self.recv().await + } else { + event + }, + }; + match event { + Event::Data(t, v1) => { + tx2.send(Event::Data(t, v1)).await.unwrap(); + } + Event::Watermark(t) => { + tx2.send(Event::Watermark(t)).await.unwrap(); + } + Event::Snapshot(i) => { + tx2.send(Event::Snapshot(i)).await.unwrap(); + } + Event::Sentinel => { + tx2.send(Event::Sentinel).await.unwrap(); + break; + } + } + } + }); + Self(rx2) + } + + pub fn split(mut self) -> (Self, Self) { + let (tx1, rx1) = tokio::sync::mpsc::channel(100); + let (tx2, rx2) = tokio::sync::mpsc::channel(100); + tokio::task::spawn_local(async move { + loop { + let (l, r) = match self.recv().await { + Event::Data(t, v1) => { + let v2 = v1.clone(); + tokio::join!(tx1.send(Event::Data(t, v2)), tx2.send(Event::Data(t, v1)),) + } + Event::Watermark(t) => { + tokio::join!(tx1.send(Event::Watermark(t)), tx2.send(Event::Watermark(t))) + } + Event::Snapshot(i) => { + tokio::join!(tx1.send(Event::Snapshot(i)), tx2.send(Event::Snapshot(i))) + } + Event::Sentinel => { + tokio::join!(tx1.send(Event::Sentinel), tx2.send(Event::Sentinel)) + } + }; + l.unwrap(); + r.unwrap(); + } + }); + (Self(rx1), Self(rx2)) + } + + async fn recv(&mut self) -> Event { + self.0.recv().await.unwrap() + } +} diff --git a/arc-lang/crates/runtime/builtins/src/string.rs b/arc-lang/crates/runtime/builtins/src/string.rs new file mode 100644 index 000000000..610006300 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/string.rs @@ -0,0 +1,174 @@ +use formats::Decode; +use formats::Encode; +use macros::DeepClone; +use macros::Send; +use macros::Unpin; + +use serde::de::DeserializeOwned; +use serde::Deserialize; +use serde::Serialize; + +use crate::cow::Cow; +use crate::encoding::Encoding; +use crate::traits::DeepClone; +use crate::vec::Vec; + +#[derive(Clone, DeepClone, Send, Hash, Eq, PartialEq, Ord, PartialOrd, Debug, Unpin)] +#[repr(C)] +pub enum String { + Text(&'static str), + Heap(Cow), +} + +impl Serialize for String { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + match self { + String::Text(s) => s.serialize(serializer), + String::Heap(s) => s.serialize(serializer), + } + } +} + +impl<'de> Deserialize<'de> for String { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + let s = ::deserialize(deserializer)?; + Ok(String::from(s)) + } +} + +impl std::fmt::Display for String { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, r#""{}""#, self.as_ref()) + } +} + +impl DeepClone for std::string::String { + fn deep_clone(&self) -> Self { + self.clone() + } +} + +impl AsRef for String { + fn as_ref(&self) -> &str { + match self { + String::Text(s) => s, + String::Heap(s) => s.as_ref(), + } + } +} + +impl String { + pub fn new() -> String { + String::Text("") + } + + pub fn with_capacity(capacity: usize) -> String { + String::from(std::string::String::with_capacity(capacity)) + } + + fn update(&mut self, f: impl FnOnce(&mut std::string::String) -> O) -> O { + match self { + String::Text(s) => { + let mut s = std::string::String::from(*s); + let o = f(&mut s); + *self = String::Heap(Cow::new(s)); + o + } + String::Heap(s) => s.update(f), + } + } + + pub fn push(mut self, ch: char) -> Self { + self.update(|s| s.push(ch)); + self + } + + pub fn push_string(mut self, other: String) -> Self { + self.update(|s| s.push_str(other.as_ref())); + self + } + + pub fn remove(mut self, idx: usize) -> (Self, char) { + let c = self.update(|s| s.remove(idx)); + (self, c) + } + + pub fn insert(mut self, idx: usize, ch: char) -> Self { + self.update(|s| s.insert(idx, ch)); + self + } + + pub fn is_empty(self) -> bool { + self.as_ref().is_empty() + } + + pub fn split_off(mut self, at: usize) -> (Self, String) { + let s = self.update(|s| String::from(s.split_off(at))); + (self, s) + } + + pub fn lines(self) -> Vec { + self.as_ref() + .lines() + .map(|s| String::from(s.to_string())) + .collect::>() + .into() + } + + pub fn clear(mut self) -> Self { + self.update(|s| s.clear()); + self + } + + pub fn len(self) -> usize { + self.as_ref().len() + } + + pub fn decode(self, encoding: Encoding) -> T { + match encoding { + Encoding::Csv { sep } => formats::csv::de::Reader::<1024>::new(sep) + .decode(self.as_ref().as_bytes()) + .unwrap(), + Encoding::Json => formats::json::de::Reader::new() + .decode(self.as_ref().as_bytes()) + .unwrap(), + } + } + + pub fn encode(value: T, encoding: Encoding) -> Self { + let mut output = std::vec::Vec::new(); + match encoding { + Encoding::Csv { sep } => formats::csv::ser::Writer::new(sep) + .encode(&value, &mut output) + .unwrap(), + Encoding::Json => formats::json::ser::Writer::new() + .encode(&value, &mut output) + .unwrap(), + }; + String::from(std::string::String::from_utf8(output).unwrap()) + } +} + +impl<'a> From<&'a str> for String { + fn from(s: &'a str) -> Self { + String::from(s.to_string()) + } +} + +impl From for String { + fn from(i: i32) -> Self { + String::from(i.to_string()) + } +} + +impl From for String { + fn from(s: std::string::String) -> Self { + String::Heap(Cow::new(s)) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/time.rs b/arc-lang/crates/runtime/builtins/src/time.rs new file mode 100644 index 000000000..640bd3e16 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/time.rs @@ -0,0 +1,92 @@ +use crate::traits::DeepClone; +use serde::Deserialize; +use serde::Deserializer; +use serde::Serialize; +use serde::Serializer; +use time::format_description::well_known; + +use super::string::String; + +#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] +#[repr(C)] +pub struct Time(pub time::OffsetDateTime); + +const EU: &[time::format_description::FormatItem<'_>] = + time::macros::format_description!(version = 2, "[year]-[month]-[day] [hour]:[minute]:[second]"); + +const US: &[time::format_description::FormatItem<'_>] = time::macros::format_description!( + version = 2, + "[month]/[day]/[year] [hour]:[minute]:[second] [period case:upper]" +); + +impl Serialize for Time { + fn serialize(&self, s: S) -> Result { + let v = time::OffsetDateTime::format(self.0, &well_known::Iso8601::DEFAULT) + .map_err(serde::ser::Error::custom)?; + v.serialize(s) + } +} + +impl<'de> Deserialize<'de> for Time { + fn deserialize>(d: D) -> Result { + let s: std::string::String = Deserialize::deserialize(d)?; + match time::PrimitiveDateTime::parse(s.as_ref(), &well_known::Iso8601::DEFAULT) + .or_else(|_| time::PrimitiveDateTime::parse(s.as_ref(), &well_known::Rfc2822)) + .or_else(|_| time::PrimitiveDateTime::parse(s.as_ref(), &well_known::Rfc3339)) + .or_else(|_| time::PrimitiveDateTime::parse(s.as_ref(), &EU)) + .or_else(|_| time::PrimitiveDateTime::parse(s.as_ref(), &US)) + .map_err(serde::de::Error::custom) + { + Ok(v) => Ok(Time(v.assume_utc())), + Err(e) => s + .as_str() + .parse() + .ok() + .and_then(|v| time::OffsetDateTime::from_unix_timestamp(v).ok()) + .map(|v| Time(v)) + .ok_or(e), + } + } +} + +impl DeepClone for Time { + fn deep_clone(&self) -> Self { + Time(self.0) + } +} + +impl Time { + pub fn now() -> Time { + Time(time::OffsetDateTime::now_utc()) + } + + pub fn from_seconds(seconds: i64) -> Time { + Time(time::OffsetDateTime::from_unix_timestamp(seconds).unwrap()) + } + + pub fn from_nanoseconds(nanoseconds: i128) -> Time { + Time(time::OffsetDateTime::from_unix_timestamp_nanos(nanoseconds).unwrap()) + } + + pub fn from_string(text: String, format: String) -> Time { + let format = time::format_description::parse_owned::<2>(format.as_ref()).unwrap(); + Time(time::OffsetDateTime::parse(text.as_ref(), &format).unwrap()) + } + + pub fn seconds(self) -> i64 { + self.0.unix_timestamp() + } + + pub fn nanoseconds(self) -> i128 { + self.0.unix_timestamp_nanos() + } + + pub fn year(self) -> i32 { + self.0.year() as i32 + } + + pub fn to_text(self, format: String) -> String { + let format = time::format_description::parse_owned::<2>(format.as_ref()).unwrap(); + String::from(self.0.format(&format).unwrap().as_str()) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/time_source.rs b/arc-lang/crates/runtime/builtins/src/time_source.rs new file mode 100644 index 000000000..520bee3a9 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/time_source.rs @@ -0,0 +1,35 @@ +use serde::Deserialize; +use serde::Serialize; + +use crate::duration::Duration; +use crate::time::Time; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[repr(C)] +pub enum TimeSource { + Ingestion { + watermark_interval: Duration, + }, + Event { + extractor: F, + watermark_interval: Duration, + slack: Duration, + }, +} + +impl TimeSource Time> { + pub fn ingestion(watermark_interval: Duration) -> Self { + Self::Ingestion { watermark_interval } + } + pub fn event( + extractor: fn(T) -> Time, + watermark_interval: Duration, + slack: Duration, + ) -> Self { + Self::Event { + extractor, + watermark_interval, + slack, + } + } +} diff --git a/arc-lang/crates/runtime/builtins/src/traits.rs b/arc-lang/crates/runtime/builtins/src/traits.rs new file mode 100644 index 000000000..87743d9c8 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/traits.rs @@ -0,0 +1,83 @@ +use serde::Deserialize; +use serde::Serialize; +use std::fmt::Debug; +use std::hash::Hash; + +pub trait Data: + DeepClone + Clone + Send + Serialize + for<'a> Deserialize<'a> + Unpin + Debug + 'static +{ +} +impl Data for T where + T: DeepClone + Clone + Send + Serialize + for<'a> Deserialize<'a> + Unpin + Debug + 'static +{ +} + +pub trait Key: Data + Eq + PartialEq + Hash {} +impl Key for T where T: Data + Eq + PartialEq + Hash {} + +pub trait DeepClone: Clone { + fn deep_clone(&self) -> Self; +} + +macro_rules! impl_deep_clone_tuple { + { $h:ident $(, $t:ident)* } => { + impl<$h: DeepClone, $($t: DeepClone),*> DeepClone for ($h, $($t,)*) { + #[allow(non_snake_case)] + fn deep_clone(&self) -> Self { + let ($h, $($t,)*) = self; + ($h.deep_clone(), $($t.deep_clone(),)*) + } + } + impl_deep_clone_tuple! { $($t),* } + }; + {} => {} +} + +impl_deep_clone_tuple!(A, B, C, D, E, F, G, H); + +impl DeepClone for std::rc::Rc { + fn deep_clone(&self) -> Self { + std::rc::Rc::new(self.as_ref().deep_clone()) + } +} + +impl DeepClone for std::sync::Arc { + fn deep_clone(&self) -> Self { + std::sync::Arc::new(self.as_ref().deep_clone()) + } +} + +impl DeepClone for std::vec::Vec { + fn deep_clone(&self) -> Self { + self.iter().map(|x| x.deep_clone()).collect() + } +} + +macro_rules! impl_deep_clone_scalar { + { $t:ty } => { + impl DeepClone for $t { + fn deep_clone(&self) -> Self { + *self + } + } + }; +} + +impl_deep_clone_scalar! { () } +impl_deep_clone_scalar! { bool } +impl_deep_clone_scalar! { i8 } +impl_deep_clone_scalar! { i16 } +impl_deep_clone_scalar! { i32 } +impl_deep_clone_scalar! { i64 } +impl_deep_clone_scalar! { i128 } +impl_deep_clone_scalar! { isize } +impl_deep_clone_scalar! { u8 } +impl_deep_clone_scalar! { u16 } +impl_deep_clone_scalar! { u32 } +impl_deep_clone_scalar! { u64 } +impl_deep_clone_scalar! { u128 } +impl_deep_clone_scalar! { usize } +impl_deep_clone_scalar! { f32 } +impl_deep_clone_scalar! { f64 } +impl_deep_clone_scalar! { char } +impl_deep_clone_scalar! { &'static str } diff --git a/arc-lang/crates/runtime/builtins/src/url.rs b/arc-lang/crates/runtime/builtins/src/url.rs new file mode 100644 index 000000000..1eeb84dc6 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/url.rs @@ -0,0 +1,22 @@ +use serde::Deserialize; +use serde::Serialize; + +use crate::result::Result; +use crate::string::String; + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] +#[repr(C)] +pub struct Url(pub url::Url); + +impl Url { + pub fn parse(s: String) -> Result { + match url::Url::parse(s.as_ref()) { + Ok(v) => Result::ok(Url(v)), + Err(s) => Result::error(s.to_string().into()), + } + } + + pub fn to_string(self) -> String { + String::from(self.0.to_string()) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/vec.rs b/arc-lang/crates/runtime/builtins/src/vec.rs new file mode 100644 index 000000000..22f51b3b6 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/vec.rs @@ -0,0 +1,112 @@ +use macros::Send; +use macros::Sync; +use macros::Unpin; +use serde::Deserialize; +use serde::Serialize; + +use crate::cow::Cow; +use crate::iterator::Iter; +use crate::option::Option; +use crate::traits::DeepClone; + +#[derive(Clone, Debug, Send, Sync, Unpin, Serialize, Deserialize, Eq, PartialEq, Hash, Ord, PartialOrd)] +#[repr(C)] +pub struct Vec(pub Cow>); + +impl DeepClone for Vec { + fn deep_clone(&self) -> Self { + Self(self.0.deep_clone()) + } +} + +impl std::ops::Index for Vec { + type Output = T; + + fn index(&self, index: usize) -> &Self::Output { + &self.0[index] + } +} + +impl Vec { + /// Returns an iterator over the slice. + pub fn iter(self) -> Iter + Clone> + where + T: Clone, + { + Iter::new(self.0.take().into_iter()) + } + + pub fn new() -> Vec { + Vec(Cow::new(std::vec::Vec::::new())) + } + + pub fn len(self) -> usize { + self.0.len() + } + + pub fn push(mut self, value: T) -> Self + where + T: Clone, + { + self.0.update(|this| this.push(value)); + self + } + + pub fn pop(mut self) -> (Self, Option) + where + T: Clone, + { + let x = self.0.update(|this| this.pop()); + (self, Option::from(x)) + } + + pub fn remove(mut self, index: usize) -> (Self, T) + where + T: Clone, + { + let x = self.0.update(|this| this.remove(index)); + (self, x) + } + + pub fn get(self, index: usize) -> Option + where + T: Clone, + { + Option::from(self.0.get(index).map(|x| x.clone())) + } + + pub fn insert(mut self, index: usize, value: T) -> Self + where + T: Clone, + { + self.0.update(|this| this.insert(index, value)); + self + } + + pub fn is_empty(self) -> bool { + self.0.is_empty() + } + + pub fn sort(mut self) -> Self + where + T: Clone + PartialOrd, + { + self.0 + .update(|this| this.sort_by(|a, b| a.partial_cmp(b).unwrap())); + self + } + + pub fn truncate(mut self, len: usize) -> Self + where + T: Clone, + { + self.0.update(|this| this.truncate(len)); + self + } +} + +impl From> for Vec { + fn from(vec: std::vec::Vec) -> Self { + Vec(Cow::new(vec)) + } +} diff --git a/arc-lang/crates/runtime/builtins/src/writer.rs b/arc-lang/crates/runtime/builtins/src/writer.rs new file mode 100644 index 000000000..c6d57edc0 --- /dev/null +++ b/arc-lang/crates/runtime/builtins/src/writer.rs @@ -0,0 +1,38 @@ +#![allow(unused)] +use serde::Deserialize; +use serde::Serialize; + +use crate::path::Path; +use crate::socket::SocketAddr; +use crate::stream::Stream; +use crate::string::String; +use crate::traits::Data; +use crate::url::Url; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[repr(C)] +pub enum Writer { + Stdout, + File { path: Path }, + Http { url: Url }, + Tcp { addr: SocketAddr }, + Kafka { addr: SocketAddr, topic: String }, +} + +impl Writer { + pub fn stdout() -> Self { + Self::Stdout + } + pub fn file(path: Path) -> Self { + Self::File { path } + } + pub fn http(url: Url) -> Self { + Self::Http { url } + } + pub fn tcp(addr: SocketAddr) -> Self { + Self::Tcp { addr } + } + pub fn kafka(addr: SocketAddr, topic: String) -> Self { + Self::Kafka { addr, topic } + } +} diff --git a/arc-lang/crates/runtime/formats/Cargo.toml b/arc-lang/crates/runtime/formats/Cargo.toml new file mode 100644 index 000000000..7e5276a2c --- /dev/null +++ b/arc-lang/crates/runtime/formats/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "formats" +version.workspace = true +edition.workspace = true + +[dependencies] +atoi.workspace = true +csv-core.workspace = true +itoa.workspace = true +lexical-parse-float.workspace = true +ryu.workspace = true +serde.workspace = true +serde_json.workspace = true +tracing.workspace = true diff --git a/arc-lang/crates/runtime/formats/src/csv/de.rs b/arc-lang/crates/runtime/formats/src/csv/de.rs new file mode 100644 index 000000000..66c9c23ce --- /dev/null +++ b/arc-lang/crates/runtime/formats/src/csv/de.rs @@ -0,0 +1,467 @@ +use serde::de::DeserializeSeed; +use serde::Deserialize; + +use crate::Decode; + +pub struct Reader { + inner: csv_core::Reader, + buffer: [u8; N], +} + +struct Deserializer<'a, const N: usize> { + reader: &'a mut Reader, + input: &'a [u8], + nread: usize, + record_end: bool, + peeked: Option, +} + +impl Reader { + #[allow(clippy::new_without_default)] + pub fn new(sep: char) -> Self { + Self { + inner: csv_core::ReaderBuilder::new().delimiter(sep as u8).build(), + buffer: [0; N], + } + } +} +impl Decode for Reader { + type Error = Error; + fn decode<'de, T>(&mut self, input: &'de [u8]) -> Result + where + T: Deserialize<'de>, + { + let mut deserializer = Deserializer::new(self, input); + T::deserialize(&mut deserializer) + } +} + +#[derive(Debug, PartialEq, Eq)] +pub enum Error { + /// Buffer overflow. + Overflow, + /// Expected an empty field. + ExpectedEmpty, + /// Invalid boolean value. Expected either `true` or `false`. + InvalidBool(String), + /// Invalid integer. + InvalidInt(String), + /// Invalid floating-point number. + InvalidFloat(lexical_parse_float::Error), + /// Invalid UTF-8 encoded character. + InvalidChar(String), + /// Invalid UTF-8 encoded string. + InvalidStr(std::str::Utf8Error), + /// Invalid UTF-8 encoded string. + InvalidString(std::string::FromUtf8Error), + /// Error with a custom message had to be discard. + Custom(String), +} + +pub type Result = std::result::Result; + +impl std::fmt::Display for Error { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::Overflow => write!(f, "Buffer overflow."), + Self::ExpectedEmpty => write!(f, "Expected an empty field."), + Self::InvalidBool(s) => write!(f, "Invalid bool: {s}"), + Self::InvalidInt(s) => write!(f, "Invalid integer: {s}"), + Self::InvalidFloat(e) => write!(f, "Invalid float: {e}"), + Self::InvalidChar(s) => write!(f, "Invalid character: {s}"), + Self::InvalidStr(e) => write!(f, "Invalid string: {e}"), + Self::InvalidString(e) => write!(f, "Invalid string: {e}"), + Self::Custom(s) => write!(f, "CSV does not match deserializer's expected format: {s}"), + } + } +} + +impl serde::de::StdError for Error {} + +impl serde::de::Error for Error { + fn custom(msg: T) -> Self { + Self::Custom(msg.to_string()) + } +} + +impl<'a, const N: usize> Deserializer<'a, N> { + pub fn new(reader: &'a mut Reader, input: &'a [u8]) -> Self { + Self { + reader, + input, + nread: 0, + record_end: false, + peeked: None, + } + } + + /// Read a single field from the CSV input. + fn advance(&mut self) -> Result { + let (result, r, w) = self + .reader + .inner + .read_field(&self.input[self.nread..], &mut self.reader.buffer); + self.nread += r; + match result { + csv_core::ReadFieldResult::InputEmpty => {} + csv_core::ReadFieldResult::OutputFull => return Err(Error::Overflow), + csv_core::ReadFieldResult::Field { record_end } => self.record_end = record_end, + csv_core::ReadFieldResult::End => {} + } + Ok(w) + } + + fn peek_bytes(&mut self) -> Result<&[u8]> { + let len = match self.peeked { + Some(len) => len, + None => { + let len = self.advance()?; + self.peeked = Some(len); + len + } + }; + Ok(&self.reader.buffer[..len]) + } + + fn read_bytes(&mut self) -> Result<&[u8]> { + let len = match self.peeked.take() { + Some(len) => len, + None => self.advance()?, + }; + Ok(&self.reader.buffer[..len]) + } + + fn read_int(&mut self) -> Result { + let bytes = self.read_bytes()?; + atoi::atoi(bytes) + .ok_or_else(|| Error::InvalidInt(std::str::from_utf8(bytes).unwrap().to_string())) + } + + fn read_float(&mut self) -> Result { + T::from_lexical(self.read_bytes()?) + .map_err(|e: lexical_parse_float::Error| Error::InvalidFloat(e)) + } + + fn read_bool(&mut self) -> Result { + let bytes = self.read_bytes()?; + match bytes { + b"true" => Ok(true), + b"false" => Ok(false), + _ => Err(Error::InvalidBool( + std::str::from_utf8(bytes).unwrap().to_string(), + )), + } + } + + fn read_char(&mut self) -> Result { + let str = self.read_str()?; + let mut iter = str.chars(); + let c = iter + .next() + .ok_or_else(|| Error::InvalidChar(str.to_string()))?; + if iter.next().is_some() { + return Err(Error::InvalidChar(str.to_string())); + } else { + Ok(c) + } + } + + fn read_str(&mut self) -> Result<&str> { + std::str::from_utf8(self.read_bytes()?) + .map_err(|e: std::str::Utf8Error| Error::InvalidStr(e)) + } + + fn read_string(&mut self) -> Result { + std::string::String::from_utf8(self.read_bytes()?.to_vec()) + .map_err(|e| Error::InvalidString(e)) + } +} + +impl<'de, 'a, 'b, const N: usize> serde::de::Deserializer<'de> for &'a mut Deserializer<'b, N> { + type Error = Error; + + fn deserialize_any(self, _visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + unreachable!("`Deserializer::deserialize_any` is not supported") + } + + fn deserialize_bool(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_bool(self.read_bool()?) + } + + fn deserialize_i8(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_i8(self.read_int()?) + } + + fn deserialize_i16(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_i16(self.read_int()?) + } + + fn deserialize_i32(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_i32(self.read_int()?) + } + + fn deserialize_i64(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_i64(self.read_int()?) + } + + fn deserialize_u8(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_u8(self.read_int()?) + } + + fn deserialize_u16(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_u16(self.read_int()?) + } + + fn deserialize_u32(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_u32(self.read_int()?) + } + + fn deserialize_u64(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_u64(self.read_int()?) + } + + fn deserialize_f32(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_f32(self.read_float()?) + } + + fn deserialize_f64(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_f64(self.read_float()?) + } + + fn deserialize_char(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_char(self.read_char()?) + } + + fn deserialize_str(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_str(self.read_str()?) + } + + fn deserialize_string(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_string(self.read_string()?) + } + + fn deserialize_bytes(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_bytes(self.read_bytes()?) + } + + fn deserialize_byte_buf(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_byte_buf(self.read_bytes()?.to_vec()) + } + + fn deserialize_option(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + if self.peek_bytes()?.is_empty() { + visitor.visit_none() + } else { + visitor.visit_some(self) + } + } + + fn deserialize_unit(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + if !self.read_bytes()?.is_empty() { + return Err(Error::ExpectedEmpty); + } + visitor.visit_unit() + } + + fn deserialize_unit_struct(self, _name: &'static str, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + self.deserialize_unit(visitor) + } + + fn deserialize_newtype_struct(self, _name: &'static str, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_newtype_struct(self) + } + + fn deserialize_seq(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_tuple(self, _len: usize, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_tuple_struct( + self, + _name: &'static str, + _len: usize, + visitor: V, + ) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_map(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_struct( + self, + _name: &'static str, + _fields: &'static [&'static str], + visitor: V, + ) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_seq(self) + } + + fn deserialize_enum( + self, + _name: &'static str, + _variants: &'static [&'static str], + visitor: V, + ) -> Result + where + V: serde::de::Visitor<'de>, + { + visitor.visit_enum(self) + } + + fn deserialize_identifier(self, _visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + unimplemented!("`Deserializer::deserialize_identifier` is not supported"); + } + + fn deserialize_ignored_any(self, visitor: V) -> Result + where + V: serde::de::Visitor<'de>, + { + let _ = self.read_bytes()?; + visitor.visit_unit() + } +} + +impl<'de, 'a, 'b, const N: usize> serde::de::VariantAccess<'de> for &'a mut Deserializer<'b, N> { + type Error = Error; + + fn unit_variant(self) -> Result<()> { + Ok(()) + } + + fn newtype_variant_seed>(self, _seed: U) -> Result { + unimplemented!("`VariantAccess::newtype_variant_seed` is not implemented"); + } + + fn tuple_variant>( + self, + _len: usize, + _visitor: V, + ) -> Result { + unimplemented!("`VariantAccess::tuple_variant` is not implemented"); + } + + fn struct_variant>( + self, + _fields: &'static [&'static str], + _visitor: V, + ) -> Result { + unimplemented!("`VariantAccess::struct_variant` is not implemented"); + } +} + +impl<'de, 'a, 'b, const N: usize> serde::de::EnumAccess<'de> for &'a mut Deserializer<'b, N> { + type Error = Error; + + type Variant = Self; + + fn variant_seed(self, seed: V) -> Result<(V::Value, Self::Variant)> + where + V: DeserializeSeed<'de>, + { + use serde::de::IntoDeserializer; + let variant_name = self.read_bytes()?; + seed.deserialize(variant_name.into_deserializer()) + .map(|v| (v, self)) + } +} + +impl<'de, 'a, 'b, const N: usize> serde::de::SeqAccess<'de> for &'a mut Deserializer<'b, N> { + type Error = Error; + + fn next_element_seed(&mut self, seed: V) -> Result> + where + V: DeserializeSeed<'de>, + { + if self.record_end { + Ok(None) + } else { + seed.deserialize(&mut **self).map(Some) + } + } +} diff --git a/arc-lang/crates/runtime/formats/src/csv/ser.rs b/arc-lang/crates/runtime/formats/src/csv/ser.rs new file mode 100644 index 000000000..2edde9be6 --- /dev/null +++ b/arc-lang/crates/runtime/formats/src/csv/ser.rs @@ -0,0 +1,443 @@ +use serde::ser; +use serde::Serialize; + +use crate::Encode; + +pub struct Writer { + inner: csv_core::Writer, +} + +impl Writer { + #[allow(clippy::new_without_default)] + pub fn new(sep: char) -> Self { + Self { + inner: csv_core::WriterBuilder::new().delimiter(sep as u8).build(), + } + } +} + +impl Encode for Writer { + type Error = Error; + fn encode(&mut self, value: &T, output: &mut Vec) -> Result + where + T: Serialize + ?Sized, + { + let mut nwritten = 0; + + let mut serializer = Serializer::new(&mut self.inner, output); + value.serialize(&mut serializer)?; + nwritten += serializer.nwritten; + + let (result, n) = self.inner.terminator(&mut output[nwritten..]); + if result == csv_core::WriteResult::OutputFull { + return Err(Error::Overflow); + } + nwritten += n; + + Ok(nwritten) + } + + fn content_type(&self) -> &'static str { + "text/csv" + } +} + +/// This type represents all possible errors that can occur when serializing CSV data. +#[derive(Debug, PartialEq, Eq)] +pub enum Error { + /// Buffer overflow. + Overflow, +} + +pub type Result = std::result::Result; + +impl std::fmt::Display for Error { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Self::Overflow => write!(f, "Buffer overflow"), + } + } +} + +impl serde::ser::StdError for Error {} + +impl serde::ser::Error for Error { + fn custom(_msg: T) -> Self + where + T: std::fmt::Display, + { + unimplemented!("custom is not supported") + } +} + +/// A structure for serializing Rust values into CSV. +pub struct Serializer<'a> { + writer: &'a mut csv_core::Writer, + output: &'a mut [u8], + nwritten: usize, +} + +impl<'a> Serializer<'a> { + /// Creates a new CSV serializer. + pub fn new(writer: &'a mut csv_core::Writer, output: &'a mut [u8]) -> Self { + Self { + writer, + output, + nwritten: 0, + } + } + + fn field(&mut self, input: impl AsRef<[u8]>) -> Result<()> { + let (r, _, n) = self + .writer + .field(input.as_ref(), &mut self.output[self.nwritten..]); + self.nwritten += n; + if r == csv_core::WriteResult::OutputFull { + return Err(Error::Overflow); + } + Ok(()) + } + + fn delimiter(&mut self) -> Result<()> { + let (r, n) = self.writer.delimiter(&mut self.output[self.nwritten..]); + self.nwritten += n; + if r == csv_core::WriteResult::OutputFull { + return Err(Error::Overflow); + } + Ok(()) + } +} + +impl<'a, 'b> ser::Serializer for &'a mut Serializer<'b> { + type Ok = (); + + type Error = Error; + + type SerializeSeq = Compound<'a, 'b>; + + type SerializeTuple = Compound<'a, 'b>; + + type SerializeTupleStruct = Compound<'a, 'b>; + + type SerializeTupleVariant = Unreachable; + + type SerializeMap = Unreachable; + + type SerializeStruct = Compound<'a, 'b>; + + type SerializeStructVariant = Unreachable; + + fn serialize_bool(self, v: bool) -> Result { + if v { + self.field(b"true") + } else { + self.field(b"false") + } + } + + fn serialize_i8(self, v: i8) -> Result { + self.field(itoa::Buffer::new().format(v)) + } + + fn serialize_i16(self, v: i16) -> Result { + self.field(itoa::Buffer::new().format(v)) + } + + fn serialize_i32(self, v: i32) -> Result { + self.field(itoa::Buffer::new().format(v)) + } + + fn serialize_i64(self, v: i64) -> Result { + self.field(itoa::Buffer::new().format(v)) + } + + fn serialize_u8(self, v: u8) -> Result { + self.field(itoa::Buffer::new().format(v)) + } + + fn serialize_u16(self, v: u16) -> Result { + self.field(itoa::Buffer::new().format(v)) + } + + fn serialize_u32(self, v: u32) -> Result { + self.field(itoa::Buffer::new().format(v)) + } + + fn serialize_u64(self, v: u64) -> Result { + self.field(itoa::Buffer::new().format(v)) + } + + fn serialize_f32(self, v: f32) -> Result { + self.field(ryu::Buffer::new().format(v)) + } + + fn serialize_f64(self, v: f64) -> Result { + self.field(ryu::Buffer::new().format(v)) + } + + fn serialize_char(self, v: char) -> Result { + self.field(v.encode_utf8(&mut [0; 4])) + } + + fn serialize_str(self, v: &str) -> Result { + self.field(v) + } + + fn serialize_bytes(self, v: &[u8]) -> Result { + self.field(v) + } + + fn serialize_none(self) -> Result { + self.field([]) + } + + fn serialize_some(self, value: &T) -> Result + where + T: ser::Serialize, + { + value.serialize(self) + } + + fn serialize_unit(self) -> Result { + self.field([]) + } + + fn serialize_unit_struct(self, name: &'static str) -> Result { + self.field(name) + } + + fn serialize_unit_variant( + self, + _name: &'static str, + _variant_index: u32, + variant: &'static str, + ) -> Result { + self.field(variant) + } + + fn serialize_newtype_struct(self, _name: &'static str, value: &T) -> Result + where + T: ser::Serialize, + { + value.serialize(self) + } + + fn serialize_newtype_variant( + self, + _name: &'static str, + _variant_index: u32, + _variant: &'static str, + value: &T, + ) -> Result + where + T: ser::Serialize, + { + value.serialize(self) + } + + fn serialize_seq(self, _len: Option) -> Result { + Ok(Compound::new(self)) + } + + fn serialize_tuple(self, _len: usize) -> Result { + Ok(Compound::new(self)) + } + + fn serialize_tuple_struct( + self, + _name: &'static str, + _len: usize, + ) -> Result { + Ok(Compound::new(self)) + } + + fn serialize_tuple_variant( + self, + _name: &'static str, + _variant_index: u32, + _variant: &'static str, + _len: usize, + ) -> Result { + unimplemented!("`Serializer::serialize_tuple_variant` is not supported"); + } + + fn serialize_map(self, _len: Option) -> Result { + unimplemented!("`Serializer::serialize_map` is not supported"); + } + + fn serialize_struct(self, _name: &'static str, _len: usize) -> Result { + Ok(Compound::new(self)) + } + + fn serialize_struct_variant( + self, + _name: &'static str, + _variant_index: u32, + _variant: &'static str, + _len: usize, + ) -> Result { + unimplemented!("`Serializer::serialize_struct_variant` is not supported"); + } + + fn collect_str(self, _value: &T) -> Result + where + T: std::fmt::Display, + { + unimplemented!("`Serializer::collect_str` is not supported"); + } +} + +#[doc(hidden)] +pub struct Compound<'a, 'b> { + serializer: &'a mut Serializer<'b>, + nfields: usize, +} + +impl<'a, 'b> Compound<'a, 'b> { + fn new(serializer: &'a mut Serializer<'b>) -> Self { + Self { + serializer, + nfields: 0, + } + } + + fn element(&mut self, value: &T) -> Result<()> + where + T: ser::Serialize, + { + if self.nfields > 0 { + self.serializer.delimiter()?; + } + self.nfields += 1; + value.serialize(&mut *self.serializer) + } +} + +impl ser::SerializeSeq for Compound<'_, '_> { + type Ok = (); + + type Error = Error; + + fn serialize_element(&mut self, value: &T) -> Result<()> + where + T: ser::Serialize, + { + self.element(value) + } + + fn end(self) -> Result { + Ok(()) + } +} + +impl ser::SerializeTuple for Compound<'_, '_> { + type Ok = (); + + type Error = Error; + + fn serialize_element(&mut self, value: &T) -> Result<()> + where + T: ser::Serialize, + { + self.element(value) + } + + fn end(self) -> Result { + Ok(()) + } +} + +impl ser::SerializeTupleStruct for Compound<'_, '_> { + type Ok = (); + + type Error = Error; + + fn serialize_field(&mut self, value: &T) -> Result<()> + where + T: ser::Serialize, + { + self.element(value) + } + + fn end(self) -> Result { + Ok(()) + } +} + +impl ser::SerializeStruct for Compound<'_, '_> { + type Ok = (); + + type Error = Error; + + fn serialize_field(&mut self, _key: &'static str, value: &T) -> Result<()> + where + T: ser::Serialize, + { + self.element(value) + } + + fn end(self) -> Result { + Ok(()) + } +} + +#[doc(hidden)] +pub struct Unreachable; + +impl ser::SerializeTupleVariant for Unreachable { + type Ok = (); + + type Error = Error; + + fn serialize_field(&mut self, _value: &T) -> Result<()> + where + T: ser::Serialize, + { + unreachable!() + } + + fn end(self) -> Result { + unreachable!() + } +} + +impl ser::SerializeMap for Unreachable { + type Ok = (); + + type Error = Error; + + fn serialize_key(&mut self, _key: &T) -> Result<()> + where + T: ser::Serialize, + { + unreachable!() + } + + fn serialize_value(&mut self, _value: &T) -> Result<()> + where + T: ser::Serialize, + { + unreachable!() + } + + fn end(self) -> Result { + unreachable!() + } +} + +impl ser::SerializeStructVariant for Unreachable { + type Ok = (); + + type Error = Error; + + fn serialize_field(&mut self, _key: &'static str, _value: &T) -> Result<()> + where + T: ser::Serialize, + { + unreachable!() + } + + fn end(self) -> Result { + unreachable!() + } +} diff --git a/arc-lang/crates/runtime/formats/src/json/de.rs b/arc-lang/crates/runtime/formats/src/json/de.rs new file mode 100644 index 000000000..ce17fe307 --- /dev/null +++ b/arc-lang/crates/runtime/formats/src/json/de.rs @@ -0,0 +1,25 @@ +use serde_json::Deserializer; + +use crate::Decode; + +pub struct Reader {} + +impl Reader { + pub fn new() -> Self { + Self {} + } +} + +impl Decode for Reader { + type Error = serde_json::Error; + + fn decode<'de, T>(&mut self, input: &'de [u8]) -> Result + where + T: serde::Deserialize<'de>, + { + let mut deserializer = Deserializer::from_slice(input); + let value = T::deserialize(&mut deserializer)?; + deserializer.end()?; + Ok(value) + } +} diff --git a/arc-lang/crates/runtime/formats/src/json/ser.rs b/arc-lang/crates/runtime/formats/src/json/ser.rs new file mode 100644 index 000000000..44c5327cb --- /dev/null +++ b/arc-lang/crates/runtime/formats/src/json/ser.rs @@ -0,0 +1,26 @@ +use crate::Encode; + +pub struct Writer {} + +impl Writer { + pub fn new() -> Self { + Self {} + } +} + +impl Encode for Writer { + type Error = serde_json::Error; + + fn encode(&mut self, input: &T, output: &mut Vec) -> Result + where + T: serde::Serialize + ?Sized, + { + let mut serializer = serde_json::Serializer::new(output); + input.serialize(&mut serializer)?; + Ok(1) + } + + fn content_type(&self) -> &'static str { + "application/json" + } +} diff --git a/arc-lang/crates/runtime/formats/src/lib.rs b/arc-lang/crates/runtime/formats/src/lib.rs new file mode 100644 index 000000000..c757e7435 --- /dev/null +++ b/arc-lang/crates/runtime/formats/src/lib.rs @@ -0,0 +1,27 @@ +use serde::Deserialize; +use serde::Serialize; + +pub mod csv { + pub mod de; + pub mod ser; +} + +pub mod json { + pub mod de; + pub mod ser; +} + +pub trait Decode { + type Error: std::error::Error; + fn decode<'de, T>(&mut self, input: &'de [u8]) -> Result + where + T: Deserialize<'de>; +} + +pub trait Encode { + type Error: std::error::Error; + fn encode(&mut self, input: &T, output: &mut Vec) -> Result + where + T: Serialize + ?Sized; + fn content_type(&self) -> &'static str; +} diff --git a/arc-runtime/macros/Cargo.lock b/arc-lang/crates/runtime/macros/Cargo.lock similarity index 100% rename from arc-runtime/macros/Cargo.lock rename to arc-lang/crates/runtime/macros/Cargo.lock diff --git a/arc-lang/crates/runtime/macros/Cargo.toml b/arc-lang/crates/runtime/macros/Cargo.toml new file mode 100644 index 000000000..570ca7949 --- /dev/null +++ b/arc-lang/crates/runtime/macros/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "macros" +version.workspace = true +edition.workspace = true + +[lib] +proc-macro = true + +[dependencies] +quote.workspace = true +syn.workspace = true +proc-macro2.workspace = true diff --git a/arc-lang/crates/runtime/macros/src/lib.rs b/arc-lang/crates/runtime/macros/src/lib.rs new file mode 100644 index 000000000..552018905 --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/lib.rs @@ -0,0 +1,37 @@ +use proc_macro::TokenStream; + +mod proc_macro_attrs; +mod proc_macro_derives; +mod proc_macros; +pub(crate) mod utils; + +#[proc_macro_derive(Send)] +pub fn derive_send(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_send(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +#[proc_macro_derive(Sync)] +pub fn derive_sync(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_sync(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +#[proc_macro_derive(Unpin)] +pub fn derive_unpin(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_unpin(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +#[proc_macro_derive(DeepClone)] +pub fn derive_deep_clone(input: TokenStream) -> TokenStream { + proc_macro_derives::derive_deep_clone(syn::parse_macro_input!(input as syn::DeriveInput)) +} + +/// Unwraps a value out of an enum-variant. Panics if it's the wrong variant. +#[proc_macro] +pub fn unwrap(input: TokenStream) -> TokenStream { + proc_macros::unwrap(input) +} + +#[proc_macro_attribute] +pub fn data(_attr: TokenStream, input: TokenStream) -> TokenStream { + proc_macro_attrs::data(syn::parse_macro_input!(input as syn::DeriveInput)) +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macro_attrs.rs b/arc-lang/crates/runtime/macros/src/proc_macro_attrs.rs new file mode 100644 index 000000000..e961b2d18 --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macro_attrs.rs @@ -0,0 +1,12 @@ +use proc_macro as pm; + +#[allow(unused)] +pub(crate) fn data(mut item: syn::DeriveInput) -> pm::TokenStream { + quote::quote! { + #[derive(Debug, Clone, Send, DeepClone, serde::Serialize, serde::Deserialize)] + #[serde(crate = "runtime::prelude::serde")] + #[serde(bound(deserialize = ""))] + #item + } + .into() +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macro_attrs/export/functions.rs b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/export/functions.rs new file mode 100644 index 000000000..7a728692d --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/export/functions.rs @@ -0,0 +1,33 @@ +use proc_macro as pm; +use quote::quote; + +pub(crate) fn export(_attr: syn::AttributeArgs, item: syn::ItemFn) -> pm::TokenStream { + let mut inputs = item.sig.inputs.clone().into_iter().collect::>(); + let fn_name = &item.sig.ident; + let name = crate::utils::new_id(format!("export_{}", fn_name)); + let output = &item.sig.output; + let (impl_generics, _, where_clause) = item.sig.generics.split_for_impl(); + let (ids, tys): (Vec<_>, Vec<_>) = inputs + .iter() + .map(|i| match i { + syn::FnArg::Receiver(_) => unreachable!(), + syn::FnArg::Typed(i) => (&i.pat, &i.ty), + }) + .unzip(); + if item.sig.asyncness.is_some() { + quote! { + #item + pub async fn #name #impl_generics ((#(#ids,)*):(#(#tys,)*)) #output #where_clause { + #fn_name(#(#ids,)*).await + } + } + } else { + quote! { + #item + pub fn #name #impl_generics ((#(#ids,)*):(#(#tys,)*)) #output #where_clause { + #fn_name(#(#ids,)*) + } + } + } + .into() +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macro_attrs/export/impls.rs b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/export/impls.rs new file mode 100644 index 000000000..832937fae --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/export/impls.rs @@ -0,0 +1,67 @@ +use proc_macro as pm; +use quote::quote; + +pub(crate) fn export(_attr: syn::AttributeArgs, item: syn::ItemImpl) -> pm::TokenStream { + let mut functions = Vec::new(); + let ty_name = if let syn::Type::Path(x) = item.self_ty.as_ref() { + &x.path.segments.last().unwrap().ident + } else { + unreachable!("Found non-path type in impl") + }; + let (_, ty_generics, _) = item.generics.split_for_impl(); + let impl_generics = &item.generics.params; + let where_clause = &item.generics.where_clause; + for item in &item.items { + if let syn::ImplItem::Method(item) = item { + let mut inputs = item.sig.inputs.clone().into_iter().collect::>(); + let method_name = &item.sig.ident; + let name = crate::utils::new_id(format!("{}_{}", ty_name, method_name)); + let output = &item.sig.output; + // Replace receiver with parameter + if let Some(syn::FnArg::Receiver(r)) = inputs.first() { + assert!(r.reference.is_none(), "Found reference to receiver"); + inputs[0] = syn::parse_quote!(self_param: #ty_name #ty_generics); + } + let (ids, tys): (Vec<_>, Vec<_>) = inputs + .iter() + .map(|i| match i { + syn::FnArg::Receiver(_) => unreachable!(), + syn::FnArg::Typed(i) => (&i.pat, &i.ty), + }) + .unzip(); + // Merge generics and predicates + let generics = match (&item.sig.generics.params, impl_generics) { + (gs0, gs1) if !gs0.is_empty() && !gs1.is_empty() => quote!(<#gs0, #gs1>), + (gs0, _) if !gs0.is_empty() => quote!(<#gs0>), + (_, gs1) if !gs1.is_empty() => quote!(<#gs1>), + _ => quote!(), + }; + let where_clause = match (where_clause, &item.sig.generics.where_clause) { + (Some(w0), Some(w1)) => quote!(where #w0, #w1), + (Some(w), None) | (None, Some(w)) => quote!(where #w), + (None, None) => quote!(), + }; + // Construct wrapper + let item = if item.sig.asyncness.is_some() { + quote! { + pub async fn #name #generics ((#(#ids,)*):(#(#tys,)*)) #output #where_clause { + #ty_name::#method_name(#(#ids,)*).await + } + } + } else { + quote! { + pub fn #name #generics (#(#ids: #tys,)*) #output #where_clause { + #ty_name::#method_name(#(#ids,)*) + } + } + }; + functions.push(item); + } + } + + quote::quote!( + #item + #(#functions)* + ) + .into() +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/enums.rs b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/enums.rs new file mode 100644 index 000000000..f545ffcc0 --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/enums.rs @@ -0,0 +1,25 @@ +use proc_macro as pm; +use quote::quote; + +#[allow(unused)] +pub(crate) fn rewrite(attr: syn::AttributeArgs, mut item: syn::ItemEnum) -> pm::TokenStream { + item.vis = syn::parse_quote!(pub); + item.generics.params.iter_mut().for_each(|g| { + if let syn::GenericParam::Type(t) = g { + t.bounds.push(syn::parse_quote!(Data)) + } + }); + + let (impl_generics, type_generics, where_clause) = item.generics.split_for_impl(); + + let variant_id = item.variants.iter().map(|v| &v.ident).collect::>(); + + quote!( + use prelude::*; + + #[derive(Clone, Debug, Unpin, Serialize, Deserialize)] + #[serde(bound = "")] + #item + ) + .into() +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/externs.rs b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/externs.rs new file mode 100644 index 000000000..fbf57656c --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/externs.rs @@ -0,0 +1,19 @@ +use proc_macro as pm; + +pub(crate) fn rewrite(attr: syn::AttributeArgs, mut item: syn::ItemFn) -> pm::TokenStream { + let unmangled: syn::Path = crate::utils::get_attr_val("unmangled", &attr); + let ids = item.sig.inputs.iter().map(|arg| { + if let syn::FnArg::Typed(p) = arg { + p.pat.as_ref() + } else { + unreachable!() + } + }); + item.sig.abi = None; + if item.sig.asyncness.is_some() { + item.block = syn::parse_quote!({ #unmangled(#(#ids),*).await }); + } else { + item.block = syn::parse_quote!({ #unmangled(#(#ids),*) }); + } + quote::quote!(#item).into() +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/functions.rs b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/functions.rs new file mode 100644 index 000000000..52305df82 --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/functions.rs @@ -0,0 +1,10 @@ +use proc_macro as pm; + +pub(crate) fn rewrite(_attr: syn::AttributeArgs, mut item: syn::ItemFn) -> pm::TokenStream { + item.sig.generics.params.iter_mut().for_each(|p| { + if let syn::GenericParam::Type(p) = p { + p.bounds.push(syn::parse_quote!(Data)); + } + }); + quote::quote!(#item).into() +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/main.rs b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/main.rs new file mode 100644 index 000000000..f1dec3927 --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/main.rs @@ -0,0 +1,5 @@ +use proc_macro as pm; + +pub(crate) fn rewrite(_attr: syn::AttributeArgs, _item: syn::ItemFn) -> pm::TokenStream { + todo!() +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/structs.rs b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/structs.rs new file mode 100644 index 000000000..66ab7ec4e --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macro_attrs/rewrite/structs.rs @@ -0,0 +1,51 @@ +use proc_macro as pm; +use quote::quote; + +#[allow(unused)] +pub(crate) fn rewrite(attr: syn::AttributeArgs, mut item: syn::ItemStruct) -> pm::TokenStream { + item.vis = syn::parse_quote!(pub); + item.fields.iter_mut().for_each(|field| { + field.vis = syn::parse_quote!(pub); + }); + item.generics.params.iter_mut().for_each(|g| { + if let syn::GenericParam::Type(t) = g { + t.bounds.push(syn::parse_quote!(Data)) + } + }); + let (impl_generics, type_generics, where_clause) = item.generics.split_for_impl(); + + let wrapper_id = item.ident.clone(); + item.ident = crate::utils::new_id(format!("_{}", wrapper_id)); + let id = &item.ident; + + let field_id = item.fields.iter().map(|f| &f.ident).collect::>(); + + let (inner_type, inner_expr) = + if crate::utils::has_meta_key("compact", &crate::utils::get_metas(&attr)) { + (quote::quote!(#id #type_generics), quote::quote!(data)) + } else { + ( + quote::quote!(Rc<#id #type_generics>), + quote::quote!(Rc::new(data)), + ) + }; + + quote!( + use prelude::*; + + #[derive(Clone, Debug, Unpin, Serialize, Deserialize)] + #[serde(bound = "")] + pub struct #wrapper_id #impl_generics(pub #inner_type) #where_clause; + + impl #impl_generics #wrapper_id #type_generics #where_clause { + pub fn new(data: #id #type_generics) -> Self { + Self(#inner_expr) + } + } + + #[derive(Clone, Debug, Unpin, Serialize, Deserialize)] + #[serde(bound = "")] + #item + ) + .into() +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macro_derives.rs b/arc-lang/crates/runtime/macros/src/proc_macro_derives.rs new file mode 100644 index 000000000..b4f51eefc --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macro_derives.rs @@ -0,0 +1,90 @@ +use proc_macro::TokenStream; +use syn::TypeParam; + +pub fn derive_send(input: syn::DeriveInput) -> TokenStream { + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = &input.ident; + quote::quote!(unsafe impl #impl_generics Send for #name #type_generics #where_clause {}).into() +} + +pub fn derive_sync(input: syn::DeriveInput) -> TokenStream { + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = &input.ident; + quote::quote!(unsafe impl #impl_generics Sync for #name #type_generics #where_clause {}).into() +} + +pub fn derive_unpin(input: syn::DeriveInput) -> TokenStream { + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = &input.ident; + quote::quote!(impl #impl_generics Unpin for #name #type_generics #where_clause {}).into() +} + +pub fn derive_deep_clone(mut input: syn::DeriveInput) -> TokenStream { + for param in &mut input.generics.params { + if let syn::GenericParam::Type(TypeParam { bounds, .. }) = param { + bounds.push(syn::parse_quote!(DeepClone)); + } + } + + let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); + let name = &input.ident; + match &input.data { + syn::Data::Struct(data) => { + let fields = data.fields.iter().enumerate().map(|(i, field)| { + if let Some(name) = &field.ident { + quote::quote!(#name: <_ as DeepClone>::deep_clone(&self.#name)) + } else { + let index = syn::Index::from(i); + quote::quote!(#index: <_ as DeepClone>::deep_clone(&self.#index)) + } + }); + quote::quote!( + impl #impl_generics DeepClone for #name #type_generics #where_clause { + fn deep_clone(&self) -> Self { + Self { + #(#fields),* + } + } + } + ) + .into() + } + syn::Data::Enum(data) => { + let variants = data.variants.iter().map(|variant| { + let name = &variant.ident; + let names = variant.fields.iter().enumerate().map(|(i, field)| { + if let Some(name) = &field.ident { + quote::quote!(#name) + } else { + let index = syn::Index::from(i); + let id = + syn::Ident::new(&format!("field{}", i), proc_macro2::Span::call_site()); + quote::quote!(#index: #id) + } + }); + let fields = variant.fields.iter().enumerate().map(|(i, field)| { + if let Some(name) = &field.ident { + quote::quote!(#name: <_ as DeepClone>::deep_clone(&self.#name)) + } else { + let index = syn::Index::from(i); + let id = + syn::Ident::new(&format!("field{}", i), proc_macro2::Span::call_site()); + quote::quote!(#index: <_ as DeepClone>::deep_clone(&#id)) + } + }); + quote::quote!(Self::#name { #(#names),* } => Self::#name { #(#fields),* }) + }); + quote::quote!( + impl #impl_generics DeepClone for #name #type_generics #where_clause { + fn deep_clone(&self) -> Self { + match self { + #(#variants),* + } + } + } + ) + .into() + } + syn::Data::Union(_) => unreachable!(), + } +} diff --git a/arc-lang/crates/runtime/macros/src/proc_macros.rs b/arc-lang/crates/runtime/macros/src/proc_macros.rs new file mode 100644 index 000000000..f9baf4085 --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/proc_macros.rs @@ -0,0 +1,8 @@ +use proc_macro::TokenStream; + +pub fn unwrap(input: TokenStream) -> TokenStream { + let mut iter = input.into_iter(); + let expr: syn::Expr = crate::utils::parse(&mut iter); + let path: syn::Path = crate::utils::parse(&mut iter); + quote::quote!(if let #path(v) = &#expr { v.clone() } else { unreachable!() }).into() +} diff --git a/arc-lang/crates/runtime/macros/src/utils.rs b/arc-lang/crates/runtime/macros/src/utils.rs new file mode 100644 index 000000000..050af0e5a --- /dev/null +++ b/arc-lang/crates/runtime/macros/src/utils.rs @@ -0,0 +1,12 @@ +use proc_macro as pm; + +pub(crate) fn parse(input: &mut impl Iterator) -> T { + let mut stream = pm::TokenStream::new(); + for token in input.by_ref() { + match token { + pm::TokenTree::Punct(t) if t.as_char() == ',' => break, + _ => stream.extend([token]), + } + } + syn::parse::(stream).unwrap() +} diff --git a/arc-lang/crates/runtime/runner/Cargo.toml b/arc-lang/crates/runtime/runner/Cargo.toml new file mode 100644 index 000000000..e38db5349 --- /dev/null +++ b/arc-lang/crates/runtime/runner/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "runner" +version.workspace = true +edition.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] +thread-pinning = ["hwloc", "num_cpus", "libc"] + +[dependencies] +tokio.workspace = true +logging.workspace = true +cfg-if.workspace = true + +# Thread Pinning +hwloc = { version = "0.5.0", optional = true } +num_cpus = { version = "1.15.0", optional = true } +libc = { version = "0.2.139" , optional = true } diff --git a/arc-lang/crates/runtime/runner/src/lib.rs b/arc-lang/crates/runtime/runner/src/lib.rs new file mode 100644 index 000000000..73f95890e --- /dev/null +++ b/arc-lang/crates/runtime/runner/src/lib.rs @@ -0,0 +1,86 @@ +#![allow(unused)] + +use std::future::Future; +use std::path::Path; + +use logging::Logger; + +pub struct Runner { + #[cfg(feature = "thread-pinning")] + topology: std::sync::Arc>, + threads: Vec>, + logger: Logger, +} + +impl Runner { + pub fn new(path: impl AsRef) -> Self { + Self { + #[cfg(feature = "thread-pinning")] + topology: std::sync::Arc::new(std::sync::Mutex::new(hwloc::Topology::new())), + threads: Vec::new(), + logger: Logger::file(path.as_ref()), + } + } + + pub fn spawn(&mut self, instance: impl Future + Send + 'static) -> &mut Self { + self.threads.push(std::thread::spawn(move || { + tokio::runtime::Builder::new_current_thread() + .enable_io() + .enable_time() + .build() + .expect("Failed to build runtime") + .block_on(async { + let set = tokio::task::LocalSet::new(); + set.run_until(instance).await; + set.await; + }); + })); + self + } + + pub fn spawn_pinned( + &mut self, + instance: impl Future + Send + 'static, + _cpu_id: usize, + ) -> &mut Self { + #[cfg(feature = "thread-pinning")] + let topology = self.topology.clone(); + self.threads.push(std::thread::spawn(move || { + #[cfg(feature = "thread-pinning")] + bind_thread_to_cpu(_cpu_id, topology); + tokio::runtime::Builder::new_current_thread() + .enable_io() + .enable_time() + .build() + .unwrap() + .block_on(tokio::task::LocalSet::new().run_until(instance)); + })); + self + } +} + +#[cfg(feature = "thread-pinning")] +fn bind_thread_to_cpu( + _cpu_id: usize, + _topology: std::sync::Arc>, +) { + cfg_if::cfg_if! { + if #[cfg(target_os = "linux")] { + let thread_id = unsafe { libc::pthread_self() }; + let mut topology = topology.lock().unwrap(); + let cpus = topology.objects_with_type(&ObjectType::Core).unwrap(); + let cpuset = cpus.get(_cpu_id).expect("Core not found").cpuset().unwrap(); + _topology + .set_cpubind_for_thread(thread_id, cpuset, CPUBIND_THREAD) + .unwrap(); + } + } +} + +impl Drop for Runner { + fn drop(&mut self) { + for thread in self.threads.drain(..) { + thread.join().expect("Failed to join thread"); + } + } +} diff --git a/arc-lang/crates/runtime/src/lib.rs b/arc-lang/crates/runtime/src/lib.rs new file mode 100644 index 000000000..ed5737e60 --- /dev/null +++ b/arc-lang/crates/runtime/src/lib.rs @@ -0,0 +1,45 @@ +pub mod prelude { + pub use macros::data; + pub use macros::unwrap; + pub use macros::DeepClone; + pub use macros::Send; + pub use macros::Sync; + pub use macros::Unpin; + + pub use builtins::array::Array; + pub use builtins::blob::Blob; + pub use builtins::dict::Dict; + pub use builtins::duration::Duration; + pub use builtins::encoding::Encoding; + pub use builtins::file::File; + pub use builtins::image::Image; + pub use builtins::keyed_stream::KeyedStream; + pub use builtins::matrix::Matrix; + pub use builtins::model::Model; + pub use builtins::option::Option; + pub use builtins::path::Path; + pub use builtins::reader::Reader; + pub use builtins::result::Result; + pub use builtins::set::Set; + pub use builtins::socket::SocketAddr; + pub use builtins::stream::Stream; + pub use builtins::string::String; + pub use builtins::time::Time; + pub use builtins::time_source::TimeSource; + pub use builtins::traits::Data; + pub use builtins::traits::DeepClone; + pub use builtins::url::Url; + pub use builtins::vec::Vec; + pub use builtins::writer::Writer; + + pub use runner::Runner; + + pub use state::Database; + pub use state::State; + + pub type Unit = (); + + pub use hexf; + pub use serde; + pub use tokio; +} diff --git a/arc-lang/crates/runtime/state/Cargo.toml b/arc-lang/crates/runtime/state/Cargo.toml new file mode 100644 index 000000000..14779501b --- /dev/null +++ b/arc-lang/crates/runtime/state/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "state" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +# [features] +# remote = ["tikv-client"] +# local = ["sled"] +# default = [] + +[dependencies] +builtins.workspace = true +serde.workspace = true +sled.workspace = true +# tikv-client.workspace = true +tokio.workspace = true +serde_json.workspace = true diff --git a/arc-lang/crates/runtime/state/src/lib.rs b/arc-lang/crates/runtime/state/src/lib.rs new file mode 100644 index 000000000..2a094cc98 --- /dev/null +++ b/arc-lang/crates/runtime/state/src/lib.rs @@ -0,0 +1,111 @@ +#![allow(unused)] + +use std::collections::HashMap; +use std::hash::Hash; +use std::ops::Index; +use std::ops::IndexMut; +use std::path::PathBuf; + +use serde::de::DeserializeOwned; +use serde::Serialize; + +use builtins::traits::Data; +use builtins::traits::Key; + +#[derive(Clone)] +pub struct Database( + // tikv_client::RawClient, + sled::Db, + // HashMap, +); + +impl Database { + // #[cfg(feature = "tikv")] + // pub fn new(addr: &str) -> Self { + // let db = tokio::runtime::Runtime::new() + // .expect("failed to create runtime") + // .block_on(tikv_client::RawClient::new(vec![addr]).await) + // .expect("Failed to connect to tikv"); + // Self(db) + // } + + // #[cfg(feature = "local")] + pub fn new(path: impl AsRef) -> Self { + let db = sled::open(path).expect("Failed to connect to sled"); + Self(db) + } + + // #[cfg(not(any(feature = "tikv", feature = "sled")))] + // pub fn new(path: &str) -> Self { + // let db = sled::open(path).expect("Failed to connect to sled"); + // Self(db) + // } +} + +#[derive(Clone)] +pub struct State { + name: String, + db: Database, + uncommitted: HashMap, + default: T, +} + +impl State { + pub fn new(name: impl ToString, db: Database, default: T) -> Self { + Self { + name: name.to_string(), + db, + uncommitted: HashMap::new(), + default, + } + } + pub fn iter_mut(&mut self) -> impl Iterator { + self.uncommitted.iter_mut() + } + // #[cfg(feature = "remote")] + // pub async fn snapshot(&mut self, snapshot_version: usize) { + // let name = &self.name; + // let batch = self.uncommitted.iter().filter_map(|(key, data)| { + // let key = ser((name, key)).ok()?; + // let data = ser(data).ok()?; + // Some((key, data)) + // }); + // db.batch_put(batch).await.expect("tikv: failed to insert") + // } + pub async fn snapshot(&mut self, snapshot_version: usize) { + self.uncommitted + .iter() + .filter_map(|(key, data)| { + let key = ser((key, snapshot_version)).ok()?; + let data = ser(data).ok()?; + Some((key, data)) + }) + .for_each(|(key, data)| { + self.db.0.insert(key, data).expect("sled: failed to insert"); + }); + } +} + +impl IndexMut for State { + fn index_mut(&mut self, key: K) -> &mut T { + let default = &self.default; + self.uncommitted + .entry(key) + .or_insert_with(|| default.clone()) + } +} + +impl Index for State { + type Output = T; + fn index(&self, key: K) -> &T { + self.uncommitted.get(&key).unwrap_or(&self.default) + } +} + +pub fn ser(v: T) -> Result, serde_json::Error> { + serde_json::to_vec(&v) +} + +pub fn deser(v: Option>) -> Result, serde_json::Error> { + v.map(|v| serde_json::from_slice(&v)).transpose() +} diff --git a/arc-lang/crates/runtime/timer/Cargo.toml b/arc-lang/crates/runtime/timer/Cargo.toml new file mode 100644 index 000000000..716d8fc44 --- /dev/null +++ b/arc-lang/crates/runtime/timer/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "timer" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +uuid = "1.3.1" +wheel = { version = "1.2.0", package = "hierarchical_hash_wheel_timer" } diff --git a/arc-lang/crates/runtime/timer/src/lib.rs b/arc-lang/crates/runtime/timer/src/lib.rs new file mode 100644 index 000000000..1d0b44c05 --- /dev/null +++ b/arc-lang/crates/runtime/timer/src/lib.rs @@ -0,0 +1,71 @@ +#![allow(deprecated)] + +use uuid::Uuid; +use wheel::wheels::quad_wheel::QuadWheelWithOverflow; +use wheel::wheels::Skip; +use wheel::UuidOnlyTimerEntry as Entry; + +use std::collections::HashMap; +use std::time::Duration; + +/// A timer +pub struct Timer { + pub wheel: QuadWheelWithOverflow, + pub callbacks: HashMap, + pub duration: Duration, +} + +type Callback = fn(); + +impl Default for Timer { + fn default() -> Self { + Self { + wheel: QuadWheelWithOverflow::default(), + callbacks: HashMap::new(), + duration: Duration::from_millis(0), + } + } +} + +impl Timer { + /// Execute callback after duration + pub fn after(&mut self, duration: Duration, callback: Callback) { + let entry = Entry::with_random_id(duration); + self.callbacks.insert(entry.id, callback); + self.wheel.insert(entry).unwrap(); + } + + /// Advance the timer and execute timers which have expired. + /// TODO: Handle overflow. Currently assumes Duration <= u32::MAX. + pub fn advance(&mut self, mut remaining: Duration) { + while remaining.as_millis() > 0 { + match self.wheel.can_skip() { + // No timers are scheduled + Skip::Empty => { + self.duration += remaining; + } + // Timers are scheduled at the next millisecond + Skip::None => { + self.duration += Duration::from_millis(1); + remaining -= Duration::from_millis(1); + for e in self.wheel.tick() { + (self.callbacks.remove(&e.id).unwrap())(); + } + } + // Timers are scheduled sometime later + Skip::Millis(skip) => { + if skip as u128 >= remaining.as_millis() { + // No more entries to expire + self.wheel.skip(remaining.as_millis() as u32); + break; + } else { + // Skip until next entry + self.wheel.skip(skip); + self.duration += Duration::from_millis(skip as u64); + remaining -= Duration::from_millis(skip as u64); + } + } + } + } + } +} diff --git a/arc-lang/crates/tree-sitter/.gitignore b/arc-lang/crates/tree-sitter/.gitignore new file mode 100644 index 000000000..aa8afe611 --- /dev/null +++ b/arc-lang/crates/tree-sitter/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +target/ diff --git a/arc-lang/crates/tree-sitter/Cargo.lock b/arc-lang/crates/tree-sitter/Cargo.lock new file mode 100644 index 000000000..aea7d3a06 --- /dev/null +++ b/arc-lang/crates/tree-sitter/Cargo.lock @@ -0,0 +1,170 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + +[[package]] +name = "syn" +version = "2.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tree-sitter" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e747b1f9b7b931ed39a548c1fae149101497de3c1fc8d9e18c62c1a66c683d3d" +dependencies = [ + "cc", + "regex", +] + +[[package]] +name = "tree-sitter-arclang" +version = "0.0.1" +dependencies = [ + "ansi_term", + "cc", + "tree-sitter", + "tree-sitter-highlight", +] + +[[package]] +name = "tree-sitter-highlight" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "042342584c5a7a0b833d9fc4e2bdab3f9868ddc6c4b339a1e01451c6720868bc" +dependencies = [ + "regex", + "thiserror", + "tree-sitter", +] + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/arc-lang/crates/tree-sitter/Cargo.toml b/arc-lang/crates/tree-sitter/Cargo.toml new file mode 100644 index 000000000..3bdf68c7d --- /dev/null +++ b/arc-lang/crates/tree-sitter/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "tree-sitter-arclang" +description = "arclang grammar for the tree-sitter parsing library" +version = "0.0.1" +keywords = ["incremental", "parsing", "arclang"] +categories = ["parsing", "text-editors"] +repository = "https://github.com/tree-sitter/tree-sitter-arclang" +edition = "2018" +license = "MIT" + +build = "bindings/rust/build.rs" +include = [ + "bindings/rust/*", + "grammar.js", + "queries/*", + "src/*", +] + +[lib] +path = "bindings/rust/lib.rs" + +[dependencies] +tree-sitter = "~0.20.10" +tree-sitter-highlight = "0.20.1" +ansi_term = "0.12.1" + +[build-dependencies] +cc = "1.0" diff --git a/arc-lang/crates/tree-sitter/binding.gyp b/arc-lang/crates/tree-sitter/binding.gyp new file mode 100644 index 000000000..189c65e9c --- /dev/null +++ b/arc-lang/crates/tree-sitter/binding.gyp @@ -0,0 +1,19 @@ +{ + "targets": [ + { + "target_name": "tree_sitter_arclang_binding", + "include_dirs": [ + " +#include "nan.h" + +using namespace v8; + +extern "C" TSLanguage * tree_sitter_arclang(); + +namespace { + +NAN_METHOD(New) {} + +void Init(Local exports, Local module) { + Local tpl = Nan::New(New); + tpl->SetClassName(Nan::New("Language").ToLocalChecked()); + tpl->InstanceTemplate()->SetInternalFieldCount(1); + + Local constructor = Nan::GetFunction(tpl).ToLocalChecked(); + Local instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked(); + Nan::SetInternalFieldPointer(instance, 0, tree_sitter_arclang()); + + Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("arclang").ToLocalChecked()); + Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance); +} + +NODE_MODULE(tree_sitter_arclang_binding, Init) + +} // namespace diff --git a/arc-lang/crates/tree-sitter/bindings/node/index.js b/arc-lang/crates/tree-sitter/bindings/node/index.js new file mode 100644 index 000000000..5a7b57a4c --- /dev/null +++ b/arc-lang/crates/tree-sitter/bindings/node/index.js @@ -0,0 +1,19 @@ +try { + module.exports = require("../../build/Release/tree_sitter_arc_lang_binding"); +} catch (error1) { + if (error1.code !== 'MODULE_NOT_FOUND') { + throw error1; + } + try { + module.exports = require("../../build/Debug/tree_sitter_arc_lang_binding"); + } catch (error2) { + if (error2.code !== 'MODULE_NOT_FOUND') { + throw error2; + } + throw error1 + } +} + +try { + module.exports.nodeTypeInfo = require("../../src/node-types.json"); +} catch (_) {} diff --git a/arc-lang/crates/tree-sitter/bindings/rust/build.rs b/arc-lang/crates/tree-sitter/bindings/rust/build.rs new file mode 100644 index 000000000..3946bad39 --- /dev/null +++ b/arc-lang/crates/tree-sitter/bindings/rust/build.rs @@ -0,0 +1,15 @@ +fn main() { + let src_dir = std::path::Path::new("src"); + + let mut c_config = cc::Build::new(); + c_config.include(&src_dir); + c_config + .flag_if_supported("-Wno-unused-parameter") + .flag_if_supported("-Wno-unused-but-set-variable") + .flag_if_supported("-Wno-trigraphs"); + let parser_path = src_dir.join("parser.c"); + c_config.file(&parser_path); + + c_config.compile("parser"); + println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap()); +} diff --git a/arc-lang/crates/tree-sitter/bindings/rust/lib.rs b/arc-lang/crates/tree-sitter/bindings/rust/lib.rs new file mode 100644 index 000000000..8e4f91e97 --- /dev/null +++ b/arc-lang/crates/tree-sitter/bindings/rust/lib.rs @@ -0,0 +1,93 @@ +//! This crate provides arc-lang language support for the [tree-sitter][] parsing library. +//! +//! Typically, you will use the [language][language func] function to add this language to a +//! tree-sitter [Parser][], and then use the parser to parse some code: +//! +//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html +//! [language func]: fn.language.html +//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html +//! [tree-sitter]: https://tree-sitter.github.io/ + +use tree_sitter::Language; + +extern "C" { + fn tree_sitter_arc_lang() -> Language; +} + +/// Get the tree-sitter [Language][] for this grammar. +/// +/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html +pub fn language() -> Language { + unsafe { tree_sitter_arc_lang() } +} + +/// The content of the [`node-types.json`][] file for this grammar. +/// +/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types +pub const NODE_TYPES: &str = include_str!("../../src/node-types.json"); + +// Uncomment these to include any queries that this grammar contains + +pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/arc_lang/highlights.scm"); +pub const INJECTIONS_QUERY: &str = include_str!("../../queries/arc_lang/injections.scm"); +pub const LOCALS_QUERY: &str = include_str!("../../queries/arc_lang/locals.scm"); +pub const TAGS_QUERY: &str = include_str!("../../queries/arc_lang/tags.scm"); +pub const HIGHLIGHT_NAMES: &[&str] = &[ + "string", + "number", + "boolean", + "comment", + "keyword", + "function", + "variable", + "type", + "type.builtin", + "conditional", + "repeat", + "punctuation", + "operator", +]; + +#[cfg(test)] +mod tests { + use tree_sitter_highlight::HighlightConfiguration; + use tree_sitter_highlight::Highlighter; + + #[test] + fn can_highlight() { + let code = "def foo() = 1+1;"; + + let mut highlighter = Highlighter::new(); + let mut config = HighlightConfiguration::new( + super::language(), + super::HIGHLIGHTS_QUERY, + super::INJECTIONS_QUERY, + super::LOCALS_QUERY, + ) + .unwrap(); + + config.configure(super::HIGHLIGHT_NAMES); + + use tree_sitter_highlight::HighlightEvent; + + let highlights = highlighter + .highlight(&config, code.as_bytes(), None, |_| None) + .unwrap(); + + for event in highlights { + if let Ok(event) = event { + match event { + HighlightEvent::Source { start, end } => { + eprint!("[{}]", &code[start..end]); + } + HighlightEvent::HighlightStart(i) => { + eprint!("<{}", i.0); + } + HighlightEvent::HighlightEnd => { + eprint!(">"); + } + } + } + } + } +} diff --git a/arc-lang/crates/tree-sitter/build/Makefile b/arc-lang/crates/tree-sitter/build/Makefile new file mode 100644 index 000000000..5c1464f2b --- /dev/null +++ b/arc-lang/crates/tree-sitter/build/Makefile @@ -0,0 +1,342 @@ +# We borrow heavily from the kernel build setup, though we are simpler since +# we don't have Kconfig tweaking settings on us. + +# The implicit make rules have it looking for RCS files, among other things. +# We instead explicitly write all the rules we care about. +# It's even quicker (saves ~200ms) to pass -r on the command line. +MAKEFLAGS=-r + +# The source directory tree. +srcdir := .. +abs_srcdir := $(abspath $(srcdir)) + +# The name of the builddir. +builddir_name ?= . + +# The V=1 flag on command line makes us verbosely print command lines. +ifdef V + quiet= +else + quiet=quiet_ +endif + +# Specify BUILDTYPE=Release on the command line for a release build. +BUILDTYPE ?= Release + +# Directory all our build output goes into. +# Note that this must be two directories beneath src/ for unit tests to pass, +# as they reach into the src/ directory for data with relative paths. +builddir ?= $(builddir_name)/$(BUILDTYPE) +abs_builddir := $(abspath $(builddir)) +depsdir := $(builddir)/.deps + +# Object output directory. +obj := $(builddir)/obj +abs_obj := $(abspath $(obj)) + +# We build up a list of every single one of the targets so we can slurp in the +# generated dependency rule Makefiles in one pass. +all_deps := + + + +CC.target ?= $(CC) +CFLAGS.target ?= $(CPPFLAGS) $(CFLAGS) +CXX.target ?= $(CXX) +CXXFLAGS.target ?= $(CPPFLAGS) $(CXXFLAGS) +LINK.target ?= $(LINK) +LDFLAGS.target ?= $(LDFLAGS) +AR.target ?= $(AR) + +# C++ apps need to be linked with g++. +LINK ?= $(CXX.target) + +# TODO(evan): move all cross-compilation logic to gyp-time so we don't need +# to replicate this environment fallback in make as well. +CC.host ?= gcc +CFLAGS.host ?= $(CPPFLAGS_host) $(CFLAGS_host) +CXX.host ?= g++ +CXXFLAGS.host ?= $(CPPFLAGS_host) $(CXXFLAGS_host) +LINK.host ?= $(CXX.host) +LDFLAGS.host ?= $(LDFLAGS_host) +AR.host ?= ar + +# Define a dir function that can handle spaces. +# http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions +# "leading spaces cannot appear in the text of the first argument as written. +# These characters can be put into the argument value by variable substitution." +empty := +space := $(empty) $(empty) + +# http://stackoverflow.com/questions/1189781/using-make-dir-or-notdir-on-a-path-with-spaces +replace_spaces = $(subst $(space),?,$1) +unreplace_spaces = $(subst ?,$(space),$1) +dirx = $(call unreplace_spaces,$(dir $(call replace_spaces,$1))) + +# Flags to make gcc output dependency info. Note that you need to be +# careful here to use the flags that ccache and distcc can understand. +# We write to a dep file on the side first and then rename at the end +# so we can't end up with a broken dep file. +depfile = $(depsdir)/$(call replace_spaces,$@).d +DEPFLAGS = -MMD -MF $(depfile).raw + +# We have to fixup the deps output in a few ways. +# (1) the file output should mention the proper .o file. +# ccache or distcc lose the path to the target, so we convert a rule of +# the form: +# foobar.o: DEP1 DEP2 +# into +# path/to/foobar.o: DEP1 DEP2 +# (2) we want missing files not to cause us to fail to build. +# We want to rewrite +# foobar.o: DEP1 DEP2 \ +# DEP3 +# to +# DEP1: +# DEP2: +# DEP3: +# so if the files are missing, they're just considered phony rules. +# We have to do some pretty insane escaping to get those backslashes +# and dollar signs past make, the shell, and sed at the same time. +# Doesn't work with spaces, but that's fine: .d files have spaces in +# their names replaced with other characters. +define fixup_dep +# The depfile may not exist if the input file didn't have any #includes. +touch $(depfile).raw +# Fixup path as in (1). +sed -e "s|^$(notdir $@)|$@|" $(depfile).raw >> $(depfile) +# Add extra rules as in (2). +# We remove slashes and replace spaces with new lines; +# remove blank lines; +# delete the first line and append a colon to the remaining lines. +sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\ + grep -v '^$$' |\ + sed -e 1d -e 's|$$|:|' \ + >> $(depfile) +rm $(depfile).raw +endef + +# Command definitions: +# - cmd_foo is the actual command to run; +# - quiet_cmd_foo is the brief-output summary of the command. + +quiet_cmd_cc = CC($(TOOLSET)) $@ +cmd_cc = $(CC.$(TOOLSET)) -o $@ $< $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c + +quiet_cmd_cxx = CXX($(TOOLSET)) $@ +cmd_cxx = $(CXX.$(TOOLSET)) -o $@ $< $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c + +quiet_cmd_objc = CXX($(TOOLSET)) $@ +cmd_objc = $(CC.$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< + +quiet_cmd_objcxx = CXX($(TOOLSET)) $@ +cmd_objcxx = $(CXX.$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< + +# Commands for precompiled header files. +quiet_cmd_pch_c = CXX($(TOOLSET)) $@ +cmd_pch_c = $(CC.$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< +quiet_cmd_pch_cc = CXX($(TOOLSET)) $@ +cmd_pch_cc = $(CC.$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< +quiet_cmd_pch_m = CXX($(TOOLSET)) $@ +cmd_pch_m = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< +quiet_cmd_pch_mm = CXX($(TOOLSET)) $@ +cmd_pch_mm = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< + +# gyp-mac-tool is written next to the root Makefile by gyp. +# Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd +# already. +quiet_cmd_mac_tool = MACTOOL $(4) $< +cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@" + +quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@ +cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4) + +quiet_cmd_infoplist = INFOPLIST $@ +cmd_infoplist = $(CC.$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) "$<" -o "$@" + +quiet_cmd_touch = TOUCH $@ +cmd_touch = touch $@ + +quiet_cmd_copy = COPY $@ +# send stderr to /dev/null to ignore messages when linking directories. +cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp -af "$<" "$@") + +quiet_cmd_alink = LIBTOOL-STATIC $@ +cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool $(GYP_LIBTOOLFLAGS) -static -o $@ $(filter %.o,$^) + +quiet_cmd_link = LINK($(TOOLSET)) $@ +cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) + +quiet_cmd_solink = SOLINK($(TOOLSET)) $@ +cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) + +quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ +cmd_solink_module = $(LINK.$(TOOLSET)) -bundle $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) + + +# Define an escape_quotes function to escape single quotes. +# This allows us to handle quotes properly as long as we always use +# use single quotes and escape_quotes. +escape_quotes = $(subst ','\'',$(1)) +# This comment is here just to include a ' to unconfuse syntax highlighting. +# Define an escape_vars function to escape '$' variable syntax. +# This allows us to read/write command lines with shell variables (e.g. +# $LD_LIBRARY_PATH), without triggering make substitution. +escape_vars = $(subst $$,$$$$,$(1)) +# Helper that expands to a shell command to echo a string exactly as it is in +# make. This uses printf instead of echo because printf's behaviour with respect +# to escape sequences is more portable than echo's across different shells +# (e.g., dash, bash). +exact_echo = printf '%s\n' '$(call escape_quotes,$(1))' + +# Helper to compare the command we're about to run against the command +# we logged the last time we ran the command. Produces an empty +# string (false) when the commands match. +# Tricky point: Make has no string-equality test function. +# The kernel uses the following, but it seems like it would have false +# positives, where one string reordered its arguments. +# arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \ +# $(filter-out $(cmd_$@), $(cmd_$(1)))) +# We instead substitute each for the empty string into the other, and +# say they're equal if both substitutions produce the empty string. +# .d files contain ? instead of spaces, take that into account. +command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\ + $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1)))) + +# Helper that is non-empty when a prerequisite changes. +# Normally make does this implicitly, but we force rules to always run +# so we can check their command lines. +# $? -- new prerequisites +# $| -- order-only dependencies +prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?)) + +# Helper that executes all postbuilds until one fails. +define do_postbuilds + @E=0;\ + for p in $(POSTBUILDS); do\ + eval $$p;\ + E=$$?;\ + if [ $$E -ne 0 ]; then\ + break;\ + fi;\ + done;\ + if [ $$E -ne 0 ]; then\ + rm -rf "$@";\ + exit $$E;\ + fi +endef + +# do_cmd: run a command via the above cmd_foo names, if necessary. +# Should always run for a given target to handle command-line changes. +# Second argument, if non-zero, makes it do asm/C/C++ dependency munging. +# Third argument, if non-zero, makes it do POSTBUILDS processing. +# Note: We intentionally do NOT call dirx for depfile, since it contains ? for +# spaces already and dirx strips the ? characters. +define do_cmd +$(if $(or $(command_changed),$(prereq_changed)), + @$(call exact_echo, $($(quiet)cmd_$(1))) + @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))" + $(if $(findstring flock,$(word 2,$(cmd_$1))), + @$(cmd_$(1)) + @echo " $(quiet_cmd_$(1)): Finished", + @$(cmd_$(1)) + ) + @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile) + @$(if $(2),$(fixup_dep)) + $(if $(and $(3), $(POSTBUILDS)), + $(call do_postbuilds) + ) +) +endef + +# Declare the "all" target first so it is the default, +# even though we don't have the deps yet. +.PHONY: all +all: + +# make looks for ways to re-generate included makefiles, but in our case, we +# don't have a direct way. Explicitly telling make that it has nothing to do +# for them makes it go faster. +%.d: ; + +# Use FORCE_DO_CMD to force a target to run. Should be coupled with +# do_cmd. +.PHONY: FORCE_DO_CMD +FORCE_DO_CMD: + +TOOLSET := target +# Suffix rules, putting all outputs into $(obj). +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.m FORCE_DO_CMD + @$(call do_cmd,objc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.mm FORCE_DO_CMD + @$(call do_cmd,objcxx,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) + +# Try building from generated source, too. +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.m FORCE_DO_CMD + @$(call do_cmd,objc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.mm FORCE_DO_CMD + @$(call do_cmd,objcxx,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) + +$(obj).$(TOOLSET)/%.o: $(obj)/%.c FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cc FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD + @$(call do_cmd,cxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.m FORCE_DO_CMD + @$(call do_cmd,objc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.mm FORCE_DO_CMD + @$(call do_cmd,objcxx,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD + @$(call do_cmd,cc,1) +$(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD + @$(call do_cmd,cc,1) + + +ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ + $(findstring $(join ^,$(prefix)),\ + $(join ^,tree_sitter_arclang_binding.target.mk)))),) + include tree_sitter_arclang_binding.target.mk +endif + +quiet_cmd_regen_makefile = ACTION Regenerating $@ +cmd_regen_makefile = cd $(srcdir); /opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/klasseg/Library/Caches/node-gyp/16.20.1" "-Dnode_gyp_dir=/opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp" "-Dnode_lib_file=/Users/klasseg/Library/Caches/node-gyp/16.20.1/<(target_arch)/node.lib" "-Dmodule_root_dir=/Users/klasseg/Workspace/arc/arc-lang/crates/tree-sitter" "-Dnode_engine=v8" "--depth=." "-Goutput_dir=." "--generator-output=build" -I/Users/klasseg/Workspace/arc/arc-lang/crates/tree-sitter/build/config.gypi -I/opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/common.gypi "--toplevel-dir=." binding.gyp +Makefile: $(srcdir)/build/config.gypi $(srcdir)/binding.gyp $(srcdir)/../../../../../Library/Caches/node-gyp/16.20.1/include/node/common.gypi $(srcdir)/../../../../../../../opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp/addon.gypi + $(call do_cmd,regen_makefile) + +# "all" is a concatenation of the "all" targets from all the included +# sub-makefiles. This is just here to clarify. +all: + +# Add in dependency-tracking rules. $(all_deps) is the list of every single +# target in our tree. Only consider the ones with .d (dependency) info: +d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d)) +ifneq ($(d_files),) + include $(d_files) +endif diff --git a/arc-lang/crates/tree-sitter/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o.d b/arc-lang/crates/tree-sitter/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o.d new file mode 100644 index 000000000..4e0593d84 --- /dev/null +++ b/arc-lang/crates/tree-sitter/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o.d @@ -0,0 +1,65 @@ +cmd_Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o := c++ -o Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o ../bindings/node/binding.cc '-DNODE_GYP_MODULE_NAME=tree_sitter_arclang_binding' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/src -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/config -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/openssl/include -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/uv/include -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/zlib -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/v8/include -I../node_modules/nan -I../src -O3 -gdwarf-2 -mmacosx-version-min=10.13 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -std=gnu++14 -stdlib=libc++ -fno-rtti -fno-exceptions -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o.d.raw -I/opt/homebrew/opt/llvm/include -c +Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o: \ + ../bindings/node/binding.cc ../src/tree_sitter/parser.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/cppgc/common.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8config.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-internal.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-version.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-platform.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_version.h \ + ../node_modules/nan/nan.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/errno.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/version.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/unix.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/threadpool.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/darwin.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_buffer.h \ + /Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_object_wrap.h \ + ../node_modules/nan/nan_callbacks.h \ + ../node_modules/nan/nan_callbacks_12_inl.h \ + ../node_modules/nan/nan_maybe_43_inl.h \ + ../node_modules/nan/nan_converters.h \ + ../node_modules/nan/nan_converters_43_inl.h \ + ../node_modules/nan/nan_new.h \ + ../node_modules/nan/nan_implementation_12_inl.h \ + ../node_modules/nan/nan_persistent_12_inl.h \ + ../node_modules/nan/nan_weak.h ../node_modules/nan/nan_object_wrap.h \ + ../node_modules/nan/nan_private.h \ + ../node_modules/nan/nan_typedarray_contents.h \ + ../node_modules/nan/nan_json.h ../node_modules/nan/nan_scriptorigin.h +../bindings/node/binding.cc: +../src/tree_sitter/parser.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/cppgc/common.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8config.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-internal.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-version.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/v8-platform.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_version.h: +../node_modules/nan/nan.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/errno.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/version.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/unix.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/threadpool.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/uv/darwin.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_buffer.h: +/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node/node_object_wrap.h: +../node_modules/nan/nan_callbacks.h: +../node_modules/nan/nan_callbacks_12_inl.h: +../node_modules/nan/nan_maybe_43_inl.h: +../node_modules/nan/nan_converters.h: +../node_modules/nan/nan_converters_43_inl.h: +../node_modules/nan/nan_new.h: +../node_modules/nan/nan_implementation_12_inl.h: +../node_modules/nan/nan_persistent_12_inl.h: +../node_modules/nan/nan_weak.h: +../node_modules/nan/nan_object_wrap.h: +../node_modules/nan/nan_private.h: +../node_modules/nan/nan_typedarray_contents.h: +../node_modules/nan/nan_json.h: +../node_modules/nan/nan_scriptorigin.h: diff --git a/arc-lang/crates/tree-sitter/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/src/parser.o.d b/arc-lang/crates/tree-sitter/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/src/parser.o.d new file mode 100644 index 000000000..cc94907ac --- /dev/null +++ b/arc-lang/crates/tree-sitter/build/Release/.deps/Release/obj.target/tree_sitter_arclang_binding/src/parser.o.d @@ -0,0 +1,5 @@ +cmd_Release/obj.target/tree_sitter_arclang_binding/src/parser.o := cc -o Release/obj.target/tree_sitter_arclang_binding/src/parser.o ../src/parser.c '-DNODE_GYP_MODULE_NAME=tree_sitter_arclang_binding' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_DARWIN_USE_64_BIT_INODE=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DBUILDING_NODE_EXTENSION' -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/include/node -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/src -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/config -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/openssl/openssl/include -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/uv/include -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/zlib -I/Users/klasseg/Library/Caches/node-gyp/16.20.1/deps/v8/include -I../node_modules/nan -I../src -O3 -gdwarf-2 -mmacosx-version-min=10.13 -arch arm64 -Wall -Wendif-labels -W -Wno-unused-parameter -fno-strict-aliasing -MMD -MF ./Release/.deps/Release/obj.target/tree_sitter_arclang_binding/src/parser.o.d.raw -I/opt/homebrew/opt/llvm/include -I/opt/homebrew/include -c +Release/obj.target/tree_sitter_arclang_binding/src/parser.o: \ + ../src/parser.c ../src/tree_sitter/parser.h +../src/parser.c: +../src/tree_sitter/parser.h: diff --git a/arc-lang/crates/tree-sitter/build/Release/.deps/Release/tree_sitter_arclang_binding.node.d b/arc-lang/crates/tree-sitter/build/Release/.deps/Release/tree_sitter_arclang_binding.node.d new file mode 100644 index 000000000..0b0583b4e --- /dev/null +++ b/arc-lang/crates/tree-sitter/build/Release/.deps/Release/tree_sitter_arclang_binding.node.d @@ -0,0 +1 @@ +cmd_Release/tree_sitter_arclang_binding.node := c++ -bundle -undefined dynamic_lookup -Wl,-search_paths_first -mmacosx-version-min=10.13 -arch arm64 -L./Release -stdlib=libc++ -L/opt/homebrew/opt/llvm/lib -o Release/tree_sitter_arclang_binding.node Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o Release/obj.target/tree_sitter_arclang_binding/src/parser.o diff --git a/arc-lang/crates/tree-sitter/build/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o b/arc-lang/crates/tree-sitter/build/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o new file mode 100644 index 000000000..a711acb27 Binary files /dev/null and b/arc-lang/crates/tree-sitter/build/Release/obj.target/tree_sitter_arclang_binding/bindings/node/binding.o differ diff --git a/arc-lang/crates/tree-sitter/build/Release/obj.target/tree_sitter_arclang_binding/src/parser.o b/arc-lang/crates/tree-sitter/build/Release/obj.target/tree_sitter_arclang_binding/src/parser.o new file mode 100644 index 000000000..d9c46b019 Binary files /dev/null and b/arc-lang/crates/tree-sitter/build/Release/obj.target/tree_sitter_arclang_binding/src/parser.o differ diff --git a/arc-lang/crates/tree-sitter/build/Release/tree_sitter_arclang_binding.node b/arc-lang/crates/tree-sitter/build/Release/tree_sitter_arclang_binding.node new file mode 100755 index 000000000..5922975f5 Binary files /dev/null and b/arc-lang/crates/tree-sitter/build/Release/tree_sitter_arclang_binding.node differ diff --git a/arc-lang/crates/tree-sitter/build/binding.Makefile b/arc-lang/crates/tree-sitter/build/binding.Makefile new file mode 100644 index 000000000..82424124b --- /dev/null +++ b/arc-lang/crates/tree-sitter/build/binding.Makefile @@ -0,0 +1,6 @@ +# This file is generated by gyp; do not edit. + +export builddir_name ?= ./build/. +.PHONY: all +all: + $(MAKE) tree_sitter_arclang_binding diff --git a/arc-lang/crates/tree-sitter/build/config.gypi b/arc-lang/crates/tree-sitter/build/config.gypi new file mode 100644 index 000000000..bbaa72b44 --- /dev/null +++ b/arc-lang/crates/tree-sitter/build/config.gypi @@ -0,0 +1,388 @@ +# Do not edit. File was generated by node-gyp's "configure" step +{ + "target_defaults": { + "cflags": [], + "default_configuration": "Release", + "defines": [], + "include_dirs": [], + "libraries": [], + "msvs_configuration_platform": "ARM64", + "xcode_configuration_platform": "arm64" + }, + "variables": { + "asan": 0, + "coverage": "false", + "dcheck_always_on": 0, + "debug_nghttp2": "false", + "debug_node": "false", + "enable_lto": "false", + "enable_pgo_generate": "false", + "enable_pgo_use": "false", + "error_on_warn": "false", + "force_dynamic_crt": 0, + "host_arch": "arm64", + "icu_gyp_path": "tools/icu/icu-system.gyp", + "icu_small": "false", + "icu_ver_major": "73", + "is_debug": 0, + "libdir": "lib", + "llvm_version": "14.0", + "napi_build_version": "8", + "node_builtin_shareable_builtins": [ + "deps/cjs-module-lexer/lexer.js", + "deps/cjs-module-lexer/dist/lexer.js", + "deps/undici/undici.js" + ], + "node_byteorder": "little", + "node_debug_lib": "false", + "node_enable_d8": "false", + "node_install_corepack": "true", + "node_install_npm": "true", + "node_library_files": [ + "lib/_http_agent.js", + "lib/_http_client.js", + "lib/_http_common.js", + "lib/_http_incoming.js", + "lib/_http_outgoing.js", + "lib/_http_server.js", + "lib/_stream_duplex.js", + "lib/_stream_passthrough.js", + "lib/_stream_readable.js", + "lib/_stream_transform.js", + "lib/_stream_wrap.js", + "lib/_stream_writable.js", + "lib/_tls_common.js", + "lib/_tls_wrap.js", + "lib/assert.js", + "lib/assert/strict.js", + "lib/async_hooks.js", + "lib/buffer.js", + "lib/child_process.js", + "lib/cluster.js", + "lib/console.js", + "lib/constants.js", + "lib/crypto.js", + "lib/dgram.js", + "lib/diagnostics_channel.js", + "lib/dns.js", + "lib/dns/promises.js", + "lib/domain.js", + "lib/events.js", + "lib/fs.js", + "lib/fs/promises.js", + "lib/http.js", + "lib/http2.js", + "lib/https.js", + "lib/inspector.js", + "lib/internal/abort_controller.js", + "lib/internal/assert.js", + "lib/internal/assert/assertion_error.js", + "lib/internal/assert/calltracker.js", + "lib/internal/async_hooks.js", + "lib/internal/blob.js", + "lib/internal/blocklist.js", + "lib/internal/bootstrap/environment.js", + "lib/internal/bootstrap/loaders.js", + "lib/internal/bootstrap/node.js", + "lib/internal/bootstrap/pre_execution.js", + "lib/internal/bootstrap/switches/does_not_own_process_state.js", + "lib/internal/bootstrap/switches/does_own_process_state.js", + "lib/internal/bootstrap/switches/is_main_thread.js", + "lib/internal/bootstrap/switches/is_not_main_thread.js", + "lib/internal/buffer.js", + "lib/internal/child_process.js", + "lib/internal/child_process/serialization.js", + "lib/internal/cli_table.js", + "lib/internal/cluster/child.js", + "lib/internal/cluster/primary.js", + "lib/internal/cluster/round_robin_handle.js", + "lib/internal/cluster/shared_handle.js", + "lib/internal/cluster/utils.js", + "lib/internal/cluster/worker.js", + "lib/internal/console/constructor.js", + "lib/internal/console/global.js", + "lib/internal/constants.js", + "lib/internal/crypto/aes.js", + "lib/internal/crypto/certificate.js", + "lib/internal/crypto/cfrg.js", + "lib/internal/crypto/cipher.js", + "lib/internal/crypto/diffiehellman.js", + "lib/internal/crypto/ec.js", + "lib/internal/crypto/hash.js", + "lib/internal/crypto/hashnames.js", + "lib/internal/crypto/hkdf.js", + "lib/internal/crypto/keygen.js", + "lib/internal/crypto/keys.js", + "lib/internal/crypto/mac.js", + "lib/internal/crypto/pbkdf2.js", + "lib/internal/crypto/random.js", + "lib/internal/crypto/rsa.js", + "lib/internal/crypto/scrypt.js", + "lib/internal/crypto/sig.js", + "lib/internal/crypto/util.js", + "lib/internal/crypto/webcrypto.js", + "lib/internal/crypto/x509.js", + "lib/internal/debugger/inspect.js", + "lib/internal/debugger/inspect_client.js", + "lib/internal/debugger/inspect_repl.js", + "lib/internal/dgram.js", + "lib/internal/dns/promises.js", + "lib/internal/dns/utils.js", + "lib/internal/dtrace.js", + "lib/internal/encoding.js", + "lib/internal/error_serdes.js", + "lib/internal/errors.js", + "lib/internal/event_target.js", + "lib/internal/fixed_queue.js", + "lib/internal/freelist.js", + "lib/internal/freeze_intrinsics.js", + "lib/internal/fs/cp/cp-sync.js", + "lib/internal/fs/cp/cp.js", + "lib/internal/fs/dir.js", + "lib/internal/fs/promises.js", + "lib/internal/fs/read_file_context.js", + "lib/internal/fs/rimraf.js", + "lib/internal/fs/streams.js", + "lib/internal/fs/sync_write_stream.js", + "lib/internal/fs/utils.js", + "lib/internal/fs/watchers.js", + "lib/internal/heap_utils.js", + "lib/internal/histogram.js", + "lib/internal/http.js", + "lib/internal/http2/compat.js", + "lib/internal/http2/core.js", + "lib/internal/http2/util.js", + "lib/internal/idna.js", + "lib/internal/inspector_async_hook.js", + "lib/internal/js_stream_socket.js", + "lib/internal/legacy/processbinding.js", + "lib/internal/linkedlist.js", + "lib/internal/main/check_syntax.js", + "lib/internal/main/eval_stdin.js", + "lib/internal/main/eval_string.js", + "lib/internal/main/inspect.js", + "lib/internal/main/mksnapshot.js", + "lib/internal/main/print_help.js", + "lib/internal/main/prof_process.js", + "lib/internal/main/repl.js", + "lib/internal/main/run_main_module.js", + "lib/internal/main/test_runner.js", + "lib/internal/main/watch_mode.js", + "lib/internal/main/worker_thread.js", + "lib/internal/modules/cjs/helpers.js", + "lib/internal/modules/cjs/loader.js", + "lib/internal/modules/esm/assert.js", + "lib/internal/modules/esm/create_dynamic_module.js", + "lib/internal/modules/esm/fetch_module.js", + "lib/internal/modules/esm/formats.js", + "lib/internal/modules/esm/get_format.js", + "lib/internal/modules/esm/handle_process_exit.js", + "lib/internal/modules/esm/initialize_import_meta.js", + "lib/internal/modules/esm/load.js", + "lib/internal/modules/esm/loader.js", + "lib/internal/modules/esm/module_job.js", + "lib/internal/modules/esm/module_map.js", + "lib/internal/modules/esm/package_config.js", + "lib/internal/modules/esm/resolve.js", + "lib/internal/modules/esm/translators.js", + "lib/internal/modules/package_json_reader.js", + "lib/internal/modules/run_main.js", + "lib/internal/net.js", + "lib/internal/options.js", + "lib/internal/per_context/domexception.js", + "lib/internal/per_context/messageport.js", + "lib/internal/per_context/primordials.js", + "lib/internal/perf/event_loop_delay.js", + "lib/internal/perf/event_loop_utilization.js", + "lib/internal/perf/nodetiming.js", + "lib/internal/perf/observe.js", + "lib/internal/perf/performance.js", + "lib/internal/perf/performance_entry.js", + "lib/internal/perf/resource_timing.js", + "lib/internal/perf/timerify.js", + "lib/internal/perf/usertiming.js", + "lib/internal/perf/utils.js", + "lib/internal/policy/manifest.js", + "lib/internal/policy/sri.js", + "lib/internal/priority_queue.js", + "lib/internal/process/esm_loader.js", + "lib/internal/process/execution.js", + "lib/internal/process/per_thread.js", + "lib/internal/process/policy.js", + "lib/internal/process/promises.js", + "lib/internal/process/report.js", + "lib/internal/process/signal.js", + "lib/internal/process/task_queues.js", + "lib/internal/process/warning.js", + "lib/internal/process/worker_thread_only.js", + "lib/internal/promise_hooks.js", + "lib/internal/querystring.js", + "lib/internal/readline/callbacks.js", + "lib/internal/readline/emitKeypressEvents.js", + "lib/internal/readline/interface.js", + "lib/internal/readline/utils.js", + "lib/internal/repl.js", + "lib/internal/repl/await.js", + "lib/internal/repl/history.js", + "lib/internal/repl/utils.js", + "lib/internal/socket_list.js", + "lib/internal/socketaddress.js", + "lib/internal/source_map/prepare_stack_trace.js", + "lib/internal/source_map/source_map.js", + "lib/internal/source_map/source_map_cache.js", + "lib/internal/stream_base_commons.js", + "lib/internal/streams/add-abort-signal.js", + "lib/internal/streams/buffer_list.js", + "lib/internal/streams/compose.js", + "lib/internal/streams/destroy.js", + "lib/internal/streams/duplex.js", + "lib/internal/streams/duplexify.js", + "lib/internal/streams/end-of-stream.js", + "lib/internal/streams/from.js", + "lib/internal/streams/lazy_transform.js", + "lib/internal/streams/legacy.js", + "lib/internal/streams/operators.js", + "lib/internal/streams/passthrough.js", + "lib/internal/streams/pipeline.js", + "lib/internal/streams/readable.js", + "lib/internal/streams/state.js", + "lib/internal/streams/transform.js", + "lib/internal/streams/utils.js", + "lib/internal/streams/writable.js", + "lib/internal/test/binding.js", + "lib/internal/test/transfer.js", + "lib/internal/test_runner/harness.js", + "lib/internal/test_runner/runner.js", + "lib/internal/test_runner/tap_stream.js", + "lib/internal/test_runner/test.js", + "lib/internal/test_runner/utils.js", + "lib/internal/timers.js", + "lib/internal/tls/parse-cert-string.js", + "lib/internal/tls/secure-context.js", + "lib/internal/tls/secure-pair.js", + "lib/internal/trace_events_async_hooks.js", + "lib/internal/tty.js", + "lib/internal/url.js", + "lib/internal/util.js", + "lib/internal/util/colors.js", + "lib/internal/util/comparisons.js", + "lib/internal/util/debuglog.js", + "lib/internal/util/inspect.js", + "lib/internal/util/inspector.js", + "lib/internal/util/iterable_weak_map.js", + "lib/internal/util/parse_args/parse_args.js", + "lib/internal/util/parse_args/utils.js", + "lib/internal/util/types.js", + "lib/internal/v8/startup_snapshot.js", + "lib/internal/v8_prof_polyfill.js", + "lib/internal/v8_prof_processor.js", + "lib/internal/validators.js", + "lib/internal/vm/module.js", + "lib/internal/watch_mode/files_watcher.js", + "lib/internal/watchdog.js", + "lib/internal/webstreams/adapters.js", + "lib/internal/webstreams/compression.js", + "lib/internal/webstreams/encoding.js", + "lib/internal/webstreams/queuingstrategies.js", + "lib/internal/webstreams/readablestream.js", + "lib/internal/webstreams/transfer.js", + "lib/internal/webstreams/transformstream.js", + "lib/internal/webstreams/util.js", + "lib/internal/webstreams/writablestream.js", + "lib/internal/worker.js", + "lib/internal/worker/io.js", + "lib/internal/worker/js_transferable.js", + "lib/module.js", + "lib/net.js", + "lib/os.js", + "lib/path.js", + "lib/path/posix.js", + "lib/path/win32.js", + "lib/perf_hooks.js", + "lib/process.js", + "lib/punycode.js", + "lib/querystring.js", + "lib/readline.js", + "lib/repl.js", + "lib/stream.js", + "lib/stream/consumers.js", + "lib/stream/promises.js", + "lib/stream/web.js", + "lib/string_decoder.js", + "lib/sys.js", + "lib/test.js", + "lib/timers.js", + "lib/timers/promises.js", + "lib/tls.js", + "lib/trace_events.js", + "lib/tty.js", + "lib/url.js", + "lib/util.js", + "lib/util/types.js", + "lib/v8.js", + "lib/vm.js", + "lib/wasi.js", + "lib/worker_threads.js", + "lib/zlib.js" + ], + "node_module_version": 93, + "node_no_browser_globals": "false", + "node_prefix": "/opt/homebrew/Cellar/node@16/16.20.1_1", + "node_release_urlbase": "", + "node_shared": "false", + "node_shared_brotli": "true", + "node_shared_cares": "true", + "node_shared_http_parser": "false", + "node_shared_libuv": "true", + "node_shared_nghttp2": "true", + "node_shared_nghttp3": "false", + "node_shared_ngtcp2": "false", + "node_shared_openssl": "true", + "node_shared_zlib": "true", + "node_tag": "", + "node_target_type": "executable", + "node_use_bundled_v8": "true", + "node_use_dtrace": "true", + "node_use_etw": "false", + "node_use_node_code_cache": "true", + "node_use_node_snapshot": "true", + "node_use_openssl": "true", + "node_use_v8_platform": "true", + "node_with_ltcg": "false", + "node_without_node_options": "false", + "openssl_fips": "", + "openssl_is_fips": "false", + "openssl_quic": "false", + "ossfuzz": "false", + "shlib_suffix": "93.dylib", + "target_arch": "arm64", + "v8_enable_31bit_smis_on_64bit_arch": 0, + "v8_enable_gdbjit": 0, + "v8_enable_hugepage": 0, + "v8_enable_i18n_support": 1, + "v8_enable_inspector": 1, + "v8_enable_lite_mode": 0, + "v8_enable_object_print": 1, + "v8_enable_pointer_compression": 0, + "v8_enable_webassembly": 1, + "v8_no_strict_aliasing": 1, + "v8_optimized_debug": 1, + "v8_promise_internal_field_count": 1, + "v8_random_seed": 0, + "v8_trace_maps": 0, + "v8_use_siphash": 1, + "want_separate_host_toolset": 0, + "nodedir": "/Users/klasseg/Library/Caches/node-gyp/16.20.1", + "standalone_static_library": 1, + "metrics_registry": "https://registry.npmjs.org/", + "global_prefix": "/opt/homebrew", + "local_prefix": "/Users/klasseg/Workspace/arc/arc-lang/crates/tree-sitter", + "globalconfig": "/opt/homebrew/etc/npmrc", + "init_module": "/Users/klasseg/.npm-init.js", + "userconfig": "/Users/klasseg/.npmrc", + "node_gyp": "/opt/homebrew/Cellar/node@16/16.20.1_1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js", + "cache": "/Users/klasseg/.npm", + "user_agent": "npm/8.19.4 node/v16.20.1 darwin arm64 workspaces/false", + "prefix": "/opt/homebrew" + } +} diff --git a/arc-lang/crates/tree-sitter/build/gyp-mac-tool b/arc-lang/crates/tree-sitter/build/gyp-mac-tool new file mode 100755 index 000000000..ffef860c4 --- /dev/null +++ b/arc-lang/crates/tree-sitter/build/gyp-mac-tool @@ -0,0 +1,772 @@ +#!/usr/bin/env python3 +# Generated by gyp. Do not edit. +# Copyright (c) 2012 Google Inc. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Utility functions to perform Xcode-style build steps. + +These functions are executed via gyp-mac-tool when using the Makefile generator. +""" + + +import fcntl +import fnmatch +import glob +import json +import os +import plistlib +import re +import shutil +import struct +import subprocess +import sys +import tempfile + + +def main(args): + executor = MacTool() + exit_code = executor.Dispatch(args) + if exit_code is not None: + sys.exit(exit_code) + + +class MacTool: + """This class performs all the Mac tooling steps. The methods can either be + executed directly, or dispatched from an argument list.""" + + def Dispatch(self, args): + """Dispatches a string command to a method.""" + if len(args) < 1: + raise Exception("Not enough arguments") + + method = "Exec%s" % self._CommandifyName(args[0]) + return getattr(self, method)(*args[1:]) + + def _CommandifyName(self, name_string): + """Transforms a tool name like copy-info-plist to CopyInfoPlist""" + return name_string.title().replace("-", "") + + def ExecCopyBundleResource(self, source, dest, convert_to_binary): + """Copies a resource file to the bundle/Resources directory, performing any + necessary compilation on each resource.""" + convert_to_binary = convert_to_binary == "True" + extension = os.path.splitext(source)[1].lower() + if os.path.isdir(source): + # Copy tree. + # TODO(thakis): This copies file attributes like mtime, while the + # single-file branch below doesn't. This should probably be changed to + # be consistent with the single-file branch. + if os.path.exists(dest): + shutil.rmtree(dest) + shutil.copytree(source, dest) + elif extension == ".xib": + return self._CopyXIBFile(source, dest) + elif extension == ".storyboard": + return self._CopyXIBFile(source, dest) + elif extension == ".strings" and not convert_to_binary: + self._CopyStringsFile(source, dest) + else: + if os.path.exists(dest): + os.unlink(dest) + shutil.copy(source, dest) + + if convert_to_binary and extension in (".plist", ".strings"): + self._ConvertToBinary(dest) + + def _CopyXIBFile(self, source, dest): + """Compiles a XIB file with ibtool into a binary plist in the bundle.""" + + # ibtool sometimes crashes with relative paths. See crbug.com/314728. + base = os.path.dirname(os.path.realpath(__file__)) + if os.path.relpath(source): + source = os.path.join(base, source) + if os.path.relpath(dest): + dest = os.path.join(base, dest) + + args = ["xcrun", "ibtool", "--errors", "--warnings", "--notices"] + + if os.environ["XCODE_VERSION_ACTUAL"] > "0700": + args.extend(["--auto-activate-custom-fonts"]) + if "IPHONEOS_DEPLOYMENT_TARGET" in os.environ: + args.extend( + [ + "--target-device", + "iphone", + "--target-device", + "ipad", + "--minimum-deployment-target", + os.environ["IPHONEOS_DEPLOYMENT_TARGET"], + ] + ) + else: + args.extend( + [ + "--target-device", + "mac", + "--minimum-deployment-target", + os.environ["MACOSX_DEPLOYMENT_TARGET"], + ] + ) + + args.extend( + ["--output-format", "human-readable-text", "--compile", dest, source] + ) + + ibtool_section_re = re.compile(r"/\*.*\*/") + ibtool_re = re.compile(r".*note:.*is clipping its content") + try: + stdout = subprocess.check_output(args) + except subprocess.CalledProcessError as e: + print(e.output) + raise + current_section_header = None + for line in stdout.splitlines(): + if ibtool_section_re.match(line): + current_section_header = line + elif not ibtool_re.match(line): + if current_section_header: + print(current_section_header) + current_section_header = None + print(line) + return 0 + + def _ConvertToBinary(self, dest): + subprocess.check_call( + ["xcrun", "plutil", "-convert", "binary1", "-o", dest, dest] + ) + + def _CopyStringsFile(self, source, dest): + """Copies a .strings file using iconv to reconvert the input into UTF-16.""" + input_code = self._DetectInputEncoding(source) or "UTF-8" + + # Xcode's CpyCopyStringsFile / builtin-copyStrings seems to call + # CFPropertyListCreateFromXMLData() behind the scenes; at least it prints + # CFPropertyListCreateFromXMLData(): Old-style plist parser: missing + # semicolon in dictionary. + # on invalid files. Do the same kind of validation. + import CoreFoundation + + with open(source, "rb") as in_file: + s = in_file.read() + d = CoreFoundation.CFDataCreate(None, s, len(s)) + _, error = CoreFoundation.CFPropertyListCreateFromXMLData(None, d, 0, None) + if error: + return + + with open(dest, "wb") as fp: + fp.write(s.decode(input_code).encode("UTF-16")) + + def _DetectInputEncoding(self, file_name): + """Reads the first few bytes from file_name and tries to guess the text + encoding. Returns None as a guess if it can't detect it.""" + with open(file_name, "rb") as fp: + try: + header = fp.read(3) + except Exception: + return None + if header.startswith(b"\xFE\xFF"): + return "UTF-16" + elif header.startswith(b"\xFF\xFE"): + return "UTF-16" + elif header.startswith(b"\xEF\xBB\xBF"): + return "UTF-8" + else: + return None + + def ExecCopyInfoPlist(self, source, dest, convert_to_binary, *keys): + """Copies the |source| Info.plist to the destination directory |dest|.""" + # Read the source Info.plist into memory. + with open(source) as fd: + lines = fd.read() + + # Insert synthesized key/value pairs (e.g. BuildMachineOSBuild). + plist = plistlib.readPlistFromString(lines) + if keys: + plist.update(json.loads(keys[0])) + lines = plistlib.writePlistToString(plist) + + # Go through all the environment variables and replace them as variables in + # the file. + IDENT_RE = re.compile(r"[_/\s]") + for key in os.environ: + if key.startswith("_"): + continue + evar = "${%s}" % key + evalue = os.environ[key] + lines = lines.replace(lines, evar, evalue) + + # Xcode supports various suffices on environment variables, which are + # all undocumented. :rfc1034identifier is used in the standard project + # template these days, and :identifier was used earlier. They are used to + # convert non-url characters into things that look like valid urls -- + # except that the replacement character for :identifier, '_' isn't valid + # in a URL either -- oops, hence :rfc1034identifier was born. + evar = "${%s:identifier}" % key + evalue = IDENT_RE.sub("_", os.environ[key]) + lines = lines.replace(lines, evar, evalue) + + evar = "${%s:rfc1034identifier}" % key + evalue = IDENT_RE.sub("-", os.environ[key]) + lines = lines.replace(lines, evar, evalue) + + # Remove any keys with values that haven't been replaced. + lines = lines.splitlines() + for i in range(len(lines)): + if lines[i].strip().startswith("${"): + lines[i] = None + lines[i - 1] = None + lines = "\n".join(line for line in lines if line is not None) + + # Write out the file with variables replaced. + with open(dest, "w") as fd: + fd.write(lines) + + # Now write out PkgInfo file now that the Info.plist file has been + # "compiled". + self._WritePkgInfo(dest) + + if convert_to_binary == "True": + self._ConvertToBinary(dest) + + def _WritePkgInfo(self, info_plist): + """This writes the PkgInfo file from the data stored in Info.plist.""" + plist = plistlib.readPlist(info_plist) + if not plist: + return + + # Only create PkgInfo for executable types. + package_type = plist["CFBundlePackageType"] + if package_type != "APPL": + return + + # The format of PkgInfo is eight characters, representing the bundle type + # and bundle signature, each four characters. If that is missing, four + # '?' characters are used instead. + signature_code = plist.get("CFBundleSignature", "????") + if len(signature_code) != 4: # Wrong length resets everything, too. + signature_code = "?" * 4 + + dest = os.path.join(os.path.dirname(info_plist), "PkgInfo") + with open(dest, "w") as fp: + fp.write(f"{package_type}{signature_code}") + + def ExecFlock(self, lockfile, *cmd_list): + """Emulates the most basic behavior of Linux's flock(1).""" + # Rely on exception handling to report errors. + fd = os.open(lockfile, os.O_RDONLY | os.O_NOCTTY | os.O_CREAT, 0o666) + fcntl.flock(fd, fcntl.LOCK_EX) + return subprocess.call(cmd_list) + + def ExecFilterLibtool(self, *cmd_list): + """Calls libtool and filters out '/path/to/libtool: file: foo.o has no + symbols'.""" + libtool_re = re.compile( + r"^.*libtool: (?:for architecture: \S* )?" r"file: .* has no symbols$" + ) + libtool_re5 = re.compile( + r"^.*libtool: warning for library: " + + r".* the table of contents is empty " + + r"\(no object file members in the library define global symbols\)$" + ) + env = os.environ.copy() + # Ref: + # http://www.opensource.apple.com/source/cctools/cctools-809/misc/libtool.c + # The problem with this flag is that it resets the file mtime on the file to + # epoch=0, e.g. 1970-1-1 or 1969-12-31 depending on timezone. + env["ZERO_AR_DATE"] = "1" + libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE, env=env) + err = libtoolout.communicate()[1].decode("utf-8") + for line in err.splitlines(): + if not libtool_re.match(line) and not libtool_re5.match(line): + print(line, file=sys.stderr) + # Unconditionally touch the output .a file on the command line if present + # and the command succeeded. A bit hacky. + if not libtoolout.returncode: + for i in range(len(cmd_list) - 1): + if cmd_list[i] == "-o" and cmd_list[i + 1].endswith(".a"): + os.utime(cmd_list[i + 1], None) + break + return libtoolout.returncode + + def ExecPackageIosFramework(self, framework): + # Find the name of the binary based on the part before the ".framework". + binary = os.path.basename(framework).split(".")[0] + module_path = os.path.join(framework, "Modules") + if not os.path.exists(module_path): + os.mkdir(module_path) + module_template = ( + "framework module %s {\n" + ' umbrella header "%s.h"\n' + "\n" + " export *\n" + " module * { export * }\n" + "}\n" % (binary, binary) + ) + + with open(os.path.join(module_path, "module.modulemap"), "w") as module_file: + module_file.write(module_template) + + def ExecPackageFramework(self, framework, version): + """Takes a path to Something.framework and the Current version of that and + sets up all the symlinks.""" + # Find the name of the binary based on the part before the ".framework". + binary = os.path.basename(framework).split(".")[0] + + CURRENT = "Current" + RESOURCES = "Resources" + VERSIONS = "Versions" + + if not os.path.exists(os.path.join(framework, VERSIONS, version, binary)): + # Binary-less frameworks don't seem to contain symlinks (see e.g. + # chromium's out/Debug/org.chromium.Chromium.manifest/ bundle). + return + + # Move into the framework directory to set the symlinks correctly. + pwd = os.getcwd() + os.chdir(framework) + + # Set up the Current version. + self._Relink(version, os.path.join(VERSIONS, CURRENT)) + + # Set up the root symlinks. + self._Relink(os.path.join(VERSIONS, CURRENT, binary), binary) + self._Relink(os.path.join(VERSIONS, CURRENT, RESOURCES), RESOURCES) + + # Back to where we were before! + os.chdir(pwd) + + def _Relink(self, dest, link): + """Creates a symlink to |dest| named |link|. If |link| already exists, + it is overwritten.""" + if os.path.lexists(link): + os.remove(link) + os.symlink(dest, link) + + def ExecCompileIosFrameworkHeaderMap(self, out, framework, *all_headers): + framework_name = os.path.basename(framework).split(".")[0] + all_headers = [os.path.abspath(header) for header in all_headers] + filelist = {} + for header in all_headers: + filename = os.path.basename(header) + filelist[filename] = header + filelist[os.path.join(framework_name, filename)] = header + WriteHmap(out, filelist) + + def ExecCopyIosFrameworkHeaders(self, framework, *copy_headers): + header_path = os.path.join(framework, "Headers") + if not os.path.exists(header_path): + os.makedirs(header_path) + for header in copy_headers: + shutil.copy(header, os.path.join(header_path, os.path.basename(header))) + + def ExecCompileXcassets(self, keys, *inputs): + """Compiles multiple .xcassets files into a single .car file. + + This invokes 'actool' to compile all the inputs .xcassets files. The + |keys| arguments is a json-encoded dictionary of extra arguments to + pass to 'actool' when the asset catalogs contains an application icon + or a launch image. + + Note that 'actool' does not create the Assets.car file if the asset + catalogs does not contains imageset. + """ + command_line = [ + "xcrun", + "actool", + "--output-format", + "human-readable-text", + "--compress-pngs", + "--notices", + "--warnings", + "--errors", + ] + is_iphone_target = "IPHONEOS_DEPLOYMENT_TARGET" in os.environ + if is_iphone_target: + platform = os.environ["CONFIGURATION"].split("-")[-1] + if platform not in ("iphoneos", "iphonesimulator"): + platform = "iphonesimulator" + command_line.extend( + [ + "--platform", + platform, + "--target-device", + "iphone", + "--target-device", + "ipad", + "--minimum-deployment-target", + os.environ["IPHONEOS_DEPLOYMENT_TARGET"], + "--compile", + os.path.abspath(os.environ["CONTENTS_FOLDER_PATH"]), + ] + ) + else: + command_line.extend( + [ + "--platform", + "macosx", + "--target-device", + "mac", + "--minimum-deployment-target", + os.environ["MACOSX_DEPLOYMENT_TARGET"], + "--compile", + os.path.abspath(os.environ["UNLOCALIZED_RESOURCES_FOLDER_PATH"]), + ] + ) + if keys: + keys = json.loads(keys) + for key, value in keys.items(): + arg_name = "--" + key + if isinstance(value, bool): + if value: + command_line.append(arg_name) + elif isinstance(value, list): + for v in value: + command_line.append(arg_name) + command_line.append(str(v)) + else: + command_line.append(arg_name) + command_line.append(str(value)) + # Note: actool crashes if inputs path are relative, so use os.path.abspath + # to get absolute path name for inputs. + command_line.extend(map(os.path.abspath, inputs)) + subprocess.check_call(command_line) + + def ExecMergeInfoPlist(self, output, *inputs): + """Merge multiple .plist files into a single .plist file.""" + merged_plist = {} + for path in inputs: + plist = self._LoadPlistMaybeBinary(path) + self._MergePlist(merged_plist, plist) + plistlib.writePlist(merged_plist, output) + + def ExecCodeSignBundle(self, key, entitlements, provisioning, path, preserve): + """Code sign a bundle. + + This function tries to code sign an iOS bundle, following the same + algorithm as Xcode: + 1. pick the provisioning profile that best match the bundle identifier, + and copy it into the bundle as embedded.mobileprovision, + 2. copy Entitlements.plist from user or SDK next to the bundle, + 3. code sign the bundle. + """ + substitutions, overrides = self._InstallProvisioningProfile( + provisioning, self._GetCFBundleIdentifier() + ) + entitlements_path = self._InstallEntitlements( + entitlements, substitutions, overrides + ) + + args = ["codesign", "--force", "--sign", key] + if preserve == "True": + args.extend(["--deep", "--preserve-metadata=identifier,entitlements"]) + else: + args.extend(["--entitlements", entitlements_path]) + args.extend(["--timestamp=none", path]) + subprocess.check_call(args) + + def _InstallProvisioningProfile(self, profile, bundle_identifier): + """Installs embedded.mobileprovision into the bundle. + + Args: + profile: string, optional, short name of the .mobileprovision file + to use, if empty or the file is missing, the best file installed + will be used + bundle_identifier: string, value of CFBundleIdentifier from Info.plist + + Returns: + A tuple containing two dictionary: variables substitutions and values + to overrides when generating the entitlements file. + """ + source_path, provisioning_data, team_id = self._FindProvisioningProfile( + profile, bundle_identifier + ) + target_path = os.path.join( + os.environ["BUILT_PRODUCTS_DIR"], + os.environ["CONTENTS_FOLDER_PATH"], + "embedded.mobileprovision", + ) + shutil.copy2(source_path, target_path) + substitutions = self._GetSubstitutions(bundle_identifier, team_id + ".") + return substitutions, provisioning_data["Entitlements"] + + def _FindProvisioningProfile(self, profile, bundle_identifier): + """Finds the .mobileprovision file to use for signing the bundle. + + Checks all the installed provisioning profiles (or if the user specified + the PROVISIONING_PROFILE variable, only consult it) and select the most + specific that correspond to the bundle identifier. + + Args: + profile: string, optional, short name of the .mobileprovision file + to use, if empty or the file is missing, the best file installed + will be used + bundle_identifier: string, value of CFBundleIdentifier from Info.plist + + Returns: + A tuple of the path to the selected provisioning profile, the data of + the embedded plist in the provisioning profile and the team identifier + to use for code signing. + + Raises: + SystemExit: if no .mobileprovision can be used to sign the bundle. + """ + profiles_dir = os.path.join( + os.environ["HOME"], "Library", "MobileDevice", "Provisioning Profiles" + ) + if not os.path.isdir(profiles_dir): + print( + "cannot find mobile provisioning for %s" % (bundle_identifier), + file=sys.stderr, + ) + sys.exit(1) + provisioning_profiles = None + if profile: + profile_path = os.path.join(profiles_dir, profile + ".mobileprovision") + if os.path.exists(profile_path): + provisioning_profiles = [profile_path] + if not provisioning_profiles: + provisioning_profiles = glob.glob( + os.path.join(profiles_dir, "*.mobileprovision") + ) + valid_provisioning_profiles = {} + for profile_path in provisioning_profiles: + profile_data = self._LoadProvisioningProfile(profile_path) + app_id_pattern = profile_data.get("Entitlements", {}).get( + "application-identifier", "" + ) + for team_identifier in profile_data.get("TeamIdentifier", []): + app_id = f"{team_identifier}.{bundle_identifier}" + if fnmatch.fnmatch(app_id, app_id_pattern): + valid_provisioning_profiles[app_id_pattern] = ( + profile_path, + profile_data, + team_identifier, + ) + if not valid_provisioning_profiles: + print( + "cannot find mobile provisioning for %s" % (bundle_identifier), + file=sys.stderr, + ) + sys.exit(1) + # If the user has multiple provisioning profiles installed that can be + # used for ${bundle_identifier}, pick the most specific one (ie. the + # provisioning profile whose pattern is the longest). + selected_key = max(valid_provisioning_profiles, key=lambda v: len(v)) + return valid_provisioning_profiles[selected_key] + + def _LoadProvisioningProfile(self, profile_path): + """Extracts the plist embedded in a provisioning profile. + + Args: + profile_path: string, path to the .mobileprovision file + + Returns: + Content of the plist embedded in the provisioning profile as a dictionary. + """ + with tempfile.NamedTemporaryFile() as temp: + subprocess.check_call( + ["security", "cms", "-D", "-i", profile_path, "-o", temp.name] + ) + return self._LoadPlistMaybeBinary(temp.name) + + def _MergePlist(self, merged_plist, plist): + """Merge |plist| into |merged_plist|.""" + for key, value in plist.items(): + if isinstance(value, dict): + merged_value = merged_plist.get(key, {}) + if isinstance(merged_value, dict): + self._MergePlist(merged_value, value) + merged_plist[key] = merged_value + else: + merged_plist[key] = value + else: + merged_plist[key] = value + + def _LoadPlistMaybeBinary(self, plist_path): + """Loads into a memory a plist possibly encoded in binary format. + + This is a wrapper around plistlib.readPlist that tries to convert the + plist to the XML format if it can't be parsed (assuming that it is in + the binary format). + + Args: + plist_path: string, path to a plist file, in XML or binary format + + Returns: + Content of the plist as a dictionary. + """ + try: + # First, try to read the file using plistlib that only supports XML, + # and if an exception is raised, convert a temporary copy to XML and + # load that copy. + return plistlib.readPlist(plist_path) + except Exception: + pass + with tempfile.NamedTemporaryFile() as temp: + shutil.copy2(plist_path, temp.name) + subprocess.check_call(["plutil", "-convert", "xml1", temp.name]) + return plistlib.readPlist(temp.name) + + def _GetSubstitutions(self, bundle_identifier, app_identifier_prefix): + """Constructs a dictionary of variable substitutions for Entitlements.plist. + + Args: + bundle_identifier: string, value of CFBundleIdentifier from Info.plist + app_identifier_prefix: string, value for AppIdentifierPrefix + + Returns: + Dictionary of substitutions to apply when generating Entitlements.plist. + """ + return { + "CFBundleIdentifier": bundle_identifier, + "AppIdentifierPrefix": app_identifier_prefix, + } + + def _GetCFBundleIdentifier(self): + """Extracts CFBundleIdentifier value from Info.plist in the bundle. + + Returns: + Value of CFBundleIdentifier in the Info.plist located in the bundle. + """ + info_plist_path = os.path.join( + os.environ["TARGET_BUILD_DIR"], os.environ["INFOPLIST_PATH"] + ) + info_plist_data = self._LoadPlistMaybeBinary(info_plist_path) + return info_plist_data["CFBundleIdentifier"] + + def _InstallEntitlements(self, entitlements, substitutions, overrides): + """Generates and install the ${BundleName}.xcent entitlements file. + + Expands variables "$(variable)" pattern in the source entitlements file, + add extra entitlements defined in the .mobileprovision file and the copy + the generated plist to "${BundlePath}.xcent". + + Args: + entitlements: string, optional, path to the Entitlements.plist template + to use, defaults to "${SDKROOT}/Entitlements.plist" + substitutions: dictionary, variable substitutions + overrides: dictionary, values to add to the entitlements + + Returns: + Path to the generated entitlements file. + """ + source_path = entitlements + target_path = os.path.join( + os.environ["BUILT_PRODUCTS_DIR"], os.environ["PRODUCT_NAME"] + ".xcent" + ) + if not source_path: + source_path = os.path.join(os.environ["SDKROOT"], "Entitlements.plist") + shutil.copy2(source_path, target_path) + data = self._LoadPlistMaybeBinary(target_path) + data = self._ExpandVariables(data, substitutions) + if overrides: + for key in overrides: + if key not in data: + data[key] = overrides[key] + plistlib.writePlist(data, target_path) + return target_path + + def _ExpandVariables(self, data, substitutions): + """Expands variables "$(variable)" in data. + + Args: + data: object, can be either string, list or dictionary + substitutions: dictionary, variable substitutions to perform + + Returns: + Copy of data where each references to "$(variable)" has been replaced + by the corresponding value found in substitutions, or left intact if + the key was not found. + """ + if isinstance(data, str): + for key, value in substitutions.items(): + data = data.replace("$(%s)" % key, value) + return data + if isinstance(data, list): + return [self._ExpandVariables(v, substitutions) for v in data] + if isinstance(data, dict): + return {k: self._ExpandVariables(data[k], substitutions) for k in data} + return data + + +def NextGreaterPowerOf2(x): + return 2 ** (x).bit_length() + + +def WriteHmap(output_name, filelist): + """Generates a header map based on |filelist|. + + Per Mark Mentovai: + A header map is structured essentially as a hash table, keyed by names used + in #includes, and providing pathnames to the actual files. + + The implementation below and the comment above comes from inspecting: + http://www.opensource.apple.com/source/distcc/distcc-2503/distcc_dist/include_server/headermap.py?txt + while also looking at the implementation in clang in: + https://llvm.org/svn/llvm-project/cfe/trunk/lib/Lex/HeaderMap.cpp + """ + magic = 1751998832 + version = 1 + _reserved = 0 + count = len(filelist) + capacity = NextGreaterPowerOf2(count) + strings_offset = 24 + (12 * capacity) + max_value_length = max(len(value) for value in filelist.values()) + + out = open(output_name, "wb") + out.write( + struct.pack( + " [ + $._whitespace, + $.line_comment, + // $.block_comment + ], + + externals: $ => [], + + word: $ => $.name, + + rules: { + program: $ => optional($._stmts), + _whitespace: $ => /[ \t\r\n]/, + line_comment: $ => token(seq('#', /.*/)), + name: $ => /[a-zA-Z_][a-zA-Z0-9_]*/, + index: $ => /[0-9]+/, + meta: $ => seq('@', '{', optional($._attributes), '}'), + _attributes: $ => seq($.attribute, repeat(seq(',', $.attribute))), + attribute: $ => seq($.name, optional(seq(':', $._constant))), + _constant: $ => choice( + $.constant_int, + $.constant_float, + $.constant_string, + $.constant_char, + $.constant_bool, + $.constant_unit, + ), + constant_int: $ => token.immediate(seq( + /-?[0-9]+/, + optional(/[a-zA-Z_][a-zA-Z0-9_]*/) + )), + constant_float: $ => /-?[0-9]+\.[0-9]+/, + constant_string: $ => seq( + $.string_quote, + repeat(choice( + $.string_interpolation, + $.string_content + )), + $.string_quote, + ), + string_quote: $ => '"', + string_content: $ => /[^$"]+/, + string_interpolation: $ => seq('$', choice($.block, $.name)), + constant_char: $ => seq("'", /[^']*/, "'"), + constant_bool: $ => choice('true', 'false'), + constant_unit: $ => seq('(', ')'), + _stmts: $ => repeat1($._stmt), + _stmt: $ => choice( + $.stmt_def, + $.stmt_type, + $.stmt_enum, + $.stmt_val, + $.stmt_var, + $.stmt_expr, + $.stmt_code, + $._stmt_noop + ), + stmt_def: $ => seq( + optional($.meta), + 'def', + field('name', $.name), + field('inner', seq( + optional(seq('[', optional($._generics), ']')), + '(', optional($._patterns), ')', + optional(seq(':', $._type)), + choice( + seq('=', $._expr, ';'), + $.block + ) + )) + ), + stmt_type: $ => seq( + optional($.meta), + 'type', + field('name', $.name), + field('inner', seq( + optional(seq('[', optional($._generics), ']')), + '=', + $._type, + ';' + )) + ), + stmt_enum: $ => seq( + optional($.meta), + 'enum', + field('name', $.name), + field('inner', seq( + optional(seq('[', optional($._generics), ']')), + '{', + repeat( + field('variant', + seq( + $.name, + optional( + choice( + seq('(', optional($._types), ')'), + seq('{', optional($._type_fields), '}'), + ) + ) + ) + ) + ), + '}', + )) + ), + stmt_val: $ => prec(1, seq('val', $._pattern, '=', $._expr, ';')), + stmt_var: $ => seq('var', $._pattern, '=', $._expr, ';'), + stmt_expr: $ => seq($._expr, ';'), + stmt_code: $ => prec(10, seq( + '---', + field('lang', choice('rust', 'python')), + optional(field('code', $.code)), + '---' + )), + code: $ => repeat1(/[^-]+|-[^-]/), + _stmt_noop: $ => ';', + _types: $ => seq($._type, repeat(seq(',', $._type))), + _type: $ => choice( + $.type_fun, + $.type_record_concat, + $.type_array_concat, + $.type_paren, + $.type_nominal, + $.type_tuple, + $.type_record, + $.type_array, + $.type_unit, + $.type_never, + $.type_wild, + ), + type_fun: $ => prec(1, seq('fun', '(', optional($._types), ')', ':', $._type)), + type_record_concat: $ => prec.left(2, seq($._type, '&', $._type)), + type_array_concat: $ => prec.left(2, seq($._type, '++', $._type)), + type_paren: $ => seq('(', $._type, ')'), + type_nominal: $ => prec.left(3, seq($.type_name, optional(seq('[', optional($._types), ']')))), + type_name: $ => $.name, + type_tuple: $ => seq('(', $._type, ',', optional($._type), ')'), + type_record: $ => seq('{', $._type_fields, '}'), + type_array: $ => seq('[', optional($._types), ']'), + type_unit: $ => seq('(', ')'), + type_never: $ => '!', + type_wild: $ => '_', + _type_fields: $ => seq($.type_field, repeat(seq(',', $.type_field))), + type_field: $ => seq($.name, optional(seq(':', $._type))), + generic: $ => $.name, + _generics: $ => seq($.generic, repeat(seq(',', $.generic))), + _patterns: $ => seq($._pattern, repeat(seq(',', $._pattern))), + _pattern_fields: $ => seq($.pattern_field, repeat(seq(',', $.pattern_field))), + pattern_field: $ => seq($.name, ':', $._pattern), + _pattern: $ => choice( + $.pattern_annot, + $.pattern_or, + $.pattern_record_concat, + $.pattern_array_concat, + $.pattern_paren, + $.pattern_constant, + $.pattern_name, + $.pattern_variant, + $.pattern_tuple, + $.pattern_record, + $.pattern_array, + $.pattern_wild, + ), + pattern_annot: $ => prec(1, seq($._pattern, ':', $._type)), + pattern_or: $ => prec.left(2, seq($._pattern, 'or', $._pattern)), + pattern_record_concat: $ => prec.left(2, seq($._pattern, '&', $._pattern)), + pattern_array_concat: $ => prec.left(2, seq($._pattern, '++', $._pattern)), + pattern_paren: $ => seq('(', $._pattern, ')'), + pattern_constant: $ => $._constant, + pattern_name: $ => $.name, + pattern_variant: $ => choice( + seq($.variant_name, '(', optional($._patterns), ')'), + seq($.variant_name, '{', optional($._pattern_fields), '}') + ), + pattern_tuple: $ => seq('(', $._pattern, ',', optional($._patterns), ')'), + pattern_record: $ => seq('{', optional($._pattern_fields), '}'), + pattern_array: $ => seq('[', optional($._patterns), ']'), + pattern_wild: $ => '_', + + variant_name: $ => $.name, + + _exprs: $ => seq($._expr, repeat(seq(',', $._expr))), + _expr_fields: $ => seq($.expr_field, repeat(seq(',', $.expr_field))), + expr_field: $ => choice( + $.expr_field_expr, + $.expr_field_name, + ), + expr_field_expr: $ => prec(1, seq($.name, ':', $._expr)), + expr_field_name: $ => prec(2, seq($._expr, '.', $.name)), + _expr: $ => choice( + $.expr_return, + $.expr_break, + $.expr_continue, + $.expr_throw, + $.expr_query, + $.expr_fun, + $.expr_binary, + $.expr_annot, + $.expr_call, + $.expr_tuple_access, + $.expr_record_access, + $.expr_array_access, + $.expr_method_call, + $.expr_paren, + $.expr_constant, + $.expr_name, + $.expr_array, + $.expr_tuple, + $.expr_record, + $.expr_do, + $.expr_if, + $.expr_match, + $.expr_loop, + $.expr_while, + $.expr_for, + $.expr_try, + $.expr_rust, + // $._expr_inject, + ), + expr_return: $ => prec.left(1, seq('return', optional($._expr))), + expr_break: $ => prec.left(1, seq('break', optional($._expr))), + expr_continue: $ => prec.left(1, 'continue'), + expr_throw: $ => prec.left(1, seq('throw', $._expr)), + expr_query: $ => prec.left(2, seq($.query_from, optional($._query_stmts))), + expr_rust: $ => seq('rust', $.rust), + rust: $ => $._rust, + _rust: $ => seq('{', repeat(choice(/[^{}]+/, $._rust)), '}'), + _query_stmts: $ => repeat1($._query_stmt), + _query_stmt: $ => choice( + $.query_from, + $.query_where, + $.query_join, + $.query_union, + $.query_group, + $.query_over, + $.query_select, + $.query_roll, + $.query_compute, + $.query_select, + $.query_into, + $.query_order, + $.query_val, + ), + + query_from: $ => seq('from', $._pattern, 'in', $._expr), + query_where: $ => seq('where', $._expr), + query_join: $ => seq('join', $._pattern, 'in', $._expr, 'on', $._expr), + query_union: $ => seq('union', $._expr), + query_group: $ => prec.left(2, seq('group', $._expr, optional($._as), '{', optional($._query_stmts), '}', optional($._as))), + query_over: $ => prec.left(2, seq('over', $._expr, '{', optional($._query_stmts), '}', optional($._as))), + query_roll: $ => prec.left(2, seq('roll', $._expr, optional($._of), optional($._as))), + query_compute: $ => prec.left(2, seq('compute', $._expr, optional($._of), optional($._as))), + query_select: $ => prec.left(2, seq('select', $._expr, optional($._as))), + query_val: $ => prec.left(2, seq('with', $._pattern, '=', $._expr)), + query_into: $ => seq('into', $._expr), + query_order: $ => prec.left(2, seq('order', $._expr, optional('desc'))), + + _as: $ => seq('as', $.name), + _of: $ => seq('of', $._expr), + + expr_fun: $ => prec.left(2, seq( + 'fun', + '(', $._patterns, ')', + optional(seq(':', $._type)), + choice( + seq('=', $._expr), + $.block + ) + )), + expr_binary: $ => choice( + prec.left(1, seq($._expr, choice('=', '+=', '-=', '*=', '/='), $._expr)), + prec.left(2, seq($._expr, choice('..', '..='), $._expr)), + prec.left(3, seq($._expr, choice('and', 'or'), $._expr)), + prec.left(4, seq($._expr, choice('==', '!='), $._expr)), + prec.left(5, seq($._expr, choice('<', '>', '<=', '>='), $._expr)), + prec.left(6, seq($._expr, choice('+', '-'), $._expr)), + prec.left(7, seq($._expr, choice('*', '/'), $._expr)), + ), + expr_unary: $ => prec(8, seq(choice('not', '-', '+'), $._expr)), + expr_annot: $ => prec(9, seq($._expr, ':', $._type)), + expr_call: $ => prec(10, seq( + field('function', $._expr), + optional(seq('::', '[', $._types, ']')), + '(', optional($._exprs), ')') + ), + expr_tuple_access: $ => prec(11, seq($._expr, '.', $.index)), + expr_record_access: $ => prec(11, seq($._expr, '.', $.name)), + expr_array_access: $ => prec(11, seq($._expr, '[', $._expr, ']')), + expr_method_call: $ => prec(12, seq( + $._expr, + '.', + field('name', $.name), + optional(seq('::', '[', $._types, ']')), + '(', optional($._exprs), ')' + )), + expr_paren: $ => seq('(', $._expr, ')'), + expr_constant: $ => $._constant, + expr_name: $ => $.name, + expr_array: $ => seq('[', optional($._exprs), ']'), + expr_tuple: $ => seq('(', $._expr, ',', optional($._exprs), ')'), + expr_record: $ => seq('{', optional($._expr_fields), '}'), + expr_do: $ => seq('do', $.block), + expr_if: $ => seq('if', $._expr, $.block, optional(seq('else', $.block))), + expr_match: $ => seq('match', $._expr, '{', $._arms, '}'), + expr_loop: $ => seq('loop', $.block), + expr_while: $ => seq('while', $._expr, $.block), + expr_for: $ => seq('for', $._pattern, 'in', $._expr, $.block), + expr_try: $ => seq('try', $.block, 'catch', '{', optional($._arms), '}', 'finally', $.block), + block: $ => seq('{', optional($._stmts), optional($._expr), '}'), + _arms: $ => seq($.arm, repeat(seq(',', $.arm))), + arm: $ => field('arm', seq($._pattern, '=>', $._expr)), + } +}); diff --git a/arc-lang/crates/tree-sitter/package.json b/arc-lang/crates/tree-sitter/package.json new file mode 100644 index 000000000..cd8d8c648 --- /dev/null +++ b/arc-lang/crates/tree-sitter/package.json @@ -0,0 +1,17 @@ +{ + "name": "tree-sitter-arclang", + "version": "1.0.0", + "description": "", + "main": "bindings/node", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "nan": "^2.17.0" + }, + "devDependencies": { + "tree-sitter-cli": "^0.20.8" + } +} diff --git a/arc-lang/crates/tree-sitter/parser/arclang.so b/arc-lang/crates/tree-sitter/parser/arclang.so new file mode 100755 index 000000000..604c9124b Binary files /dev/null and b/arc-lang/crates/tree-sitter/parser/arclang.so differ diff --git a/arc-lang/crates/tree-sitter/queries/arc_lang/highlights.scm b/arc-lang/crates/tree-sitter/queries/arc_lang/highlights.scm new file mode 100644 index 000000000..88cbc4f53 --- /dev/null +++ b/arc-lang/crates/tree-sitter/queries/arc_lang/highlights.scm @@ -0,0 +1,57 @@ +;; Literals + +(constant_string (string_quote) @string) +(constant_string (string_content) @string) +(constant_int) @number +(constant_bool) @boolean +(constant_float) @float +(constant_char) @character +(string_interpolation (block) @string.special) +(string_interpolation (name) @string.special) +(line_comment) @comment + +(stmt_code "---" @comment) + +;; Identifiers + +(expr_name (name) @variable) +(type_name (name) @type) + +(pattern_name (name) @variable) +(stmt_def name: (name) @function) +(stmt_type name: (name) @type) +(stmt_enum name: (name) @type) + +; (expr_call function: (expr_name (name) @function)) +; (expr_method_call name: ((name) @function)) + +((type_name) @type.builtin + (#any-of? @type.builtin + "i8" "i16" "i32" "i64" "i128" + "f32" "f64" + "u8" "u16" "u32" "u64" "u128" + "bool" "char" "String" + "Option" "Result" + "Vec" "Dict" "Stream" + "Time" "Duration" "SocketAddress" "File" "Path" "Url" +)) + +;; Keywords + +[ "if" "else" "match" "finally" "try" "catch" "throw" ] @conditional + +[ "loop" "while" "for" "break" "continue" + "from" "in" "as" "desc" "group" "into" "join" "on" "of" "select" "compute" "union" "over" "roll" "order" "where" "with" + ] @repeat + +[ + "def" "do" "fun" "return" + "type" "val" "var" "enum" + "rust" "python" +] @keyword + +;; Punctuation + +[ ";" ":" "::" "," "." "@" "{" "}" "[" "]" "(" ")" "=" "=>" "_" ] @punctuation + +[ "not" "and" "or" "+" "-" "*" "/" "==" "!=" "<" ">" "<=" ">=" "+=" "-=" "*=" "/=" ".." "..=" "&" "++" ] @operator diff --git a/arc-lang/crates/tree-sitter/queries/arc_lang/injections.scm b/arc-lang/crates/tree-sitter/queries/arc_lang/injections.scm new file mode 100644 index 000000000..05021ab6a --- /dev/null +++ b/arc-lang/crates/tree-sitter/queries/arc_lang/injections.scm @@ -0,0 +1,2 @@ +(stmt_code lang: "rust" code: (code) @injection.content (#set! injection.language "rust")) +(stmt_code lang: "python" code: (code) @injection.content (#set! injection.language "python")) diff --git a/arc-lang/crates/tree-sitter/queries/arc_lang/locals.scm b/arc-lang/crates/tree-sitter/queries/arc_lang/locals.scm new file mode 100644 index 000000000..7b6cf4562 --- /dev/null +++ b/arc-lang/crates/tree-sitter/queries/arc_lang/locals.scm @@ -0,0 +1,17 @@ +(stmt_def name: (name) @definition.function) +(stmt_type name: (name) @definition.type) +(stmt_enum name: (name) @definition.type) +(pattern_name (name) @definition.var) + +(expr_name (name) @reference) +(type_name (name) @reference) +(expr_call function: (expr_name (name) @reference)) +(expr_method_call name: ((name) @reference)) + +[ + (program) + ((_) @x (#has-parent? @x stmt_def)) + ((_) @x (#has-parent? @x stmt_type)) + ((_) @x (#has-parent? @x stmt_enum)) + (block) +] @scope diff --git a/arc-docs/src/history/mod.md b/arc-lang/crates/tree-sitter/queries/arc_lang/tags.scm similarity index 100% rename from arc-docs/src/history/mod.md rename to arc-lang/crates/tree-sitter/queries/arc_lang/tags.scm diff --git a/arc-lang/crates/tree-sitter/src/grammar.json b/arc-lang/crates/tree-sitter/src/grammar.json new file mode 100644 index 000000000..2692ca720 --- /dev/null +++ b/arc-lang/crates/tree-sitter/src/grammar.json @@ -0,0 +1,3389 @@ +{ + "name": "arc_lang", + "word": "name", + "rules": { + "program": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_stmts" + }, + { + "type": "BLANK" + } + ] + }, + "_whitespace": { + "type": "PATTERN", + "value": "[ \\t\\r\\n]" + }, + "line_comment": { + "type": "TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "#" + }, + { + "type": "PATTERN", + "value": ".*" + } + ] + } + }, + "name": { + "type": "PATTERN", + "value": "[a-zA-Z_][a-zA-Z0-9_]*" + }, + "index": { + "type": "PATTERN", + "value": "[0-9]+" + }, + "meta": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "@" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_attributes" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_attributes": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "attribute" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "attribute" + } + ] + } + } + ] + }, + "attribute": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_constant" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "_constant": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "constant_int" + }, + { + "type": "SYMBOL", + "name": "constant_float" + }, + { + "type": "SYMBOL", + "name": "constant_string" + }, + { + "type": "SYMBOL", + "name": "constant_char" + }, + { + "type": "SYMBOL", + "name": "constant_bool" + }, + { + "type": "SYMBOL", + "name": "constant_unit" + } + ] + }, + "constant_int": { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "PATTERN", + "value": "-?[0-9]+" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[a-zA-Z_][a-zA-Z0-9_]*" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "constant_float": { + "type": "PATTERN", + "value": "-?[0-9]+\\.[0-9]+" + }, + "constant_string": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "string_quote" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "string_interpolation" + }, + { + "type": "SYMBOL", + "name": "string_content" + } + ] + } + }, + { + "type": "SYMBOL", + "name": "string_quote" + } + ] + }, + "string_quote": { + "type": "STRING", + "value": "\"" + }, + "string_content": { + "type": "PATTERN", + "value": "[^$\"]+" + }, + "string_interpolation": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "$" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "SYMBOL", + "name": "name" + } + ] + } + ] + }, + "constant_char": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "PATTERN", + "value": "[^']*" + }, + { + "type": "STRING", + "value": "'" + } + ] + }, + "constant_bool": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "true" + }, + { + "type": "STRING", + "value": "false" + } + ] + }, + "constant_unit": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "_stmts": { + "type": "REPEAT1", + "content": { + "type": "SYMBOL", + "name": "_stmt" + } + }, + "_stmt": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "stmt_def" + }, + { + "type": "SYMBOL", + "name": "stmt_type" + }, + { + "type": "SYMBOL", + "name": "stmt_enum" + }, + { + "type": "SYMBOL", + "name": "stmt_val" + }, + { + "type": "SYMBOL", + "name": "stmt_var" + }, + { + "type": "SYMBOL", + "name": "stmt_expr" + }, + { + "type": "SYMBOL", + "name": "stmt_code" + }, + { + "type": "SYMBOL", + "name": "_stmt_noop" + } + ] + }, + "stmt_def": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "meta" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "def" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + { + "type": "FIELD", + "name": "inner", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_generics" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + } + ] + } + } + ] + }, + "stmt_type": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "meta" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "type" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + { + "type": "FIELD", + "name": "inner", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_generics" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": ";" + } + ] + } + } + ] + }, + "stmt_enum": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "meta" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "enum" + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + { + "type": "FIELD", + "name": "inner", + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_generics" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "FIELD", + "name": "variant", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_type_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + } + }, + { + "type": "STRING", + "value": "}" + } + ] + } + } + ] + }, + "stmt_val": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "val" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ";" + } + ] + } + }, + "stmt_var": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "var" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "stmt_expr": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + "stmt_code": { + "type": "PREC", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "---" + }, + { + "type": "FIELD", + "name": "lang", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "rust" + }, + { + "type": "STRING", + "value": "python" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "FIELD", + "name": "code", + "content": { + "type": "SYMBOL", + "name": "code" + } + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "---" + } + ] + } + }, + "code": { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[^-]+|-[^-]" + } + }, + "_stmt_noop": { + "type": "STRING", + "value": ";" + }, + "_types": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + } + ] + }, + "_type": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "type_fun" + }, + { + "type": "SYMBOL", + "name": "type_record_concat" + }, + { + "type": "SYMBOL", + "name": "type_array_concat" + }, + { + "type": "SYMBOL", + "name": "type_paren" + }, + { + "type": "SYMBOL", + "name": "type_nominal" + }, + { + "type": "SYMBOL", + "name": "type_tuple" + }, + { + "type": "SYMBOL", + "name": "type_record" + }, + { + "type": "SYMBOL", + "name": "type_array" + }, + { + "type": "SYMBOL", + "name": "type_unit" + }, + { + "type": "SYMBOL", + "name": "type_never" + }, + { + "type": "SYMBOL", + "name": "type_wild" + } + ] + }, + "type_fun": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fun" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "type_record_concat": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": "&" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "type_array_concat": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": "++" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "type_paren": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "type_nominal": { + "type": "PREC_LEFT", + "value": 3, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "type_name" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "type_name": { + "type": "SYMBOL", + "name": "name" + }, + "type_tuple": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_type" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "type_record": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "SYMBOL", + "name": "_type_fields" + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "type_array": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "type_unit": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "type_never": { + "type": "STRING", + "value": "!" + }, + "type_wild": { + "type": "STRING", + "value": "_" + }, + "_type_fields": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "type_field" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "type_field" + } + ] + } + } + ] + }, + "type_field": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "generic": { + "type": "SYMBOL", + "name": "name" + }, + "_generics": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "generic" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "generic" + } + ] + } + } + ] + }, + "_patterns": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_pattern" + } + ] + } + } + ] + }, + "_pattern_fields": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "pattern_field" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "pattern_field" + } + ] + } + } + ] + }, + "pattern_field": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_pattern" + } + ] + }, + "_pattern": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "pattern_annot" + }, + { + "type": "SYMBOL", + "name": "pattern_or" + }, + { + "type": "SYMBOL", + "name": "pattern_record_concat" + }, + { + "type": "SYMBOL", + "name": "pattern_array_concat" + }, + { + "type": "SYMBOL", + "name": "pattern_paren" + }, + { + "type": "SYMBOL", + "name": "pattern_constant" + }, + { + "type": "SYMBOL", + "name": "pattern_name" + }, + { + "type": "SYMBOL", + "name": "pattern_variant" + }, + { + "type": "SYMBOL", + "name": "pattern_tuple" + }, + { + "type": "SYMBOL", + "name": "pattern_record" + }, + { + "type": "SYMBOL", + "name": "pattern_array" + }, + { + "type": "SYMBOL", + "name": "pattern_wild" + } + ] + }, + "pattern_annot": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "pattern_or": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "or" + }, + { + "type": "SYMBOL", + "name": "_pattern" + } + ] + } + }, + "pattern_record_concat": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "&" + }, + { + "type": "SYMBOL", + "name": "_pattern" + } + ] + } + }, + "pattern_array_concat": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "++" + }, + { + "type": "SYMBOL", + "name": "_pattern" + } + ] + } + }, + "pattern_paren": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "pattern_constant": { + "type": "SYMBOL", + "name": "_constant" + }, + "pattern_name": { + "type": "SYMBOL", + "name": "name" + }, + "pattern_variant": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "variant_name" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "variant_name" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + } + ] + }, + "pattern_tuple": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "pattern_record": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "pattern_array": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "pattern_wild": { + "type": "STRING", + "value": "_" + }, + "variant_name": { + "type": "SYMBOL", + "name": "name" + }, + "_exprs": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + } + ] + }, + "_expr_fields": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "expr_field" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "expr_field" + } + ] + } + } + ] + }, + "expr_field": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expr_field_expr" + }, + { + "type": "SYMBOL", + "name": "expr_field_name" + } + ] + }, + "expr_field_expr": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "name" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + "expr_field_name": { + "type": "PREC", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "SYMBOL", + "name": "name" + } + ] + } + }, + "_expr": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expr_return" + }, + { + "type": "SYMBOL", + "name": "expr_break" + }, + { + "type": "SYMBOL", + "name": "expr_continue" + }, + { + "type": "SYMBOL", + "name": "expr_throw" + }, + { + "type": "SYMBOL", + "name": "expr_query" + }, + { + "type": "SYMBOL", + "name": "expr_fun" + }, + { + "type": "SYMBOL", + "name": "expr_binary" + }, + { + "type": "SYMBOL", + "name": "expr_annot" + }, + { + "type": "SYMBOL", + "name": "expr_call" + }, + { + "type": "SYMBOL", + "name": "expr_tuple_access" + }, + { + "type": "SYMBOL", + "name": "expr_record_access" + }, + { + "type": "SYMBOL", + "name": "expr_array_access" + }, + { + "type": "SYMBOL", + "name": "expr_method_call" + }, + { + "type": "SYMBOL", + "name": "expr_paren" + }, + { + "type": "SYMBOL", + "name": "expr_constant" + }, + { + "type": "SYMBOL", + "name": "expr_name" + }, + { + "type": "SYMBOL", + "name": "expr_array" + }, + { + "type": "SYMBOL", + "name": "expr_tuple" + }, + { + "type": "SYMBOL", + "name": "expr_record" + }, + { + "type": "SYMBOL", + "name": "expr_do" + }, + { + "type": "SYMBOL", + "name": "expr_if" + }, + { + "type": "SYMBOL", + "name": "expr_match" + }, + { + "type": "SYMBOL", + "name": "expr_loop" + }, + { + "type": "SYMBOL", + "name": "expr_while" + }, + { + "type": "SYMBOL", + "name": "expr_for" + }, + { + "type": "SYMBOL", + "name": "expr_try" + }, + { + "type": "SYMBOL", + "name": "expr_rust" + } + ] + }, + "expr_return": { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "return" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "expr_break": { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "break" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "expr_continue": { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "STRING", + "value": "continue" + } + }, + "expr_throw": { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "throw" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + "expr_query": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "query_from" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_query_stmts" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "expr_rust": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "rust" + }, + { + "type": "SYMBOL", + "name": "rust" + } + ] + }, + "rust": { + "type": "SYMBOL", + "name": "_rust" + }, + "_rust": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[^{}]+" + }, + { + "type": "SYMBOL", + "name": "_rust" + } + ] + } + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_query_stmts": { + "type": "REPEAT1", + "content": { + "type": "SYMBOL", + "name": "_query_stmt" + } + }, + "_query_stmt": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "query_from" + }, + { + "type": "SYMBOL", + "name": "query_where" + }, + { + "type": "SYMBOL", + "name": "query_join" + }, + { + "type": "SYMBOL", + "name": "query_union" + }, + { + "type": "SYMBOL", + "name": "query_group" + }, + { + "type": "SYMBOL", + "name": "query_over" + }, + { + "type": "SYMBOL", + "name": "query_select" + }, + { + "type": "SYMBOL", + "name": "query_roll" + }, + { + "type": "SYMBOL", + "name": "query_compute" + }, + { + "type": "SYMBOL", + "name": "query_select" + }, + { + "type": "SYMBOL", + "name": "query_into" + }, + { + "type": "SYMBOL", + "name": "query_order" + }, + { + "type": "SYMBOL", + "name": "query_val" + } + ] + }, + "query_from": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "from" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_where": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "where" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_join": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "join" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "on" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_union": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "union" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_group": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "group" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_query_stmts" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_over": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "over" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_query_stmts" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_roll": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "roll" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_of" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_compute": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "compute" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_of" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_select": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "select" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_as" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "query_val": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "with" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + "query_into": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "into" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "query_order": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "order" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "desc" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "_as": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "as" + }, + { + "type": "SYMBOL", + "name": "name" + } + ] + }, + "_of": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "of" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + "expr_fun": { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "fun" + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_patterns" + }, + { + "type": "STRING", + "value": ")" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + } + ] + } + }, + "expr_binary": { + "type": "CHOICE", + "members": [ + { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "=" + }, + { + "type": "STRING", + "value": "+=" + }, + { + "type": "STRING", + "value": "-=" + }, + { + "type": "STRING", + "value": "*=" + }, + { + "type": "STRING", + "value": "/=" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": ".." + }, + { + "type": "STRING", + "value": "..=" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 3, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "and" + }, + { + "type": "STRING", + "value": "or" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 4, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "==" + }, + { + "type": "STRING", + "value": "!=" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "<" + }, + { + "type": "STRING", + "value": ">" + }, + { + "type": "STRING", + "value": "<=" + }, + { + "type": "STRING", + "value": ">=" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 6, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "+" + }, + { + "type": "STRING", + "value": "-" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 7, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "*" + }, + { + "type": "STRING", + "value": "/" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + } + ] + }, + "expr_unary": { + "type": "PREC", + "value": 8, + "content": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "not" + }, + { + "type": "STRING", + "value": "-" + }, + { + "type": "STRING", + "value": "+" + } + ] + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + }, + "expr_annot": { + "type": "PREC", + "value": 9, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ":" + }, + { + "type": "SYMBOL", + "name": "_type" + } + ] + } + }, + "expr_call": { + "type": "PREC", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "function", + "content": { + "type": "SYMBOL", + "name": "_expr" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "::" + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_exprs" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } + }, + "expr_tuple_access": { + "type": "PREC", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "SYMBOL", + "name": "index" + } + ] + } + }, + "expr_record_access": { + "type": "PREC", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "SYMBOL", + "name": "name" + } + ] + } + }, + "expr_array_access": { + "type": "PREC", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "]" + } + ] + } + }, + "expr_method_call": { + "type": "PREC", + "value": 12, + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "." + }, + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "name" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "::" + }, + { + "type": "STRING", + "value": "[" + }, + { + "type": "SYMBOL", + "name": "_types" + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_exprs" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } + }, + "expr_paren": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "expr_constant": { + "type": "SYMBOL", + "name": "_constant" + }, + "expr_name": { + "type": "SYMBOL", + "name": "name" + }, + "expr_array": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "[" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_exprs" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "]" + } + ] + }, + "expr_tuple": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_exprs" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "expr_record": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr_fields" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "expr_do": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "do" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "expr_if": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "if" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "else" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + "expr_match": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "match" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "SYMBOL", + "name": "_arms" + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "expr_loop": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "loop" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "expr_while": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "while" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "expr_for": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "for" + }, + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "in" + }, + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "expr_try": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "try" + }, + { + "type": "SYMBOL", + "name": "block" + }, + { + "type": "STRING", + "value": "catch" + }, + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_arms" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + }, + { + "type": "STRING", + "value": "finally" + }, + { + "type": "SYMBOL", + "name": "block" + } + ] + }, + "block": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_stmts" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_expr" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "_arms": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "arm" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "arm" + } + ] + } + } + ] + }, + "arm": { + "type": "FIELD", + "name": "arm", + "content": { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_pattern" + }, + { + "type": "STRING", + "value": "=>" + }, + { + "type": "SYMBOL", + "name": "_expr" + } + ] + } + } + }, + "extras": [ + { + "type": "SYMBOL", + "name": "_whitespace" + }, + { + "type": "SYMBOL", + "name": "line_comment" + } + ], + "conflicts": [], + "precedences": [], + "externals": [], + "inline": [], + "supertypes": [] +} + diff --git a/arc-lang/crates/tree-sitter/src/node-types.json b/arc-lang/crates/tree-sitter/src/node-types.json new file mode 100644 index 000000000..d4920e625 --- /dev/null +++ b/arc-lang/crates/tree-sitter/src/node-types.json @@ -0,0 +1,7771 @@ +[ + { + "type": "arm", + "named": true, + "fields": { + "arm": { + "multiple": true, + "required": true, + "types": [ + { + "type": "=>", + "named": false + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + } + }, + { + "type": "attribute", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "constant_bool", + "named": true + }, + { + "type": "constant_char", + "named": true + }, + { + "type": "constant_float", + "named": true + }, + { + "type": "constant_int", + "named": true + }, + { + "type": "constant_string", + "named": true + }, + { + "type": "constant_unit", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "block", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "stmt_code", + "named": true + }, + { + "type": "stmt_def", + "named": true + }, + { + "type": "stmt_enum", + "named": true + }, + { + "type": "stmt_expr", + "named": true + }, + { + "type": "stmt_type", + "named": true + }, + { + "type": "stmt_val", + "named": true + }, + { + "type": "stmt_var", + "named": true + } + ] + } + }, + { + "type": "code", + "named": true, + "fields": {} + }, + { + "type": "constant_bool", + "named": true, + "fields": {} + }, + { + "type": "constant_char", + "named": true, + "fields": {} + }, + { + "type": "constant_string", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "string_content", + "named": true + }, + { + "type": "string_interpolation", + "named": true + }, + { + "type": "string_quote", + "named": true + } + ] + } + }, + { + "type": "constant_unit", + "named": true, + "fields": {} + }, + { + "type": "expr_annot", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "expr_array", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_array_access", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_binary", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_break", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_call", + "named": true, + "fields": { + "function": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "expr_constant", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant_bool", + "named": true + }, + { + "type": "constant_char", + "named": true + }, + { + "type": "constant_float", + "named": true + }, + { + "type": "constant_int", + "named": true + }, + { + "type": "constant_string", + "named": true + }, + { + "type": "constant_unit", + "named": true + } + ] + } + }, + { + "type": "expr_continue", + "named": true, + "fields": {} + }, + { + "type": "expr_do", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + }, + { + "type": "expr_field", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_field_expr", + "named": true + }, + { + "type": "expr_field_name", + "named": true + } + ] + } + }, + { + "type": "expr_field_expr", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "expr_field_name", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "expr_for", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "expr_fun", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "expr_if", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_loop", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + } + ] + } + }, + { + "type": "expr_match", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "arm", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_method_call", + "named": true, + "fields": { + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "expr_name", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "expr_paren", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_query", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "query_compute", + "named": true + }, + { + "type": "query_from", + "named": true + }, + { + "type": "query_group", + "named": true + }, + { + "type": "query_into", + "named": true + }, + { + "type": "query_join", + "named": true + }, + { + "type": "query_order", + "named": true + }, + { + "type": "query_over", + "named": true + }, + { + "type": "query_roll", + "named": true + }, + { + "type": "query_select", + "named": true + }, + { + "type": "query_union", + "named": true + }, + { + "type": "query_val", + "named": true + }, + { + "type": "query_where", + "named": true + } + ] + } + }, + { + "type": "expr_record", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "expr_field", + "named": true + } + ] + } + }, + { + "type": "expr_record_access", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "expr_return", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_rust", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "rust", + "named": true + } + ] + } + }, + { + "type": "expr_throw", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_try", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "arm", + "named": true + }, + { + "type": "block", + "named": true + } + ] + } + }, + { + "type": "expr_tuple", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "expr_tuple_access", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "index", + "named": true + } + ] + } + }, + { + "type": "expr_while", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "generic", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "meta", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "attribute", + "named": true + } + ] + } + }, + { + "type": "pattern_annot", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_array", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_array_concat", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_constant", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "constant_bool", + "named": true + }, + { + "type": "constant_char", + "named": true + }, + { + "type": "constant_float", + "named": true + }, + { + "type": "constant_int", + "named": true + }, + { + "type": "constant_string", + "named": true + }, + { + "type": "constant_unit", + "named": true + } + ] + } + }, + { + "type": "pattern_field", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "name", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_name", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "pattern_or", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_paren", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_record", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "pattern_field", + "named": true + } + ] + } + }, + { + "type": "pattern_record_concat", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_tuple", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "pattern_variant", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_field", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + }, + { + "type": "variant_name", + "named": true + } + ] + } + }, + { + "type": "pattern_wild", + "named": true, + "fields": {} + }, + { + "type": "program", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "stmt_code", + "named": true + }, + { + "type": "stmt_def", + "named": true + }, + { + "type": "stmt_enum", + "named": true + }, + { + "type": "stmt_expr", + "named": true + }, + { + "type": "stmt_type", + "named": true + }, + { + "type": "stmt_val", + "named": true + }, + { + "type": "stmt_var", + "named": true + } + ] + } + }, + { + "type": "query_compute", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "query_from", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "query_group", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "query_compute", + "named": true + }, + { + "type": "query_from", + "named": true + }, + { + "type": "query_group", + "named": true + }, + { + "type": "query_into", + "named": true + }, + { + "type": "query_join", + "named": true + }, + { + "type": "query_order", + "named": true + }, + { + "type": "query_over", + "named": true + }, + { + "type": "query_roll", + "named": true + }, + { + "type": "query_select", + "named": true + }, + { + "type": "query_union", + "named": true + }, + { + "type": "query_val", + "named": true + }, + { + "type": "query_where", + "named": true + } + ] + } + }, + { + "type": "query_into", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "query_join", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "query_order", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "query_over", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "query_compute", + "named": true + }, + { + "type": "query_from", + "named": true + }, + { + "type": "query_group", + "named": true + }, + { + "type": "query_into", + "named": true + }, + { + "type": "query_join", + "named": true + }, + { + "type": "query_order", + "named": true + }, + { + "type": "query_over", + "named": true + }, + { + "type": "query_roll", + "named": true + }, + { + "type": "query_select", + "named": true + }, + { + "type": "query_union", + "named": true + }, + { + "type": "query_val", + "named": true + }, + { + "type": "query_where", + "named": true + } + ] + } + }, + { + "type": "query_roll", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "query_select", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "query_union", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "query_val", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "query_where", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "rust", + "named": true, + "fields": {} + }, + { + "type": "stmt_code", + "named": true, + "fields": { + "code": { + "multiple": false, + "required": false, + "types": [ + { + "type": "code", + "named": true + } + ] + }, + "lang": { + "multiple": false, + "required": true, + "types": [ + { + "type": "python", + "named": false + }, + { + "type": "rust", + "named": false + } + ] + } + } + }, + { + "type": "stmt_def", + "named": true, + "fields": { + "inner": { + "multiple": true, + "required": true, + "types": [ + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": ";", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "block", + "named": true + }, + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "generic", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "meta", + "named": true + } + ] + } + }, + { + "type": "stmt_enum", + "named": true, + "fields": { + "inner": { + "multiple": true, + "required": true, + "types": [ + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "generic", + "named": true + }, + { + "type": "name", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_field", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + }, + { + "type": "{", + "named": false + }, + { + "type": "}", + "named": false + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + }, + "variant": { + "multiple": true, + "required": false, + "types": [ + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "name", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_field", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + }, + { + "type": "{", + "named": false + }, + { + "type": "}", + "named": false + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "meta", + "named": true + } + ] + } + }, + { + "type": "stmt_expr", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + } + ] + } + }, + { + "type": "stmt_type", + "named": true, + "fields": { + "inner": { + "multiple": true, + "required": true, + "types": [ + { + "type": ",", + "named": false + }, + { + "type": ";", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "generic", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + }, + "name": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + "children": { + "multiple": false, + "required": false, + "types": [ + { + "type": "meta", + "named": true + } + ] + } + }, + { + "type": "stmt_val", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "stmt_var", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "expr_annot", + "named": true + }, + { + "type": "expr_array", + "named": true + }, + { + "type": "expr_array_access", + "named": true + }, + { + "type": "expr_binary", + "named": true + }, + { + "type": "expr_break", + "named": true + }, + { + "type": "expr_call", + "named": true + }, + { + "type": "expr_constant", + "named": true + }, + { + "type": "expr_continue", + "named": true + }, + { + "type": "expr_do", + "named": true + }, + { + "type": "expr_for", + "named": true + }, + { + "type": "expr_fun", + "named": true + }, + { + "type": "expr_if", + "named": true + }, + { + "type": "expr_loop", + "named": true + }, + { + "type": "expr_match", + "named": true + }, + { + "type": "expr_method_call", + "named": true + }, + { + "type": "expr_name", + "named": true + }, + { + "type": "expr_paren", + "named": true + }, + { + "type": "expr_query", + "named": true + }, + { + "type": "expr_record", + "named": true + }, + { + "type": "expr_record_access", + "named": true + }, + { + "type": "expr_return", + "named": true + }, + { + "type": "expr_rust", + "named": true + }, + { + "type": "expr_throw", + "named": true + }, + { + "type": "expr_try", + "named": true + }, + { + "type": "expr_tuple", + "named": true + }, + { + "type": "expr_tuple_access", + "named": true + }, + { + "type": "expr_while", + "named": true + }, + { + "type": "pattern_annot", + "named": true + }, + { + "type": "pattern_array", + "named": true + }, + { + "type": "pattern_array_concat", + "named": true + }, + { + "type": "pattern_constant", + "named": true + }, + { + "type": "pattern_name", + "named": true + }, + { + "type": "pattern_or", + "named": true + }, + { + "type": "pattern_paren", + "named": true + }, + { + "type": "pattern_record", + "named": true + }, + { + "type": "pattern_record_concat", + "named": true + }, + { + "type": "pattern_tuple", + "named": true + }, + { + "type": "pattern_variant", + "named": true + }, + { + "type": "pattern_wild", + "named": true + } + ] + } + }, + { + "type": "string_interpolation", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "block", + "named": true + }, + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "type_array", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": false, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_array_concat", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_field", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "name", + "named": true + }, + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_fun", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_name", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "type_nominal", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_name", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_paren", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_record", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_field", + "named": true + } + ] + } + }, + { + "type": "type_record_concat", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_tuple", + "named": true, + "fields": {}, + "children": { + "multiple": true, + "required": true, + "types": [ + { + "type": "type_array", + "named": true + }, + { + "type": "type_array_concat", + "named": true + }, + { + "type": "type_fun", + "named": true + }, + { + "type": "type_never", + "named": true + }, + { + "type": "type_nominal", + "named": true + }, + { + "type": "type_paren", + "named": true + }, + { + "type": "type_record", + "named": true + }, + { + "type": "type_record_concat", + "named": true + }, + { + "type": "type_tuple", + "named": true + }, + { + "type": "type_unit", + "named": true + }, + { + "type": "type_wild", + "named": true + } + ] + } + }, + { + "type": "type_unit", + "named": true, + "fields": {} + }, + { + "type": "type_wild", + "named": true, + "fields": {} + }, + { + "type": "variant_name", + "named": true, + "fields": {}, + "children": { + "multiple": false, + "required": true, + "types": [ + { + "type": "name", + "named": true + } + ] + } + }, + { + "type": "!=", + "named": false + }, + { + "type": "$", + "named": false + }, + { + "type": "&", + "named": false + }, + { + "type": "'", + "named": false + }, + { + "type": "(", + "named": false + }, + { + "type": ")", + "named": false + }, + { + "type": "*", + "named": false + }, + { + "type": "*=", + "named": false + }, + { + "type": "+", + "named": false + }, + { + "type": "++", + "named": false + }, + { + "type": "+=", + "named": false + }, + { + "type": ",", + "named": false + }, + { + "type": "-", + "named": false + }, + { + "type": "---", + "named": false + }, + { + "type": "-=", + "named": false + }, + { + "type": ".", + "named": false + }, + { + "type": "..", + "named": false + }, + { + "type": "..=", + "named": false + }, + { + "type": "/", + "named": false + }, + { + "type": "/=", + "named": false + }, + { + "type": ":", + "named": false + }, + { + "type": "::", + "named": false + }, + { + "type": ";", + "named": false + }, + { + "type": "<", + "named": false + }, + { + "type": "<=", + "named": false + }, + { + "type": "=", + "named": false + }, + { + "type": "==", + "named": false + }, + { + "type": "=>", + "named": false + }, + { + "type": ">", + "named": false + }, + { + "type": ">=", + "named": false + }, + { + "type": "@", + "named": false + }, + { + "type": "[", + "named": false + }, + { + "type": "]", + "named": false + }, + { + "type": "_", + "named": false + }, + { + "type": "and", + "named": false + }, + { + "type": "as", + "named": false + }, + { + "type": "break", + "named": false + }, + { + "type": "catch", + "named": false + }, + { + "type": "compute", + "named": false + }, + { + "type": "constant_float", + "named": true + }, + { + "type": "constant_int", + "named": true + }, + { + "type": "continue", + "named": false + }, + { + "type": "def", + "named": false + }, + { + "type": "desc", + "named": false + }, + { + "type": "do", + "named": false + }, + { + "type": "else", + "named": false + }, + { + "type": "enum", + "named": false + }, + { + "type": "false", + "named": false + }, + { + "type": "finally", + "named": false + }, + { + "type": "for", + "named": false + }, + { + "type": "from", + "named": false + }, + { + "type": "fun", + "named": false + }, + { + "type": "group", + "named": false + }, + { + "type": "if", + "named": false + }, + { + "type": "in", + "named": false + }, + { + "type": "index", + "named": true + }, + { + "type": "into", + "named": false + }, + { + "type": "join", + "named": false + }, + { + "type": "line_comment", + "named": true + }, + { + "type": "loop", + "named": false + }, + { + "type": "match", + "named": false + }, + { + "type": "name", + "named": true + }, + { + "type": "not", + "named": false + }, + { + "type": "of", + "named": false + }, + { + "type": "on", + "named": false + }, + { + "type": "or", + "named": false + }, + { + "type": "order", + "named": false + }, + { + "type": "over", + "named": false + }, + { + "type": "python", + "named": false + }, + { + "type": "return", + "named": false + }, + { + "type": "roll", + "named": false + }, + { + "type": "rust", + "named": false + }, + { + "type": "select", + "named": false + }, + { + "type": "string_content", + "named": true + }, + { + "type": "string_quote", + "named": true + }, + { + "type": "throw", + "named": false + }, + { + "type": "true", + "named": false + }, + { + "type": "try", + "named": false + }, + { + "type": "type", + "named": false + }, + { + "type": "type_never", + "named": true + }, + { + "type": "union", + "named": false + }, + { + "type": "val", + "named": false + }, + { + "type": "var", + "named": false + }, + { + "type": "where", + "named": false + }, + { + "type": "while", + "named": false + }, + { + "type": "with", + "named": false + }, + { + "type": "{", + "named": false + }, + { + "type": "}", + "named": false + } +] \ No newline at end of file diff --git a/arc-lang/crates/tree-sitter/src/parser.c b/arc-lang/crates/tree-sitter/src/parser.c new file mode 100644 index 000000000..9127aca05 --- /dev/null +++ b/arc-lang/crates/tree-sitter/src/parser.c @@ -0,0 +1,84605 @@ +#include + +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + +#define LANGUAGE_VERSION 14 +#define STATE_COUNT 1511 +#define LARGE_STATE_COUNT 44 +#define SYMBOL_COUNT 215 +#define ALIAS_COUNT 0 +#define TOKEN_COUNT 93 +#define EXTERNAL_TOKEN_COUNT 0 +#define FIELD_COUNT 7 +#define MAX_ALIAS_SEQUENCE_LENGTH 14 +#define PRODUCTION_ID_COUNT 36 + +enum { + sym_name = 1, + sym__whitespace = 2, + sym_line_comment = 3, + sym_index = 4, + anon_sym_AT = 5, + anon_sym_LBRACE = 6, + anon_sym_RBRACE = 7, + anon_sym_COMMA = 8, + anon_sym_COLON = 9, + sym_constant_int = 10, + sym_constant_float = 11, + sym_string_quote = 12, + sym_string_content = 13, + anon_sym_DOLLAR = 14, + anon_sym_SQUOTE = 15, + aux_sym_constant_char_token1 = 16, + anon_sym_true = 17, + anon_sym_false = 18, + anon_sym_LPAREN = 19, + anon_sym_RPAREN = 20, + anon_sym_def = 21, + anon_sym_LBRACK = 22, + anon_sym_RBRACK = 23, + anon_sym_EQ = 24, + anon_sym_SEMI = 25, + anon_sym_type = 26, + anon_sym_enum = 27, + anon_sym_val = 28, + anon_sym_var = 29, + anon_sym_DASH_DASH_DASH = 30, + anon_sym_rust = 31, + anon_sym_python = 32, + aux_sym_code_token1 = 33, + anon_sym_fun = 34, + anon_sym_AMP = 35, + anon_sym_PLUS_PLUS = 36, + sym_type_never = 37, + anon_sym__ = 38, + anon_sym_or = 39, + anon_sym_DOT = 40, + anon_sym_return = 41, + anon_sym_break = 42, + anon_sym_continue = 43, + anon_sym_throw = 44, + aux_sym__rust_token1 = 45, + anon_sym_from = 46, + anon_sym_in = 47, + anon_sym_where = 48, + anon_sym_join = 49, + anon_sym_on = 50, + anon_sym_union = 51, + anon_sym_group = 52, + anon_sym_over = 53, + anon_sym_roll = 54, + anon_sym_compute = 55, + anon_sym_select = 56, + anon_sym_with = 57, + anon_sym_into = 58, + anon_sym_order = 59, + anon_sym_desc = 60, + anon_sym_as = 61, + anon_sym_of = 62, + anon_sym_PLUS_EQ = 63, + anon_sym_DASH_EQ = 64, + anon_sym_STAR_EQ = 65, + anon_sym_SLASH_EQ = 66, + anon_sym_DOT_DOT = 67, + anon_sym_DOT_DOT_EQ = 68, + anon_sym_and = 69, + anon_sym_EQ_EQ = 70, + anon_sym_BANG_EQ = 71, + anon_sym_LT = 72, + anon_sym_GT = 73, + anon_sym_LT_EQ = 74, + anon_sym_GT_EQ = 75, + anon_sym_PLUS = 76, + anon_sym_DASH = 77, + anon_sym_STAR = 78, + anon_sym_SLASH = 79, + anon_sym_not = 80, + anon_sym_COLON_COLON = 81, + anon_sym_do = 82, + anon_sym_if = 83, + anon_sym_else = 84, + anon_sym_match = 85, + anon_sym_loop = 86, + anon_sym_while = 87, + anon_sym_for = 88, + anon_sym_try = 89, + anon_sym_catch = 90, + anon_sym_finally = 91, + anon_sym_EQ_GT = 92, + sym_program = 93, + sym_meta = 94, + sym__attributes = 95, + sym_attribute = 96, + sym__constant = 97, + sym_constant_string = 98, + sym_string_interpolation = 99, + sym_constant_char = 100, + sym_constant_bool = 101, + sym_constant_unit = 102, + aux_sym__stmts = 103, + sym__stmt = 104, + sym_stmt_def = 105, + sym_stmt_type = 106, + sym_stmt_enum = 107, + sym_stmt_val = 108, + sym_stmt_var = 109, + sym_stmt_expr = 110, + sym_stmt_code = 111, + sym_code = 112, + sym__stmt_noop = 113, + sym__types = 114, + sym__type = 115, + sym_type_fun = 116, + sym_type_record_concat = 117, + sym_type_array_concat = 118, + sym_type_paren = 119, + sym_type_nominal = 120, + sym_type_name = 121, + sym_type_tuple = 122, + sym_type_record = 123, + sym_type_array = 124, + sym_type_unit = 125, + sym_type_wild = 126, + sym__type_fields = 127, + sym_type_field = 128, + sym_generic = 129, + sym__generics = 130, + sym__patterns = 131, + sym__pattern_fields = 132, + sym_pattern_field = 133, + sym__pattern = 134, + sym_pattern_annot = 135, + sym_pattern_or = 136, + sym_pattern_record_concat = 137, + sym_pattern_array_concat = 138, + sym_pattern_paren = 139, + sym_pattern_constant = 140, + sym_pattern_name = 141, + sym_pattern_variant = 142, + sym_pattern_tuple = 143, + sym_pattern_record = 144, + sym_pattern_array = 145, + sym_pattern_wild = 146, + sym_variant_name = 147, + sym__exprs = 148, + sym__expr_fields = 149, + sym_expr_field = 150, + sym_expr_field_expr = 151, + sym_expr_field_name = 152, + sym__expr = 153, + sym_expr_return = 154, + sym_expr_break = 155, + sym_expr_continue = 156, + sym_expr_throw = 157, + sym_expr_query = 158, + sym_expr_rust = 159, + sym_rust = 160, + sym__rust = 161, + aux_sym__query_stmts = 162, + sym__query_stmt = 163, + sym_query_from = 164, + sym_query_where = 165, + sym_query_join = 166, + sym_query_union = 167, + sym_query_group = 168, + sym_query_over = 169, + sym_query_roll = 170, + sym_query_compute = 171, + sym_query_select = 172, + sym_query_val = 173, + sym_query_into = 174, + sym_query_order = 175, + sym__as = 176, + sym__of = 177, + sym_expr_fun = 178, + sym_expr_binary = 179, + sym_expr_annot = 180, + sym_expr_call = 181, + sym_expr_tuple_access = 182, + sym_expr_record_access = 183, + sym_expr_array_access = 184, + sym_expr_method_call = 185, + sym_expr_paren = 186, + sym_expr_constant = 187, + sym_expr_name = 188, + sym_expr_array = 189, + sym_expr_tuple = 190, + sym_expr_record = 191, + sym_expr_do = 192, + sym_expr_if = 193, + sym_expr_match = 194, + sym_expr_loop = 195, + sym_expr_while = 196, + sym_expr_for = 197, + sym_expr_try = 198, + sym_block = 199, + sym__arms = 200, + sym_arm = 201, + aux_sym__attributes_repeat1 = 202, + aux_sym_constant_string_repeat1 = 203, + aux_sym_stmt_enum_repeat1 = 204, + aux_sym_code_repeat1 = 205, + aux_sym__types_repeat1 = 206, + aux_sym__type_fields_repeat1 = 207, + aux_sym__generics_repeat1 = 208, + aux_sym__patterns_repeat1 = 209, + aux_sym__pattern_fields_repeat1 = 210, + aux_sym__exprs_repeat1 = 211, + aux_sym__expr_fields_repeat1 = 212, + aux_sym__rust_repeat1 = 213, + aux_sym__arms_repeat1 = 214, +}; + +static const char * const ts_symbol_names[] = { + [ts_builtin_sym_end] = "end", + [sym_name] = "name", + [sym__whitespace] = "_whitespace", + [sym_line_comment] = "line_comment", + [sym_index] = "index", + [anon_sym_AT] = "@", + [anon_sym_LBRACE] = "{", + [anon_sym_RBRACE] = "}", + [anon_sym_COMMA] = ",", + [anon_sym_COLON] = ":", + [sym_constant_int] = "constant_int", + [sym_constant_float] = "constant_float", + [sym_string_quote] = "string_quote", + [sym_string_content] = "string_content", + [anon_sym_DOLLAR] = "$", + [anon_sym_SQUOTE] = "'", + [aux_sym_constant_char_token1] = "constant_char_token1", + [anon_sym_true] = "true", + [anon_sym_false] = "false", + [anon_sym_LPAREN] = "(", + [anon_sym_RPAREN] = ")", + [anon_sym_def] = "def", + [anon_sym_LBRACK] = "[", + [anon_sym_RBRACK] = "]", + [anon_sym_EQ] = "=", + [anon_sym_SEMI] = ";", + [anon_sym_type] = "type", + [anon_sym_enum] = "enum", + [anon_sym_val] = "val", + [anon_sym_var] = "var", + [anon_sym_DASH_DASH_DASH] = "---", + [anon_sym_rust] = "rust", + [anon_sym_python] = "python", + [aux_sym_code_token1] = "code_token1", + [anon_sym_fun] = "fun", + [anon_sym_AMP] = "&", + [anon_sym_PLUS_PLUS] = "++", + [sym_type_never] = "type_never", + [anon_sym__] = "_", + [anon_sym_or] = "or", + [anon_sym_DOT] = ".", + [anon_sym_return] = "return", + [anon_sym_break] = "break", + [anon_sym_continue] = "continue", + [anon_sym_throw] = "throw", + [aux_sym__rust_token1] = "_rust_token1", + [anon_sym_from] = "from", + [anon_sym_in] = "in", + [anon_sym_where] = "where", + [anon_sym_join] = "join", + [anon_sym_on] = "on", + [anon_sym_union] = "union", + [anon_sym_group] = "group", + [anon_sym_over] = "over", + [anon_sym_roll] = "roll", + [anon_sym_compute] = "compute", + [anon_sym_select] = "select", + [anon_sym_with] = "with", + [anon_sym_into] = "into", + [anon_sym_order] = "order", + [anon_sym_desc] = "desc", + [anon_sym_as] = "as", + [anon_sym_of] = "of", + [anon_sym_PLUS_EQ] = "+=", + [anon_sym_DASH_EQ] = "-=", + [anon_sym_STAR_EQ] = "*=", + [anon_sym_SLASH_EQ] = "/=", + [anon_sym_DOT_DOT] = "..", + [anon_sym_DOT_DOT_EQ] = "..=", + [anon_sym_and] = "and", + [anon_sym_EQ_EQ] = "==", + [anon_sym_BANG_EQ] = "!=", + [anon_sym_LT] = "<", + [anon_sym_GT] = ">", + [anon_sym_LT_EQ] = "<=", + [anon_sym_GT_EQ] = ">=", + [anon_sym_PLUS] = "+", + [anon_sym_DASH] = "-", + [anon_sym_STAR] = "*", + [anon_sym_SLASH] = "/", + [anon_sym_not] = "not", + [anon_sym_COLON_COLON] = "::", + [anon_sym_do] = "do", + [anon_sym_if] = "if", + [anon_sym_else] = "else", + [anon_sym_match] = "match", + [anon_sym_loop] = "loop", + [anon_sym_while] = "while", + [anon_sym_for] = "for", + [anon_sym_try] = "try", + [anon_sym_catch] = "catch", + [anon_sym_finally] = "finally", + [anon_sym_EQ_GT] = "=>", + [sym_program] = "program", + [sym_meta] = "meta", + [sym__attributes] = "_attributes", + [sym_attribute] = "attribute", + [sym__constant] = "_constant", + [sym_constant_string] = "constant_string", + [sym_string_interpolation] = "string_interpolation", + [sym_constant_char] = "constant_char", + [sym_constant_bool] = "constant_bool", + [sym_constant_unit] = "constant_unit", + [aux_sym__stmts] = "_stmts", + [sym__stmt] = "_stmt", + [sym_stmt_def] = "stmt_def", + [sym_stmt_type] = "stmt_type", + [sym_stmt_enum] = "stmt_enum", + [sym_stmt_val] = "stmt_val", + [sym_stmt_var] = "stmt_var", + [sym_stmt_expr] = "stmt_expr", + [sym_stmt_code] = "stmt_code", + [sym_code] = "code", + [sym__stmt_noop] = "_stmt_noop", + [sym__types] = "_types", + [sym__type] = "_type", + [sym_type_fun] = "type_fun", + [sym_type_record_concat] = "type_record_concat", + [sym_type_array_concat] = "type_array_concat", + [sym_type_paren] = "type_paren", + [sym_type_nominal] = "type_nominal", + [sym_type_name] = "type_name", + [sym_type_tuple] = "type_tuple", + [sym_type_record] = "type_record", + [sym_type_array] = "type_array", + [sym_type_unit] = "type_unit", + [sym_type_wild] = "type_wild", + [sym__type_fields] = "_type_fields", + [sym_type_field] = "type_field", + [sym_generic] = "generic", + [sym__generics] = "_generics", + [sym__patterns] = "_patterns", + [sym__pattern_fields] = "_pattern_fields", + [sym_pattern_field] = "pattern_field", + [sym__pattern] = "_pattern", + [sym_pattern_annot] = "pattern_annot", + [sym_pattern_or] = "pattern_or", + [sym_pattern_record_concat] = "pattern_record_concat", + [sym_pattern_array_concat] = "pattern_array_concat", + [sym_pattern_paren] = "pattern_paren", + [sym_pattern_constant] = "pattern_constant", + [sym_pattern_name] = "pattern_name", + [sym_pattern_variant] = "pattern_variant", + [sym_pattern_tuple] = "pattern_tuple", + [sym_pattern_record] = "pattern_record", + [sym_pattern_array] = "pattern_array", + [sym_pattern_wild] = "pattern_wild", + [sym_variant_name] = "variant_name", + [sym__exprs] = "_exprs", + [sym__expr_fields] = "_expr_fields", + [sym_expr_field] = "expr_field", + [sym_expr_field_expr] = "expr_field_expr", + [sym_expr_field_name] = "expr_field_name", + [sym__expr] = "_expr", + [sym_expr_return] = "expr_return", + [sym_expr_break] = "expr_break", + [sym_expr_continue] = "expr_continue", + [sym_expr_throw] = "expr_throw", + [sym_expr_query] = "expr_query", + [sym_expr_rust] = "expr_rust", + [sym_rust] = "rust", + [sym__rust] = "_rust", + [aux_sym__query_stmts] = "_query_stmts", + [sym__query_stmt] = "_query_stmt", + [sym_query_from] = "query_from", + [sym_query_where] = "query_where", + [sym_query_join] = "query_join", + [sym_query_union] = "query_union", + [sym_query_group] = "query_group", + [sym_query_over] = "query_over", + [sym_query_roll] = "query_roll", + [sym_query_compute] = "query_compute", + [sym_query_select] = "query_select", + [sym_query_val] = "query_val", + [sym_query_into] = "query_into", + [sym_query_order] = "query_order", + [sym__as] = "_as", + [sym__of] = "_of", + [sym_expr_fun] = "expr_fun", + [sym_expr_binary] = "expr_binary", + [sym_expr_annot] = "expr_annot", + [sym_expr_call] = "expr_call", + [sym_expr_tuple_access] = "expr_tuple_access", + [sym_expr_record_access] = "expr_record_access", + [sym_expr_array_access] = "expr_array_access", + [sym_expr_method_call] = "expr_method_call", + [sym_expr_paren] = "expr_paren", + [sym_expr_constant] = "expr_constant", + [sym_expr_name] = "expr_name", + [sym_expr_array] = "expr_array", + [sym_expr_tuple] = "expr_tuple", + [sym_expr_record] = "expr_record", + [sym_expr_do] = "expr_do", + [sym_expr_if] = "expr_if", + [sym_expr_match] = "expr_match", + [sym_expr_loop] = "expr_loop", + [sym_expr_while] = "expr_while", + [sym_expr_for] = "expr_for", + [sym_expr_try] = "expr_try", + [sym_block] = "block", + [sym__arms] = "_arms", + [sym_arm] = "arm", + [aux_sym__attributes_repeat1] = "_attributes_repeat1", + [aux_sym_constant_string_repeat1] = "constant_string_repeat1", + [aux_sym_stmt_enum_repeat1] = "stmt_enum_repeat1", + [aux_sym_code_repeat1] = "code_repeat1", + [aux_sym__types_repeat1] = "_types_repeat1", + [aux_sym__type_fields_repeat1] = "_type_fields_repeat1", + [aux_sym__generics_repeat1] = "_generics_repeat1", + [aux_sym__patterns_repeat1] = "_patterns_repeat1", + [aux_sym__pattern_fields_repeat1] = "_pattern_fields_repeat1", + [aux_sym__exprs_repeat1] = "_exprs_repeat1", + [aux_sym__expr_fields_repeat1] = "_expr_fields_repeat1", + [aux_sym__rust_repeat1] = "_rust_repeat1", + [aux_sym__arms_repeat1] = "_arms_repeat1", +}; + +static const TSSymbol ts_symbol_map[] = { + [ts_builtin_sym_end] = ts_builtin_sym_end, + [sym_name] = sym_name, + [sym__whitespace] = sym__whitespace, + [sym_line_comment] = sym_line_comment, + [sym_index] = sym_index, + [anon_sym_AT] = anon_sym_AT, + [anon_sym_LBRACE] = anon_sym_LBRACE, + [anon_sym_RBRACE] = anon_sym_RBRACE, + [anon_sym_COMMA] = anon_sym_COMMA, + [anon_sym_COLON] = anon_sym_COLON, + [sym_constant_int] = sym_constant_int, + [sym_constant_float] = sym_constant_float, + [sym_string_quote] = sym_string_quote, + [sym_string_content] = sym_string_content, + [anon_sym_DOLLAR] = anon_sym_DOLLAR, + [anon_sym_SQUOTE] = anon_sym_SQUOTE, + [aux_sym_constant_char_token1] = aux_sym_constant_char_token1, + [anon_sym_true] = anon_sym_true, + [anon_sym_false] = anon_sym_false, + [anon_sym_LPAREN] = anon_sym_LPAREN, + [anon_sym_RPAREN] = anon_sym_RPAREN, + [anon_sym_def] = anon_sym_def, + [anon_sym_LBRACK] = anon_sym_LBRACK, + [anon_sym_RBRACK] = anon_sym_RBRACK, + [anon_sym_EQ] = anon_sym_EQ, + [anon_sym_SEMI] = anon_sym_SEMI, + [anon_sym_type] = anon_sym_type, + [anon_sym_enum] = anon_sym_enum, + [anon_sym_val] = anon_sym_val, + [anon_sym_var] = anon_sym_var, + [anon_sym_DASH_DASH_DASH] = anon_sym_DASH_DASH_DASH, + [anon_sym_rust] = anon_sym_rust, + [anon_sym_python] = anon_sym_python, + [aux_sym_code_token1] = aux_sym_code_token1, + [anon_sym_fun] = anon_sym_fun, + [anon_sym_AMP] = anon_sym_AMP, + [anon_sym_PLUS_PLUS] = anon_sym_PLUS_PLUS, + [sym_type_never] = sym_type_never, + [anon_sym__] = anon_sym__, + [anon_sym_or] = anon_sym_or, + [anon_sym_DOT] = anon_sym_DOT, + [anon_sym_return] = anon_sym_return, + [anon_sym_break] = anon_sym_break, + [anon_sym_continue] = anon_sym_continue, + [anon_sym_throw] = anon_sym_throw, + [aux_sym__rust_token1] = aux_sym__rust_token1, + [anon_sym_from] = anon_sym_from, + [anon_sym_in] = anon_sym_in, + [anon_sym_where] = anon_sym_where, + [anon_sym_join] = anon_sym_join, + [anon_sym_on] = anon_sym_on, + [anon_sym_union] = anon_sym_union, + [anon_sym_group] = anon_sym_group, + [anon_sym_over] = anon_sym_over, + [anon_sym_roll] = anon_sym_roll, + [anon_sym_compute] = anon_sym_compute, + [anon_sym_select] = anon_sym_select, + [anon_sym_with] = anon_sym_with, + [anon_sym_into] = anon_sym_into, + [anon_sym_order] = anon_sym_order, + [anon_sym_desc] = anon_sym_desc, + [anon_sym_as] = anon_sym_as, + [anon_sym_of] = anon_sym_of, + [anon_sym_PLUS_EQ] = anon_sym_PLUS_EQ, + [anon_sym_DASH_EQ] = anon_sym_DASH_EQ, + [anon_sym_STAR_EQ] = anon_sym_STAR_EQ, + [anon_sym_SLASH_EQ] = anon_sym_SLASH_EQ, + [anon_sym_DOT_DOT] = anon_sym_DOT_DOT, + [anon_sym_DOT_DOT_EQ] = anon_sym_DOT_DOT_EQ, + [anon_sym_and] = anon_sym_and, + [anon_sym_EQ_EQ] = anon_sym_EQ_EQ, + [anon_sym_BANG_EQ] = anon_sym_BANG_EQ, + [anon_sym_LT] = anon_sym_LT, + [anon_sym_GT] = anon_sym_GT, + [anon_sym_LT_EQ] = anon_sym_LT_EQ, + [anon_sym_GT_EQ] = anon_sym_GT_EQ, + [anon_sym_PLUS] = anon_sym_PLUS, + [anon_sym_DASH] = anon_sym_DASH, + [anon_sym_STAR] = anon_sym_STAR, + [anon_sym_SLASH] = anon_sym_SLASH, + [anon_sym_not] = anon_sym_not, + [anon_sym_COLON_COLON] = anon_sym_COLON_COLON, + [anon_sym_do] = anon_sym_do, + [anon_sym_if] = anon_sym_if, + [anon_sym_else] = anon_sym_else, + [anon_sym_match] = anon_sym_match, + [anon_sym_loop] = anon_sym_loop, + [anon_sym_while] = anon_sym_while, + [anon_sym_for] = anon_sym_for, + [anon_sym_try] = anon_sym_try, + [anon_sym_catch] = anon_sym_catch, + [anon_sym_finally] = anon_sym_finally, + [anon_sym_EQ_GT] = anon_sym_EQ_GT, + [sym_program] = sym_program, + [sym_meta] = sym_meta, + [sym__attributes] = sym__attributes, + [sym_attribute] = sym_attribute, + [sym__constant] = sym__constant, + [sym_constant_string] = sym_constant_string, + [sym_string_interpolation] = sym_string_interpolation, + [sym_constant_char] = sym_constant_char, + [sym_constant_bool] = sym_constant_bool, + [sym_constant_unit] = sym_constant_unit, + [aux_sym__stmts] = aux_sym__stmts, + [sym__stmt] = sym__stmt, + [sym_stmt_def] = sym_stmt_def, + [sym_stmt_type] = sym_stmt_type, + [sym_stmt_enum] = sym_stmt_enum, + [sym_stmt_val] = sym_stmt_val, + [sym_stmt_var] = sym_stmt_var, + [sym_stmt_expr] = sym_stmt_expr, + [sym_stmt_code] = sym_stmt_code, + [sym_code] = sym_code, + [sym__stmt_noop] = sym__stmt_noop, + [sym__types] = sym__types, + [sym__type] = sym__type, + [sym_type_fun] = sym_type_fun, + [sym_type_record_concat] = sym_type_record_concat, + [sym_type_array_concat] = sym_type_array_concat, + [sym_type_paren] = sym_type_paren, + [sym_type_nominal] = sym_type_nominal, + [sym_type_name] = sym_type_name, + [sym_type_tuple] = sym_type_tuple, + [sym_type_record] = sym_type_record, + [sym_type_array] = sym_type_array, + [sym_type_unit] = sym_type_unit, + [sym_type_wild] = sym_type_wild, + [sym__type_fields] = sym__type_fields, + [sym_type_field] = sym_type_field, + [sym_generic] = sym_generic, + [sym__generics] = sym__generics, + [sym__patterns] = sym__patterns, + [sym__pattern_fields] = sym__pattern_fields, + [sym_pattern_field] = sym_pattern_field, + [sym__pattern] = sym__pattern, + [sym_pattern_annot] = sym_pattern_annot, + [sym_pattern_or] = sym_pattern_or, + [sym_pattern_record_concat] = sym_pattern_record_concat, + [sym_pattern_array_concat] = sym_pattern_array_concat, + [sym_pattern_paren] = sym_pattern_paren, + [sym_pattern_constant] = sym_pattern_constant, + [sym_pattern_name] = sym_pattern_name, + [sym_pattern_variant] = sym_pattern_variant, + [sym_pattern_tuple] = sym_pattern_tuple, + [sym_pattern_record] = sym_pattern_record, + [sym_pattern_array] = sym_pattern_array, + [sym_pattern_wild] = sym_pattern_wild, + [sym_variant_name] = sym_variant_name, + [sym__exprs] = sym__exprs, + [sym__expr_fields] = sym__expr_fields, + [sym_expr_field] = sym_expr_field, + [sym_expr_field_expr] = sym_expr_field_expr, + [sym_expr_field_name] = sym_expr_field_name, + [sym__expr] = sym__expr, + [sym_expr_return] = sym_expr_return, + [sym_expr_break] = sym_expr_break, + [sym_expr_continue] = sym_expr_continue, + [sym_expr_throw] = sym_expr_throw, + [sym_expr_query] = sym_expr_query, + [sym_expr_rust] = sym_expr_rust, + [sym_rust] = sym_rust, + [sym__rust] = sym__rust, + [aux_sym__query_stmts] = aux_sym__query_stmts, + [sym__query_stmt] = sym__query_stmt, + [sym_query_from] = sym_query_from, + [sym_query_where] = sym_query_where, + [sym_query_join] = sym_query_join, + [sym_query_union] = sym_query_union, + [sym_query_group] = sym_query_group, + [sym_query_over] = sym_query_over, + [sym_query_roll] = sym_query_roll, + [sym_query_compute] = sym_query_compute, + [sym_query_select] = sym_query_select, + [sym_query_val] = sym_query_val, + [sym_query_into] = sym_query_into, + [sym_query_order] = sym_query_order, + [sym__as] = sym__as, + [sym__of] = sym__of, + [sym_expr_fun] = sym_expr_fun, + [sym_expr_binary] = sym_expr_binary, + [sym_expr_annot] = sym_expr_annot, + [sym_expr_call] = sym_expr_call, + [sym_expr_tuple_access] = sym_expr_tuple_access, + [sym_expr_record_access] = sym_expr_record_access, + [sym_expr_array_access] = sym_expr_array_access, + [sym_expr_method_call] = sym_expr_method_call, + [sym_expr_paren] = sym_expr_paren, + [sym_expr_constant] = sym_expr_constant, + [sym_expr_name] = sym_expr_name, + [sym_expr_array] = sym_expr_array, + [sym_expr_tuple] = sym_expr_tuple, + [sym_expr_record] = sym_expr_record, + [sym_expr_do] = sym_expr_do, + [sym_expr_if] = sym_expr_if, + [sym_expr_match] = sym_expr_match, + [sym_expr_loop] = sym_expr_loop, + [sym_expr_while] = sym_expr_while, + [sym_expr_for] = sym_expr_for, + [sym_expr_try] = sym_expr_try, + [sym_block] = sym_block, + [sym__arms] = sym__arms, + [sym_arm] = sym_arm, + [aux_sym__attributes_repeat1] = aux_sym__attributes_repeat1, + [aux_sym_constant_string_repeat1] = aux_sym_constant_string_repeat1, + [aux_sym_stmt_enum_repeat1] = aux_sym_stmt_enum_repeat1, + [aux_sym_code_repeat1] = aux_sym_code_repeat1, + [aux_sym__types_repeat1] = aux_sym__types_repeat1, + [aux_sym__type_fields_repeat1] = aux_sym__type_fields_repeat1, + [aux_sym__generics_repeat1] = aux_sym__generics_repeat1, + [aux_sym__patterns_repeat1] = aux_sym__patterns_repeat1, + [aux_sym__pattern_fields_repeat1] = aux_sym__pattern_fields_repeat1, + [aux_sym__exprs_repeat1] = aux_sym__exprs_repeat1, + [aux_sym__expr_fields_repeat1] = aux_sym__expr_fields_repeat1, + [aux_sym__rust_repeat1] = aux_sym__rust_repeat1, + [aux_sym__arms_repeat1] = aux_sym__arms_repeat1, +}; + +static const TSSymbolMetadata ts_symbol_metadata[] = { + [ts_builtin_sym_end] = { + .visible = false, + .named = true, + }, + [sym_name] = { + .visible = true, + .named = true, + }, + [sym__whitespace] = { + .visible = false, + .named = true, + }, + [sym_line_comment] = { + .visible = true, + .named = true, + }, + [sym_index] = { + .visible = true, + .named = true, + }, + [anon_sym_AT] = { + .visible = true, + .named = false, + }, + [anon_sym_LBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACE] = { + .visible = true, + .named = false, + }, + [anon_sym_COMMA] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON] = { + .visible = true, + .named = false, + }, + [sym_constant_int] = { + .visible = true, + .named = true, + }, + [sym_constant_float] = { + .visible = true, + .named = true, + }, + [sym_string_quote] = { + .visible = true, + .named = true, + }, + [sym_string_content] = { + .visible = true, + .named = true, + }, + [anon_sym_DOLLAR] = { + .visible = true, + .named = false, + }, + [anon_sym_SQUOTE] = { + .visible = true, + .named = false, + }, + [aux_sym_constant_char_token1] = { + .visible = false, + .named = false, + }, + [anon_sym_true] = { + .visible = true, + .named = false, + }, + [anon_sym_false] = { + .visible = true, + .named = false, + }, + [anon_sym_LPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_RPAREN] = { + .visible = true, + .named = false, + }, + [anon_sym_def] = { + .visible = true, + .named = false, + }, + [anon_sym_LBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_RBRACK] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_SEMI] = { + .visible = true, + .named = false, + }, + [anon_sym_type] = { + .visible = true, + .named = false, + }, + [anon_sym_enum] = { + .visible = true, + .named = false, + }, + [anon_sym_val] = { + .visible = true, + .named = false, + }, + [anon_sym_var] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH_DASH_DASH] = { + .visible = true, + .named = false, + }, + [anon_sym_rust] = { + .visible = true, + .named = false, + }, + [anon_sym_python] = { + .visible = true, + .named = false, + }, + [aux_sym_code_token1] = { + .visible = false, + .named = false, + }, + [anon_sym_fun] = { + .visible = true, + .named = false, + }, + [anon_sym_AMP] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS_PLUS] = { + .visible = true, + .named = false, + }, + [sym_type_never] = { + .visible = true, + .named = true, + }, + [anon_sym__] = { + .visible = true, + .named = false, + }, + [anon_sym_or] = { + .visible = true, + .named = false, + }, + [anon_sym_DOT] = { + .visible = true, + .named = false, + }, + [anon_sym_return] = { + .visible = true, + .named = false, + }, + [anon_sym_break] = { + .visible = true, + .named = false, + }, + [anon_sym_continue] = { + .visible = true, + .named = false, + }, + [anon_sym_throw] = { + .visible = true, + .named = false, + }, + [aux_sym__rust_token1] = { + .visible = false, + .named = false, + }, + [anon_sym_from] = { + .visible = true, + .named = false, + }, + [anon_sym_in] = { + .visible = true, + .named = false, + }, + [anon_sym_where] = { + .visible = true, + .named = false, + }, + [anon_sym_join] = { + .visible = true, + .named = false, + }, + [anon_sym_on] = { + .visible = true, + .named = false, + }, + [anon_sym_union] = { + .visible = true, + .named = false, + }, + [anon_sym_group] = { + .visible = true, + .named = false, + }, + [anon_sym_over] = { + .visible = true, + .named = false, + }, + [anon_sym_roll] = { + .visible = true, + .named = false, + }, + [anon_sym_compute] = { + .visible = true, + .named = false, + }, + [anon_sym_select] = { + .visible = true, + .named = false, + }, + [anon_sym_with] = { + .visible = true, + .named = false, + }, + [anon_sym_into] = { + .visible = true, + .named = false, + }, + [anon_sym_order] = { + .visible = true, + .named = false, + }, + [anon_sym_desc] = { + .visible = true, + .named = false, + }, + [anon_sym_as] = { + .visible = true, + .named = false, + }, + [anon_sym_of] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_STAR_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_DOT_DOT] = { + .visible = true, + .named = false, + }, + [anon_sym_DOT_DOT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_and] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_BANG_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_LT] = { + .visible = true, + .named = false, + }, + [anon_sym_GT] = { + .visible = true, + .named = false, + }, + [anon_sym_LT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_GT_EQ] = { + .visible = true, + .named = false, + }, + [anon_sym_PLUS] = { + .visible = true, + .named = false, + }, + [anon_sym_DASH] = { + .visible = true, + .named = false, + }, + [anon_sym_STAR] = { + .visible = true, + .named = false, + }, + [anon_sym_SLASH] = { + .visible = true, + .named = false, + }, + [anon_sym_not] = { + .visible = true, + .named = false, + }, + [anon_sym_COLON_COLON] = { + .visible = true, + .named = false, + }, + [anon_sym_do] = { + .visible = true, + .named = false, + }, + [anon_sym_if] = { + .visible = true, + .named = false, + }, + [anon_sym_else] = { + .visible = true, + .named = false, + }, + [anon_sym_match] = { + .visible = true, + .named = false, + }, + [anon_sym_loop] = { + .visible = true, + .named = false, + }, + [anon_sym_while] = { + .visible = true, + .named = false, + }, + [anon_sym_for] = { + .visible = true, + .named = false, + }, + [anon_sym_try] = { + .visible = true, + .named = false, + }, + [anon_sym_catch] = { + .visible = true, + .named = false, + }, + [anon_sym_finally] = { + .visible = true, + .named = false, + }, + [anon_sym_EQ_GT] = { + .visible = true, + .named = false, + }, + [sym_program] = { + .visible = true, + .named = true, + }, + [sym_meta] = { + .visible = true, + .named = true, + }, + [sym__attributes] = { + .visible = false, + .named = true, + }, + [sym_attribute] = { + .visible = true, + .named = true, + }, + [sym__constant] = { + .visible = false, + .named = true, + }, + [sym_constant_string] = { + .visible = true, + .named = true, + }, + [sym_string_interpolation] = { + .visible = true, + .named = true, + }, + [sym_constant_char] = { + .visible = true, + .named = true, + }, + [sym_constant_bool] = { + .visible = true, + .named = true, + }, + [sym_constant_unit] = { + .visible = true, + .named = true, + }, + [aux_sym__stmts] = { + .visible = false, + .named = false, + }, + [sym__stmt] = { + .visible = false, + .named = true, + }, + [sym_stmt_def] = { + .visible = true, + .named = true, + }, + [sym_stmt_type] = { + .visible = true, + .named = true, + }, + [sym_stmt_enum] = { + .visible = true, + .named = true, + }, + [sym_stmt_val] = { + .visible = true, + .named = true, + }, + [sym_stmt_var] = { + .visible = true, + .named = true, + }, + [sym_stmt_expr] = { + .visible = true, + .named = true, + }, + [sym_stmt_code] = { + .visible = true, + .named = true, + }, + [sym_code] = { + .visible = true, + .named = true, + }, + [sym__stmt_noop] = { + .visible = false, + .named = true, + }, + [sym__types] = { + .visible = false, + .named = true, + }, + [sym__type] = { + .visible = false, + .named = true, + }, + [sym_type_fun] = { + .visible = true, + .named = true, + }, + [sym_type_record_concat] = { + .visible = true, + .named = true, + }, + [sym_type_array_concat] = { + .visible = true, + .named = true, + }, + [sym_type_paren] = { + .visible = true, + .named = true, + }, + [sym_type_nominal] = { + .visible = true, + .named = true, + }, + [sym_type_name] = { + .visible = true, + .named = true, + }, + [sym_type_tuple] = { + .visible = true, + .named = true, + }, + [sym_type_record] = { + .visible = true, + .named = true, + }, + [sym_type_array] = { + .visible = true, + .named = true, + }, + [sym_type_unit] = { + .visible = true, + .named = true, + }, + [sym_type_wild] = { + .visible = true, + .named = true, + }, + [sym__type_fields] = { + .visible = false, + .named = true, + }, + [sym_type_field] = { + .visible = true, + .named = true, + }, + [sym_generic] = { + .visible = true, + .named = true, + }, + [sym__generics] = { + .visible = false, + .named = true, + }, + [sym__patterns] = { + .visible = false, + .named = true, + }, + [sym__pattern_fields] = { + .visible = false, + .named = true, + }, + [sym_pattern_field] = { + .visible = true, + .named = true, + }, + [sym__pattern] = { + .visible = false, + .named = true, + }, + [sym_pattern_annot] = { + .visible = true, + .named = true, + }, + [sym_pattern_or] = { + .visible = true, + .named = true, + }, + [sym_pattern_record_concat] = { + .visible = true, + .named = true, + }, + [sym_pattern_array_concat] = { + .visible = true, + .named = true, + }, + [sym_pattern_paren] = { + .visible = true, + .named = true, + }, + [sym_pattern_constant] = { + .visible = true, + .named = true, + }, + [sym_pattern_name] = { + .visible = true, + .named = true, + }, + [sym_pattern_variant] = { + .visible = true, + .named = true, + }, + [sym_pattern_tuple] = { + .visible = true, + .named = true, + }, + [sym_pattern_record] = { + .visible = true, + .named = true, + }, + [sym_pattern_array] = { + .visible = true, + .named = true, + }, + [sym_pattern_wild] = { + .visible = true, + .named = true, + }, + [sym_variant_name] = { + .visible = true, + .named = true, + }, + [sym__exprs] = { + .visible = false, + .named = true, + }, + [sym__expr_fields] = { + .visible = false, + .named = true, + }, + [sym_expr_field] = { + .visible = true, + .named = true, + }, + [sym_expr_field_expr] = { + .visible = true, + .named = true, + }, + [sym_expr_field_name] = { + .visible = true, + .named = true, + }, + [sym__expr] = { + .visible = false, + .named = true, + }, + [sym_expr_return] = { + .visible = true, + .named = true, + }, + [sym_expr_break] = { + .visible = true, + .named = true, + }, + [sym_expr_continue] = { + .visible = true, + .named = true, + }, + [sym_expr_throw] = { + .visible = true, + .named = true, + }, + [sym_expr_query] = { + .visible = true, + .named = true, + }, + [sym_expr_rust] = { + .visible = true, + .named = true, + }, + [sym_rust] = { + .visible = true, + .named = true, + }, + [sym__rust] = { + .visible = false, + .named = true, + }, + [aux_sym__query_stmts] = { + .visible = false, + .named = false, + }, + [sym__query_stmt] = { + .visible = false, + .named = true, + }, + [sym_query_from] = { + .visible = true, + .named = true, + }, + [sym_query_where] = { + .visible = true, + .named = true, + }, + [sym_query_join] = { + .visible = true, + .named = true, + }, + [sym_query_union] = { + .visible = true, + .named = true, + }, + [sym_query_group] = { + .visible = true, + .named = true, + }, + [sym_query_over] = { + .visible = true, + .named = true, + }, + [sym_query_roll] = { + .visible = true, + .named = true, + }, + [sym_query_compute] = { + .visible = true, + .named = true, + }, + [sym_query_select] = { + .visible = true, + .named = true, + }, + [sym_query_val] = { + .visible = true, + .named = true, + }, + [sym_query_into] = { + .visible = true, + .named = true, + }, + [sym_query_order] = { + .visible = true, + .named = true, + }, + [sym__as] = { + .visible = false, + .named = true, + }, + [sym__of] = { + .visible = false, + .named = true, + }, + [sym_expr_fun] = { + .visible = true, + .named = true, + }, + [sym_expr_binary] = { + .visible = true, + .named = true, + }, + [sym_expr_annot] = { + .visible = true, + .named = true, + }, + [sym_expr_call] = { + .visible = true, + .named = true, + }, + [sym_expr_tuple_access] = { + .visible = true, + .named = true, + }, + [sym_expr_record_access] = { + .visible = true, + .named = true, + }, + [sym_expr_array_access] = { + .visible = true, + .named = true, + }, + [sym_expr_method_call] = { + .visible = true, + .named = true, + }, + [sym_expr_paren] = { + .visible = true, + .named = true, + }, + [sym_expr_constant] = { + .visible = true, + .named = true, + }, + [sym_expr_name] = { + .visible = true, + .named = true, + }, + [sym_expr_array] = { + .visible = true, + .named = true, + }, + [sym_expr_tuple] = { + .visible = true, + .named = true, + }, + [sym_expr_record] = { + .visible = true, + .named = true, + }, + [sym_expr_do] = { + .visible = true, + .named = true, + }, + [sym_expr_if] = { + .visible = true, + .named = true, + }, + [sym_expr_match] = { + .visible = true, + .named = true, + }, + [sym_expr_loop] = { + .visible = true, + .named = true, + }, + [sym_expr_while] = { + .visible = true, + .named = true, + }, + [sym_expr_for] = { + .visible = true, + .named = true, + }, + [sym_expr_try] = { + .visible = true, + .named = true, + }, + [sym_block] = { + .visible = true, + .named = true, + }, + [sym__arms] = { + .visible = false, + .named = true, + }, + [sym_arm] = { + .visible = true, + .named = true, + }, + [aux_sym__attributes_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_constant_string_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_stmt_enum_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym_code_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__types_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__type_fields_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__generics_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__patterns_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__pattern_fields_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__exprs_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__expr_fields_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__rust_repeat1] = { + .visible = false, + .named = false, + }, + [aux_sym__arms_repeat1] = { + .visible = false, + .named = false, + }, +}; + +enum { + field_arm = 1, + field_code = 2, + field_function = 3, + field_inner = 4, + field_lang = 5, + field_name = 6, + field_variant = 7, +}; + +static const char * const ts_field_names[] = { + [0] = NULL, + [field_arm] = "arm", + [field_code] = "code", + [field_function] = "function", + [field_inner] = "inner", + [field_lang] = "lang", + [field_name] = "name", + [field_variant] = "variant", +}; + +static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { + [1] = {.index = 0, .length = 1}, + [2] = {.index = 1, .length = 1}, + [3] = {.index = 2, .length = 1}, + [4] = {.index = 3, .length = 3}, + [5] = {.index = 6, .length = 2}, + [6] = {.index = 8, .length = 4}, + [7] = {.index = 12, .length = 5}, + [8] = {.index = 17, .length = 2}, + [9] = {.index = 19, .length = 3}, + [10] = {.index = 22, .length = 1}, + [11] = {.index = 23, .length = 5}, + [12] = {.index = 28, .length = 3}, + [13] = {.index = 31, .length = 3}, + [14] = {.index = 34, .length = 4}, + [15] = {.index = 38, .length = 5}, + [16] = {.index = 43, .length = 6}, + [17] = {.index = 49, .length = 4}, + [18] = {.index = 53, .length = 7}, + [19] = {.index = 60, .length = 5}, + [20] = {.index = 65, .length = 7}, + [21] = {.index = 72, .length = 8}, + [22] = {.index = 80, .length = 6}, + [23] = {.index = 86, .length = 7}, + [24] = {.index = 93, .length = 8}, + [25] = {.index = 101, .length = 7}, + [26] = {.index = 108, .length = 8}, + [27] = {.index = 116, .length = 9}, + [28] = {.index = 125, .length = 8}, + [29] = {.index = 133, .length = 10}, + [30] = {.index = 143, .length = 9}, + [31] = {.index = 152, .length = 11}, + [32] = {.index = 163, .length = 10}, + [33] = {.index = 173, .length = 12}, + [34] = {.index = 185, .length = 11}, + [35] = {.index = 196, .length = 12}, +}; + +static const TSFieldMapEntry ts_field_map_entries[] = { + [0] = + {field_lang, 1}, + [1] = + {field_function, 0}, + [2] = + {field_variant, 0}, + [3] = + {field_inner, 2}, + {field_inner, 3}, + {field_name, 1}, + [6] = + {field_code, 2}, + {field_lang, 1}, + [8] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_name, 1}, + [12] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_name, 1}, + {field_variant, 3, .inherited = true}, + [17] = + {field_variant, 0, .inherited = true}, + {field_variant, 1, .inherited = true}, + [19] = + {field_inner, 3}, + {field_inner, 4}, + {field_name, 2}, + [22] = + {field_name, 2}, + [23] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_name, 1}, + [28] = + {field_variant, 0}, + {field_variant, 1}, + {field_variant, 2}, + [31] = + {field_arm, 0}, + {field_arm, 1}, + {field_arm, 2}, + [34] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_name, 2}, + [38] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_name, 2}, + {field_variant, 4, .inherited = true}, + [43] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_name, 1}, + [49] = + {field_variant, 0}, + {field_variant, 1}, + {field_variant, 2}, + {field_variant, 3}, + [53] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_name, 1}, + {field_variant, 5, .inherited = true}, + [60] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_name, 2}, + [65] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_name, 1}, + [72] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_name, 1}, + {field_variant, 6, .inherited = true}, + [80] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_name, 2}, + [86] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_name, 2}, + {field_variant, 6, .inherited = true}, + [93] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_name, 1}, + [101] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_name, 2}, + [108] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_name, 2}, + {field_variant, 7, .inherited = true}, + [116] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_name, 1}, + [125] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_name, 2}, + [133] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_name, 1}, + [143] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_name, 2}, + [152] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_name, 1}, + [163] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_name, 2}, + [173] = + {field_inner, 2}, + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_inner, 12}, + {field_name, 1}, + [185] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_inner, 12}, + {field_name, 2}, + [196] = + {field_inner, 3}, + {field_inner, 4}, + {field_inner, 5}, + {field_inner, 6}, + {field_inner, 7}, + {field_inner, 8}, + {field_inner, 9}, + {field_inner, 10}, + {field_inner, 11}, + {field_inner, 12}, + {field_inner, 13}, + {field_name, 2}, +}; + +static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { + [0] = {0}, +}; + +static const uint16_t ts_non_terminal_alias_map[] = { + 0, +}; + +static const TSStateId ts_primary_state_ids[STATE_COUNT] = { + [0] = 0, + [1] = 1, + [2] = 2, + [3] = 3, + [4] = 2, + [5] = 3, + [6] = 2, + [7] = 3, + [8] = 2, + [9] = 3, + [10] = 2, + [11] = 3, + [12] = 3, + [13] = 2, + [14] = 2, + [15] = 3, + [16] = 3, + [17] = 2, + [18] = 2, + [19] = 3, + [20] = 2, + [21] = 3, + [22] = 3, + [23] = 2, + [24] = 3, + [25] = 2, + [26] = 2, + [27] = 3, + [28] = 2, + [29] = 3, + [30] = 2, + [31] = 3, + [32] = 32, + [33] = 33, + [34] = 34, + [35] = 33, + [36] = 34, + [37] = 34, + [38] = 33, + [39] = 39, + [40] = 33, + [41] = 34, + [42] = 42, + [43] = 42, + [44] = 44, + [45] = 45, + [46] = 46, + [47] = 47, + [48] = 48, + [49] = 47, + [50] = 50, + [51] = 45, + [52] = 48, + [53] = 53, + [54] = 46, + [55] = 53, + [56] = 50, + [57] = 57, + [58] = 57, + [59] = 59, + [60] = 60, + [61] = 61, + [62] = 62, + [63] = 63, + [64] = 64, + [65] = 65, + [66] = 66, + [67] = 67, + [68] = 68, + [69] = 69, + [70] = 70, + [71] = 71, + [72] = 64, + [73] = 65, + [74] = 74, + [75] = 66, + [76] = 76, + [77] = 77, + [78] = 67, + [79] = 68, + [80] = 69, + [81] = 77, + [82] = 82, + [83] = 83, + [84] = 62, + [85] = 85, + [86] = 86, + [87] = 86, + [88] = 77, + [89] = 74, + [90] = 76, + [91] = 91, + [92] = 68, + [93] = 82, + [94] = 67, + [95] = 83, + [96] = 66, + [97] = 65, + [98] = 64, + [99] = 71, + [100] = 70, + [101] = 62, + [102] = 85, + [103] = 85, + [104] = 62, + [105] = 105, + [106] = 106, + [107] = 107, + [108] = 108, + [109] = 86, + [110] = 110, + [111] = 83, + [112] = 112, + [113] = 113, + [114] = 63, + [115] = 70, + [116] = 71, + [117] = 64, + [118] = 118, + [119] = 65, + [120] = 66, + [121] = 67, + [122] = 68, + [123] = 69, + [124] = 74, + [125] = 125, + [126] = 76, + [127] = 77, + [128] = 128, + [129] = 82, + [130] = 83, + [131] = 62, + [132] = 85, + [133] = 112, + [134] = 86, + [135] = 112, + [136] = 86, + [137] = 137, + [138] = 74, + [139] = 76, + [140] = 140, + [141] = 82, + [142] = 112, + [143] = 143, + [144] = 83, + [145] = 62, + [146] = 85, + [147] = 110, + [148] = 63, + [149] = 149, + [150] = 70, + [151] = 71, + [152] = 64, + [153] = 65, + [154] = 66, + [155] = 67, + [156] = 82, + [157] = 68, + [158] = 83, + [159] = 69, + [160] = 70, + [161] = 63, + [162] = 74, + [163] = 163, + [164] = 70, + [165] = 140, + [166] = 77, + [167] = 82, + [168] = 112, + [169] = 83, + [170] = 62, + [171] = 85, + [172] = 110, + [173] = 71, + [174] = 110, + [175] = 70, + [176] = 71, + [177] = 64, + [178] = 65, + [179] = 66, + [180] = 67, + [181] = 68, + [182] = 69, + [183] = 85, + [184] = 62, + [185] = 108, + [186] = 107, + [187] = 108, + [188] = 107, + [189] = 112, + [190] = 86, + [191] = 108, + [192] = 107, + [193] = 112, + [194] = 194, + [195] = 195, + [196] = 86, + [197] = 108, + [198] = 107, + [199] = 199, + [200] = 200, + [201] = 77, + [202] = 74, + [203] = 76, + [204] = 82, + [205] = 112, + [206] = 83, + [207] = 86, + [208] = 108, + [209] = 107, + [210] = 62, + [211] = 85, + [212] = 110, + [213] = 63, + [214] = 70, + [215] = 71, + [216] = 64, + [217] = 65, + [218] = 66, + [219] = 67, + [220] = 68, + [221] = 69, + [222] = 83, + [223] = 82, + [224] = 63, + [225] = 225, + [226] = 110, + [227] = 63, + [228] = 228, + [229] = 70, + [230] = 71, + [231] = 64, + [232] = 65, + [233] = 66, + [234] = 67, + [235] = 68, + [236] = 69, + [237] = 76, + [238] = 74, + [239] = 74, + [240] = 76, + [241] = 77, + [242] = 110, + [243] = 77, + [244] = 244, + [245] = 245, + [246] = 82, + [247] = 112, + [248] = 83, + [249] = 86, + [250] = 108, + [251] = 107, + [252] = 106, + [253] = 105, + [254] = 62, + [255] = 85, + [256] = 69, + [257] = 59, + [258] = 68, + [259] = 85, + [260] = 60, + [261] = 67, + [262] = 62, + [263] = 66, + [264] = 65, + [265] = 110, + [266] = 64, + [267] = 71, + [268] = 70, + [269] = 63, + [270] = 110, + [271] = 271, + [272] = 63, + [273] = 110, + [274] = 74, + [275] = 77, + [276] = 74, + [277] = 76, + [278] = 69, + [279] = 279, + [280] = 70, + [281] = 71, + [282] = 77, + [283] = 64, + [284] = 65, + [285] = 66, + [286] = 67, + [287] = 140, + [288] = 68, + [289] = 67, + [290] = 66, + [291] = 65, + [292] = 64, + [293] = 76, + [294] = 71, + [295] = 68, + [296] = 69, + [297] = 82, + [298] = 77, + [299] = 70, + [300] = 63, + [301] = 301, + [302] = 110, + [303] = 63, + [304] = 76, + [305] = 71, + [306] = 64, + [307] = 65, + [308] = 66, + [309] = 67, + [310] = 68, + [311] = 69, + [312] = 76, + [313] = 74, + [314] = 110, + [315] = 82, + [316] = 110, + [317] = 63, + [318] = 70, + [319] = 71, + [320] = 64, + [321] = 65, + [322] = 66, + [323] = 67, + [324] = 68, + [325] = 69, + [326] = 83, + [327] = 69, + [328] = 63, + [329] = 62, + [330] = 85, + [331] = 110, + [332] = 332, + [333] = 110, + [334] = 63, + [335] = 70, + [336] = 71, + [337] = 64, + [338] = 65, + [339] = 66, + [340] = 67, + [341] = 68, + [342] = 69, + [343] = 68, + [344] = 67, + [345] = 59, + [346] = 163, + [347] = 91, + [348] = 85, + [349] = 349, + [350] = 279, + [351] = 107, + [352] = 61, + [353] = 66, + [354] = 108, + [355] = 86, + [356] = 356, + [357] = 108, + [358] = 107, + [359] = 83, + [360] = 108, + [361] = 107, + [362] = 112, + [363] = 112, + [364] = 86, + [365] = 108, + [366] = 107, + [367] = 61, + [368] = 65, + [369] = 112, + [370] = 69, + [371] = 86, + [372] = 82, + [373] = 108, + [374] = 63, + [375] = 107, + [376] = 64, + [377] = 70, + [378] = 140, + [379] = 76, + [380] = 76, + [381] = 77, + [382] = 349, + [383] = 383, + [384] = 74, + [385] = 112, + [386] = 86, + [387] = 108, + [388] = 107, + [389] = 71, + [390] = 245, + [391] = 60, + [392] = 60, + [393] = 60, + [394] = 59, + [395] = 59, + [396] = 61, + [397] = 61, + [398] = 61, + [399] = 59, + [400] = 60, + [401] = 59, + [402] = 60, + [403] = 60, + [404] = 61, + [405] = 59, + [406] = 59, + [407] = 60, + [408] = 59, + [409] = 60, + [410] = 61, + [411] = 61, + [412] = 60, + [413] = 60, + [414] = 59, + [415] = 61, + [416] = 59, + [417] = 59, + [418] = 60, + [419] = 61, + [420] = 60, + [421] = 59, + [422] = 59, + [423] = 60, + [424] = 61, + [425] = 425, + [426] = 426, + [427] = 427, + [428] = 428, + [429] = 429, + [430] = 430, + [431] = 431, + [432] = 432, + [433] = 433, + [434] = 434, + [435] = 435, + [436] = 436, + [437] = 437, + [438] = 438, + [439] = 439, + [440] = 440, + [441] = 441, + [442] = 442, + [443] = 443, + [444] = 444, + [445] = 445, + [446] = 446, + [447] = 447, + [448] = 442, + [449] = 449, + [450] = 450, + [451] = 451, + [452] = 452, + [453] = 453, + [454] = 454, + [455] = 455, + [456] = 442, + [457] = 446, + [458] = 446, + [459] = 459, + [460] = 460, + [461] = 442, + [462] = 462, + [463] = 463, + [464] = 464, + [465] = 465, + [466] = 466, + [467] = 467, + [468] = 468, + [469] = 469, + [470] = 450, + [471] = 471, + [472] = 446, + [473] = 473, + [474] = 474, + [475] = 454, + [476] = 476, + [477] = 477, + [478] = 478, + [479] = 479, + [480] = 480, + [481] = 455, + [482] = 482, + [483] = 483, + [484] = 484, + [485] = 485, + [486] = 486, + [487] = 487, + [488] = 488, + [489] = 489, + [490] = 490, + [491] = 491, + [492] = 492, + [493] = 493, + [494] = 494, + [495] = 495, + [496] = 496, + [497] = 497, + [498] = 498, + [499] = 499, + [500] = 453, + [501] = 501, + [502] = 502, + [503] = 451, + [504] = 446, + [505] = 505, + [506] = 506, + [507] = 507, + [508] = 442, + [509] = 509, + [510] = 510, + [511] = 511, + [512] = 443, + [513] = 513, + [514] = 446, + [515] = 442, + [516] = 516, + [517] = 517, + [518] = 444, + [519] = 519, + [520] = 520, + [521] = 521, + [522] = 522, + [523] = 523, + [524] = 524, + [525] = 525, + [526] = 526, + [527] = 527, + [528] = 516, + [529] = 529, + [530] = 530, + [531] = 531, + [532] = 532, + [533] = 533, + [534] = 534, + [535] = 535, + [536] = 516, + [537] = 537, + [538] = 538, + [539] = 539, + [540] = 540, + [541] = 541, + [542] = 542, + [543] = 543, + [544] = 544, + [545] = 545, + [546] = 530, + [547] = 516, + [548] = 548, + [549] = 533, + [550] = 539, + [551] = 529, + [552] = 530, + [553] = 530, + [554] = 545, + [555] = 544, + [556] = 527, + [557] = 542, + [558] = 534, + [559] = 532, + [560] = 531, + [561] = 516, + [562] = 516, + [563] = 541, + [564] = 531, + [565] = 532, + [566] = 533, + [567] = 534, + [568] = 542, + [569] = 540, + [570] = 527, + [571] = 539, + [572] = 537, + [573] = 544, + [574] = 545, + [575] = 543, + [576] = 529, + [577] = 526, + [578] = 535, + [579] = 548, + [580] = 538, + [581] = 537, + [582] = 543, + [583] = 526, + [584] = 535, + [585] = 548, + [586] = 538, + [587] = 541, + [588] = 540, + [589] = 537, + [590] = 540, + [591] = 543, + [592] = 538, + [593] = 538, + [594] = 548, + [595] = 535, + [596] = 537, + [597] = 526, + [598] = 543, + [599] = 539, + [600] = 540, + [601] = 541, + [602] = 539, + [603] = 541, + [604] = 530, + [605] = 545, + [606] = 530, + [607] = 529, + [608] = 544, + [609] = 526, + [610] = 535, + [611] = 548, + [612] = 531, + [613] = 532, + [614] = 531, + [615] = 532, + [616] = 533, + [617] = 534, + [618] = 542, + [619] = 527, + [620] = 544, + [621] = 545, + [622] = 533, + [623] = 534, + [624] = 527, + [625] = 542, + [626] = 541, + [627] = 535, + [628] = 533, + [629] = 526, + [630] = 527, + [631] = 537, + [632] = 532, + [633] = 542, + [634] = 534, + [635] = 544, + [636] = 446, + [637] = 543, + [638] = 539, + [639] = 548, + [640] = 531, + [641] = 540, + [642] = 538, + [643] = 545, + [644] = 442, + [645] = 446, + [646] = 442, + [647] = 446, + [648] = 442, + [649] = 446, + [650] = 442, + [651] = 442, + [652] = 442, + [653] = 516, + [654] = 446, + [655] = 446, + [656] = 446, + [657] = 442, + [658] = 530, + [659] = 529, + [660] = 538, + [661] = 548, + [662] = 535, + [663] = 530, + [664] = 516, + [665] = 516, + [666] = 531, + [667] = 532, + [668] = 533, + [669] = 526, + [670] = 534, + [671] = 542, + [672] = 527, + [673] = 544, + [674] = 543, + [675] = 545, + [676] = 539, + [677] = 540, + [678] = 541, + [679] = 516, + [680] = 537, + [681] = 534, + [682] = 516, + [683] = 537, + [684] = 543, + [685] = 526, + [686] = 535, + [687] = 548, + [688] = 538, + [689] = 529, + [690] = 530, + [691] = 529, + [692] = 530, + [693] = 541, + [694] = 540, + [695] = 539, + [696] = 545, + [697] = 544, + [698] = 527, + [699] = 542, + [700] = 516, + [701] = 534, + [702] = 533, + [703] = 538, + [704] = 548, + [705] = 532, + [706] = 535, + [707] = 531, + [708] = 526, + [709] = 543, + [710] = 537, + [711] = 516, + [712] = 531, + [713] = 532, + [714] = 533, + [715] = 542, + [716] = 527, + [717] = 544, + [718] = 545, + [719] = 539, + [720] = 541, + [721] = 540, + [722] = 543, + [723] = 526, + [724] = 543, + [725] = 526, + [726] = 535, + [727] = 548, + [728] = 538, + [729] = 533, + [730] = 532, + [731] = 531, + [732] = 531, + [733] = 530, + [734] = 542, + [735] = 541, + [736] = 540, + [737] = 534, + [738] = 542, + [739] = 527, + [740] = 544, + [741] = 545, + [742] = 539, + [743] = 537, + [744] = 529, + [745] = 540, + [746] = 541, + [747] = 544, + [748] = 530, + [749] = 530, + [750] = 535, + [751] = 548, + [752] = 538, + [753] = 534, + [754] = 545, + [755] = 533, + [756] = 527, + [757] = 539, + [758] = 532, + [759] = 537, + [760] = 531, + [761] = 541, + [762] = 539, + [763] = 544, + [764] = 545, + [765] = 527, + [766] = 537, + [767] = 526, + [768] = 542, + [769] = 534, + [770] = 533, + [771] = 543, + [772] = 538, + [773] = 532, + [774] = 535, + [775] = 548, + [776] = 543, + [777] = 540, + [778] = 439, + [779] = 428, + [780] = 440, + [781] = 433, + [782] = 432, + [783] = 479, + [784] = 426, + [785] = 427, + [786] = 431, + [787] = 429, + [788] = 430, + [789] = 438, + [790] = 425, + [791] = 480, + [792] = 521, + [793] = 520, + [794] = 441, + [795] = 517, + [796] = 796, + [797] = 797, + [798] = 798, + [799] = 799, + [800] = 800, + [801] = 436, + [802] = 434, + [803] = 447, + [804] = 449, + [805] = 445, + [806] = 806, + [807] = 445, + [808] = 808, + [809] = 809, + [810] = 810, + [811] = 811, + [812] = 812, + [813] = 813, + [814] = 449, + [815] = 815, + [816] = 816, + [817] = 817, + [818] = 818, + [819] = 819, + [820] = 435, + [821] = 821, + [822] = 822, + [823] = 823, + [824] = 824, + [825] = 825, + [826] = 826, + [827] = 827, + [828] = 828, + [829] = 437, + [830] = 830, + [831] = 831, + [832] = 832, + [833] = 833, + [834] = 447, + [835] = 835, + [836] = 836, + [837] = 837, + [838] = 838, + [839] = 839, + [840] = 840, + [841] = 841, + [842] = 842, + [843] = 843, + [844] = 844, + [845] = 845, + [846] = 846, + [847] = 452, + [848] = 848, + [849] = 848, + [850] = 850, + [851] = 493, + [852] = 469, + [853] = 853, + [854] = 463, + [855] = 855, + [856] = 856, + [857] = 459, + [858] = 507, + [859] = 465, + [860] = 478, + [861] = 523, + [862] = 484, + [863] = 468, + [864] = 506, + [865] = 464, + [866] = 866, + [867] = 473, + [868] = 499, + [869] = 498, + [870] = 488, + [871] = 871, + [872] = 460, + [873] = 489, + [874] = 466, + [875] = 495, + [876] = 510, + [877] = 494, + [878] = 496, + [879] = 879, + [880] = 880, + [881] = 881, + [882] = 477, + [883] = 505, + [884] = 884, + [885] = 467, + [886] = 485, + [887] = 462, + [888] = 490, + [889] = 866, + [890] = 491, + [891] = 519, + [892] = 482, + [893] = 492, + [894] = 511, + [895] = 522, + [896] = 525, + [897] = 897, + [898] = 897, + [899] = 897, + [900] = 897, + [901] = 897, + [902] = 897, + [903] = 897, + [904] = 897, + [905] = 897, + [906] = 906, + [907] = 897, + [908] = 897, + [909] = 897, + [910] = 897, + [911] = 897, + [912] = 897, + [913] = 913, + [914] = 914, + [915] = 915, + [916] = 915, + [917] = 917, + [918] = 918, + [919] = 914, + [920] = 920, + [921] = 921, + [922] = 921, + [923] = 914, + [924] = 914, + [925] = 921, + [926] = 921, + [927] = 914, + [928] = 921, + [929] = 915, + [930] = 542, + [931] = 914, + [932] = 915, + [933] = 920, + [934] = 545, + [935] = 915, + [936] = 936, + [937] = 914, + [938] = 914, + [939] = 544, + [940] = 921, + [941] = 941, + [942] = 531, + [943] = 914, + [944] = 915, + [945] = 915, + [946] = 921, + [947] = 539, + [948] = 540, + [949] = 541, + [950] = 950, + [951] = 921, + [952] = 952, + [953] = 953, + [954] = 921, + [955] = 914, + [956] = 921, + [957] = 921, + [958] = 532, + [959] = 915, + [960] = 914, + [961] = 915, + [962] = 915, + [963] = 921, + [964] = 533, + [965] = 534, + [966] = 915, + [967] = 527, + [968] = 914, + [969] = 915, + [970] = 921, + [971] = 971, + [972] = 972, + [973] = 973, + [974] = 972, + [975] = 975, + [976] = 61, + [977] = 977, + [978] = 978, + [979] = 979, + [980] = 980, + [981] = 977, + [982] = 979, + [983] = 983, + [984] = 975, + [985] = 978, + [986] = 983, + [987] = 973, + [988] = 988, + [989] = 989, + [990] = 990, + [991] = 991, + [992] = 992, + [993] = 993, + [994] = 994, + [995] = 989, + [996] = 541, + [997] = 540, + [998] = 539, + [999] = 999, + [1000] = 1000, + [1001] = 545, + [1002] = 544, + [1003] = 992, + [1004] = 527, + [1005] = 991, + [1006] = 542, + [1007] = 534, + [1008] = 999, + [1009] = 1000, + [1010] = 533, + [1011] = 532, + [1012] = 531, + [1013] = 999, + [1014] = 999, + [1015] = 990, + [1016] = 989, + [1017] = 989, + [1018] = 1018, + [1019] = 1019, + [1020] = 1019, + [1021] = 1019, + [1022] = 1022, + [1023] = 1023, + [1024] = 1024, + [1025] = 1025, + [1026] = 1026, + [1027] = 527, + [1028] = 542, + [1029] = 1029, + [1030] = 1019, + [1031] = 1019, + [1032] = 545, + [1033] = 1033, + [1034] = 1019, + [1035] = 1035, + [1036] = 1036, + [1037] = 1037, + [1038] = 1037, + [1039] = 1019, + [1040] = 540, + [1041] = 1041, + [1042] = 539, + [1043] = 1043, + [1044] = 541, + [1045] = 544, + [1046] = 534, + [1047] = 533, + [1048] = 1048, + [1049] = 1049, + [1050] = 1050, + [1051] = 1019, + [1052] = 532, + [1053] = 1023, + [1054] = 531, + [1055] = 1019, + [1056] = 1056, + [1057] = 1057, + [1058] = 1019, + [1059] = 1059, + [1060] = 1060, + [1061] = 1019, + [1062] = 1019, + [1063] = 1048, + [1064] = 1064, + [1065] = 1065, + [1066] = 1066, + [1067] = 1066, + [1068] = 1068, + [1069] = 1069, + [1070] = 1070, + [1071] = 1066, + [1072] = 1070, + [1073] = 1073, + [1074] = 1073, + [1075] = 1075, + [1076] = 1075, + [1077] = 1077, + [1078] = 1077, + [1079] = 1079, + [1080] = 1079, + [1081] = 1081, + [1082] = 1082, + [1083] = 1083, + [1084] = 1084, + [1085] = 1081, + [1086] = 1086, + [1087] = 1087, + [1088] = 1087, + [1089] = 1081, + [1090] = 1090, + [1091] = 1081, + [1092] = 1092, + [1093] = 1093, + [1094] = 1092, + [1095] = 1095, + [1096] = 1096, + [1097] = 1081, + [1098] = 1098, + [1099] = 1081, + [1100] = 1100, + [1101] = 1101, + [1102] = 1102, + [1103] = 1081, + [1104] = 1104, + [1105] = 1105, + [1106] = 1081, + [1107] = 1098, + [1108] = 1100, + [1109] = 1109, + [1110] = 1110, + [1111] = 1081, + [1112] = 1112, + [1113] = 1113, + [1114] = 1100, + [1115] = 1098, + [1116] = 1104, + [1117] = 1081, + [1118] = 1118, + [1119] = 1087, + [1120] = 1081, + [1121] = 1104, + [1122] = 1122, + [1123] = 1081, + [1124] = 1081, + [1125] = 1125, + [1126] = 1081, + [1127] = 1127, + [1128] = 1081, + [1129] = 436, + [1130] = 435, + [1131] = 1131, + [1132] = 437, + [1133] = 1133, + [1134] = 1134, + [1135] = 1135, + [1136] = 1136, + [1137] = 1137, + [1138] = 1138, + [1139] = 1139, + [1140] = 1140, + [1141] = 1141, + [1142] = 1142, + [1143] = 1143, + [1144] = 1144, + [1145] = 1145, + [1146] = 1146, + [1147] = 1147, + [1148] = 1148, + [1149] = 1149, + [1150] = 1150, + [1151] = 1151, + [1152] = 1152, + [1153] = 1153, + [1154] = 1154, + [1155] = 1155, + [1156] = 1156, + [1157] = 1157, + [1158] = 1154, + [1159] = 1159, + [1160] = 1160, + [1161] = 1154, + [1162] = 1154, + [1163] = 1157, + [1164] = 1160, + [1165] = 1165, + [1166] = 1166, + [1167] = 1157, + [1168] = 1155, + [1169] = 1169, + [1170] = 1170, + [1171] = 1171, + [1172] = 1157, + [1173] = 1160, + [1174] = 1160, + [1175] = 1154, + [1176] = 1176, + [1177] = 1159, + [1178] = 1178, + [1179] = 1157, + [1180] = 1157, + [1181] = 1160, + [1182] = 1154, + [1183] = 1183, + [1184] = 1184, + [1185] = 1160, + [1186] = 1159, + [1187] = 1154, + [1188] = 1154, + [1189] = 1157, + [1190] = 1159, + [1191] = 1191, + [1192] = 1192, + [1193] = 1193, + [1194] = 1159, + [1195] = 1157, + [1196] = 1160, + [1197] = 1178, + [1198] = 1159, + [1199] = 1199, + [1200] = 1200, + [1201] = 1157, + [1202] = 1155, + [1203] = 1154, + [1204] = 1204, + [1205] = 1154, + [1206] = 1157, + [1207] = 1207, + [1208] = 1160, + [1209] = 1160, + [1210] = 1210, + [1211] = 1157, + [1212] = 1154, + [1213] = 1160, + [1214] = 1157, + [1215] = 1154, + [1216] = 1216, + [1217] = 1160, + [1218] = 1210, + [1219] = 1157, + [1220] = 1160, + [1221] = 1154, + [1222] = 1154, + [1223] = 1176, + [1224] = 1159, + [1225] = 1165, + [1226] = 1226, + [1227] = 1176, + [1228] = 1154, + [1229] = 1159, + [1230] = 1159, + [1231] = 1159, + [1232] = 1159, + [1233] = 1159, + [1234] = 1234, + [1235] = 1235, + [1236] = 1236, + [1237] = 1237, + [1238] = 1238, + [1239] = 1239, + [1240] = 1240, + [1241] = 1239, + [1242] = 1242, + [1243] = 1239, + [1244] = 1244, + [1245] = 1245, + [1246] = 1239, + [1247] = 1247, + [1248] = 1248, + [1249] = 1249, + [1250] = 1239, + [1251] = 1251, + [1252] = 1239, + [1253] = 1253, + [1254] = 1239, + [1255] = 1255, + [1256] = 1256, + [1257] = 1257, + [1258] = 1239, + [1259] = 1259, + [1260] = 1259, + [1261] = 1239, + [1262] = 1239, + [1263] = 1239, + [1264] = 1239, + [1265] = 1265, + [1266] = 1266, + [1267] = 1267, + [1268] = 1268, + [1269] = 1269, + [1270] = 1239, + [1271] = 1239, + [1272] = 1272, + [1273] = 1273, + [1274] = 1274, + [1275] = 1275, + [1276] = 1276, + [1277] = 1239, + [1278] = 1278, + [1279] = 1279, + [1280] = 1280, + [1281] = 1281, + [1282] = 1282, + [1283] = 462, + [1284] = 445, + [1285] = 1285, + [1286] = 1286, + [1287] = 1287, + [1288] = 1288, + [1289] = 1289, + [1290] = 1290, + [1291] = 1291, + [1292] = 1292, + [1293] = 1293, + [1294] = 1294, + [1295] = 1295, + [1296] = 1296, + [1297] = 1297, + [1298] = 1298, + [1299] = 1299, + [1300] = 1300, + [1301] = 1301, + [1302] = 1302, + [1303] = 1303, + [1304] = 1304, + [1305] = 1305, + [1306] = 1306, + [1307] = 1307, + [1308] = 1282, + [1309] = 1309, + [1310] = 1310, + [1311] = 1311, + [1312] = 1312, + [1313] = 1313, + [1314] = 1314, + [1315] = 1286, + [1316] = 1316, + [1317] = 1317, + [1318] = 1299, + [1319] = 1319, + [1320] = 1320, + [1321] = 477, + [1322] = 1322, + [1323] = 1323, + [1324] = 1324, + [1325] = 1325, + [1326] = 1326, + [1327] = 447, + [1328] = 1328, + [1329] = 1329, + [1330] = 1330, + [1331] = 1331, + [1332] = 1332, + [1333] = 1333, + [1334] = 449, + [1335] = 1335, + [1336] = 1336, + [1337] = 1337, + [1338] = 1338, + [1339] = 1339, + [1340] = 1340, + [1341] = 1341, + [1342] = 1342, + [1343] = 1343, + [1344] = 1344, + [1345] = 1340, + [1346] = 1346, + [1347] = 1347, + [1348] = 1348, + [1349] = 1349, + [1350] = 1350, + [1351] = 1351, + [1352] = 1348, + [1353] = 1353, + [1354] = 1354, + [1355] = 1355, + [1356] = 1356, + [1357] = 1357, + [1358] = 1358, + [1359] = 1359, + [1360] = 1342, + [1361] = 1353, + [1362] = 1362, + [1363] = 1363, + [1364] = 1346, + [1365] = 1365, + [1366] = 1366, + [1367] = 1354, + [1368] = 1368, + [1369] = 1369, + [1370] = 1362, + [1371] = 1371, + [1372] = 1372, + [1373] = 1373, + [1374] = 1374, + [1375] = 1375, + [1376] = 1376, + [1377] = 1377, + [1378] = 1378, + [1379] = 1379, + [1380] = 1375, + [1381] = 1381, + [1382] = 1382, + [1383] = 1383, + [1384] = 1384, + [1385] = 1385, + [1386] = 1386, + [1387] = 1387, + [1388] = 1388, + [1389] = 1389, + [1390] = 1390, + [1391] = 1391, + [1392] = 1392, + [1393] = 1393, + [1394] = 1394, + [1395] = 1394, + [1396] = 1396, + [1397] = 1397, + [1398] = 1385, + [1399] = 1399, + [1400] = 1400, + [1401] = 1383, + [1402] = 1402, + [1403] = 1403, + [1404] = 1404, + [1405] = 1388, + [1406] = 1406, + [1407] = 1390, + [1408] = 1385, + [1409] = 1409, + [1410] = 1394, + [1411] = 1394, + [1412] = 1412, + [1413] = 1413, + [1414] = 1414, + [1415] = 1415, + [1416] = 1402, + [1417] = 1417, + [1418] = 1383, + [1419] = 1394, + [1420] = 1420, + [1421] = 1421, + [1422] = 1422, + [1423] = 1423, + [1424] = 1424, + [1425] = 1425, + [1426] = 1426, + [1427] = 1394, + [1428] = 1388, + [1429] = 1404, + [1430] = 1430, + [1431] = 1431, + [1432] = 1403, + [1433] = 1386, + [1434] = 1434, + [1435] = 1435, + [1436] = 1434, + [1437] = 1437, + [1438] = 1394, + [1439] = 1439, + [1440] = 1382, + [1441] = 1441, + [1442] = 1426, + [1443] = 1388, + [1444] = 1444, + [1445] = 1445, + [1446] = 1394, + [1447] = 1394, + [1448] = 1448, + [1449] = 1449, + [1450] = 1450, + [1451] = 1451, + [1452] = 1394, + [1453] = 1430, + [1454] = 1454, + [1455] = 1455, + [1456] = 1388, + [1457] = 1457, + [1458] = 1394, + [1459] = 1459, + [1460] = 1460, + [1461] = 1388, + [1462] = 1462, + [1463] = 1463, + [1464] = 1389, + [1465] = 1426, + [1466] = 1388, + [1467] = 1396, + [1468] = 1388, + [1469] = 1388, + [1470] = 1388, + [1471] = 1388, + [1472] = 1388, + [1473] = 1388, + [1474] = 1388, + [1475] = 1388, + [1476] = 1375, + [1477] = 1444, + [1478] = 1478, + [1479] = 1479, + [1480] = 1480, + [1481] = 1445, + [1482] = 1482, + [1483] = 1483, + [1484] = 1377, + [1485] = 1378, + [1486] = 1486, + [1487] = 1479, + [1488] = 1423, + [1489] = 1450, + [1490] = 1448, + [1491] = 1422, + [1492] = 1394, + [1493] = 1493, + [1494] = 1494, + [1495] = 1478, + [1496] = 1381, + [1497] = 1417, + [1498] = 1498, + [1499] = 1499, + [1500] = 1394, + [1501] = 1376, + [1502] = 1449, + [1503] = 1394, + [1504] = 1504, + [1505] = 1505, + [1506] = 1394, + [1507] = 1493, + [1508] = 1508, + [1509] = 1509, + [1510] = 1510, +}; + +static bool ts_lex(TSLexer *lexer, TSStateId state) { + START_LEXER(); + eof = lexer->eof(lexer); + switch (state) { + case 0: + if (eof) ADVANCE(16); + if (lookahead == '!') ADVANCE(58); + if (lookahead == '"') ADVANCE(39); + if (lookahead == '#') ADVANCE(26); + if (lookahead == '$') ADVANCE(41); + if (lookahead == '&') ADVANCE(56); + if (lookahead == '\'') ADVANCE(42); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(78); + if (lookahead == '+') ADVANCE(73); + if (lookahead == ',') ADVANCE(32); + if (lookahead == '-') ADVANCE(76); + if (lookahead == '.') ADVANCE(59); + if (lookahead == '/') ADVANCE(79); + if (lookahead == ':') ADVANCE(34); + if (lookahead == ';') ADVANCE(52); + if (lookahead == '<') ADVANCE(69); + if (lookahead == '=') ADVANCE(51); + if (lookahead == '>') ADVANCE(70); + if (lookahead == '@') ADVANCE(29); + if (lookahead == '[') ADVANCE(47); + if (lookahead == ']') ADVANCE(48); + if (lookahead == '{') ADVANCE(30); + if (lookahead == '}') ADVANCE(31); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(17); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(27); + END_STATE(); + case 1: + if (lookahead == '!') ADVANCE(12); + if (lookahead == '"') ADVANCE(39); + if (lookahead == '#') ADVANCE(26); + if (lookahead == '\'') ADVANCE(42); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(78); + if (lookahead == '+') ADVANCE(74); + if (lookahead == ',') ADVANCE(32); + if (lookahead == '-') ADVANCE(77); + if (lookahead == '.') ADVANCE(59); + if (lookahead == '/') ADVANCE(79); + if (lookahead == ':') ADVANCE(34); + if (lookahead == ';') ADVANCE(52); + if (lookahead == '<') ADVANCE(69); + if (lookahead == '=') ADVANCE(50); + if (lookahead == '>') ADVANCE(70); + if (lookahead == '[') ADVANCE(47); + if (lookahead == ']') ADVANCE(48); + if (lookahead == '{') ADVANCE(30); + if (lookahead == '}') ADVANCE(31); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(17); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(27); + END_STATE(); + case 2: + if (lookahead == '!') ADVANCE(12); + if (lookahead == '#') ADVANCE(26); + if (lookahead == '&') ADVANCE(56); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(78); + if (lookahead == '+') ADVANCE(73); + if (lookahead == ',') ADVANCE(32); + if (lookahead == '-') ADVANCE(75); + if (lookahead == '.') ADVANCE(59); + if (lookahead == '/') ADVANCE(79); + if (lookahead == ':') ADVANCE(34); + if (lookahead == ';') ADVANCE(52); + if (lookahead == '<') ADVANCE(69); + if (lookahead == '=') ADVANCE(51); + if (lookahead == '>') ADVANCE(70); + if (lookahead == '[') ADVANCE(47); + if (lookahead == ']') ADVANCE(48); + if (lookahead == '{') ADVANCE(30); + if (lookahead == '}') ADVANCE(31); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(17); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(27); + END_STATE(); + case 3: + if (lookahead == '!') ADVANCE(12); + if (lookahead == '#') ADVANCE(26); + if (lookahead == '&') ADVANCE(56); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '*') ADVANCE(78); + if (lookahead == '+') ADVANCE(73); + if (lookahead == ',') ADVANCE(32); + if (lookahead == '-') ADVANCE(75); + if (lookahead == '.') ADVANCE(59); + if (lookahead == '/') ADVANCE(79); + if (lookahead == ':') ADVANCE(34); + if (lookahead == ';') ADVANCE(52); + if (lookahead == '<') ADVANCE(69); + if (lookahead == '=') ADVANCE(50); + if (lookahead == '>') ADVANCE(70); + if (lookahead == '[') ADVANCE(47); + if (lookahead == ']') ADVANCE(48); + if (lookahead == '{') ADVANCE(30); + if (lookahead == '}') ADVANCE(31); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(17); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(27); + END_STATE(); + case 4: + if (lookahead == '"') ADVANCE(39); + if (lookahead == '#') ADVANCE(23); + if (lookahead == '$') ADVANCE(41); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(18); + if (lookahead != 0) ADVANCE(40); + END_STATE(); + case 5: + if (lookahead == '#') ADVANCE(26); + if (lookahead == '&') ADVANCE(56); + if (lookahead == '+') ADVANCE(8); + if (lookahead == ':') ADVANCE(33); + if (lookahead == '=') ADVANCE(13); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(17); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(27); + END_STATE(); + case 6: + if (lookahead == '#') ADVANCE(22); + if (lookahead == '{') ADVANCE(30); + if (lookahead == '}') ADVANCE(31); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(19); + if (lookahead != 0) ADVANCE(60); + END_STATE(); + case 7: + if (lookahead == '#') ADVANCE(24); + if (lookahead == '-') ADVANCE(10); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(21); + if (lookahead != 0) ADVANCE(55); + END_STATE(); + case 8: + if (lookahead == '+') ADVANCE(57); + END_STATE(); + case 9: + if (lookahead == '-') ADVANCE(11); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + END_STATE(); + case 10: + if (lookahead == '-') ADVANCE(11); + if (lookahead != 0) ADVANCE(54); + END_STATE(); + case 11: + if (lookahead == '-') ADVANCE(53); + END_STATE(); + case 12: + if (lookahead == '=') ADVANCE(68); + END_STATE(); + case 13: + if (lookahead == '>') ADVANCE(81); + END_STATE(); + case 14: + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); + END_STATE(); + case 15: + if (eof) ADVANCE(16); + if (lookahead == '"') ADVANCE(39); + if (lookahead == '#') ADVANCE(26); + if (lookahead == '&') ADVANCE(56); + if (lookahead == '\'') ADVANCE(42); + if (lookahead == '(') ADVANCE(45); + if (lookahead == ')') ADVANCE(46); + if (lookahead == '+') ADVANCE(8); + if (lookahead == '-') ADVANCE(9); + if (lookahead == ':') ADVANCE(33); + if (lookahead == ';') ADVANCE(52); + if (lookahead == '=') ADVANCE(49); + if (lookahead == '@') ADVANCE(29); + if (lookahead == '[') ADVANCE(47); + if (lookahead == ']') ADVANCE(48); + if (lookahead == '{') ADVANCE(30); + if (lookahead == '}') ADVANCE(31); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(17); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(27); + END_STATE(); + case 16: + ACCEPT_TOKEN(ts_builtin_sym_end); + END_STATE(); + case 17: + ACCEPT_TOKEN(sym__whitespace); + END_STATE(); + case 18: + ACCEPT_TOKEN(sym__whitespace); + if (lookahead != 0 && + lookahead != '"' && + lookahead != '$') ADVANCE(40); + END_STATE(); + case 19: + ACCEPT_TOKEN(sym__whitespace); + if (lookahead != 0 && + lookahead != '{' && + lookahead != '}') ADVANCE(60); + END_STATE(); + case 20: + ACCEPT_TOKEN(sym__whitespace); + if (lookahead != 0 && + lookahead != '\'') ADVANCE(44); + END_STATE(); + case 21: + ACCEPT_TOKEN(sym__whitespace); + if (lookahead != 0 && + lookahead != '-') ADVANCE(55); + END_STATE(); + case 22: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead == '\n') ADVANCE(60); + if (lookahead == '{' || + lookahead == '}') ADVANCE(26); + if (lookahead != 0) ADVANCE(22); + END_STATE(); + case 23: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead == '\n') ADVANCE(40); + if (lookahead == '"' || + lookahead == '$') ADVANCE(26); + if (lookahead != 0) ADVANCE(23); + END_STATE(); + case 24: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead == '\n') ADVANCE(55); + if (lookahead == '-') ADVANCE(26); + if (lookahead != 0) ADVANCE(24); + END_STATE(); + case 25: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead == '\n') ADVANCE(44); + if (lookahead == '\'') ADVANCE(26); + if (lookahead != 0) ADVANCE(25); + END_STATE(); + case 26: + ACCEPT_TOKEN(sym_line_comment); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(26); + END_STATE(); + case 27: + ACCEPT_TOKEN(sym_name); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(27); + END_STATE(); + case 28: + ACCEPT_TOKEN(sym_index); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); + END_STATE(); + case 29: + ACCEPT_TOKEN(anon_sym_AT); + END_STATE(); + case 30: + ACCEPT_TOKEN(anon_sym_LBRACE); + END_STATE(); + case 31: + ACCEPT_TOKEN(anon_sym_RBRACE); + END_STATE(); + case 32: + ACCEPT_TOKEN(anon_sym_COMMA); + END_STATE(); + case 33: + ACCEPT_TOKEN(anon_sym_COLON); + END_STATE(); + case 34: + ACCEPT_TOKEN(anon_sym_COLON); + if (lookahead == ':') ADVANCE(80); + END_STATE(); + case 35: + ACCEPT_TOKEN(sym_constant_int); + if (lookahead == '.') ADVANCE(14); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(37); + END_STATE(); + case 36: + ACCEPT_TOKEN(sym_constant_int); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); + if (('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(37); + END_STATE(); + case 37: + ACCEPT_TOKEN(sym_constant_int); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(37); + END_STATE(); + case 38: + ACCEPT_TOKEN(sym_constant_float); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(38); + END_STATE(); + case 39: + ACCEPT_TOKEN(sym_string_quote); + END_STATE(); + case 40: + ACCEPT_TOKEN(sym_string_content); + if (lookahead != 0 && + lookahead != '"' && + lookahead != '$') ADVANCE(40); + END_STATE(); + case 41: + ACCEPT_TOKEN(anon_sym_DOLLAR); + END_STATE(); + case 42: + ACCEPT_TOKEN(anon_sym_SQUOTE); + END_STATE(); + case 43: + ACCEPT_TOKEN(aux_sym_constant_char_token1); + if (lookahead == '#') ADVANCE(25); + if (lookahead == '\t' || + lookahead == '\n' || + lookahead == '\r' || + lookahead == ' ') ADVANCE(20); + if (lookahead != 0 && + lookahead != '\'') ADVANCE(44); + END_STATE(); + case 44: + ACCEPT_TOKEN(aux_sym_constant_char_token1); + if (lookahead != 0 && + lookahead != '\'') ADVANCE(44); + END_STATE(); + case 45: + ACCEPT_TOKEN(anon_sym_LPAREN); + END_STATE(); + case 46: + ACCEPT_TOKEN(anon_sym_RPAREN); + END_STATE(); + case 47: + ACCEPT_TOKEN(anon_sym_LBRACK); + END_STATE(); + case 48: + ACCEPT_TOKEN(anon_sym_RBRACK); + END_STATE(); + case 49: + ACCEPT_TOKEN(anon_sym_EQ); + END_STATE(); + case 50: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(67); + END_STATE(); + case 51: + ACCEPT_TOKEN(anon_sym_EQ); + if (lookahead == '=') ADVANCE(67); + if (lookahead == '>') ADVANCE(81); + END_STATE(); + case 52: + ACCEPT_TOKEN(anon_sym_SEMI); + END_STATE(); + case 53: + ACCEPT_TOKEN(anon_sym_DASH_DASH_DASH); + END_STATE(); + case 54: + ACCEPT_TOKEN(aux_sym_code_token1); + END_STATE(); + case 55: + ACCEPT_TOKEN(aux_sym_code_token1); + if (lookahead != 0 && + lookahead != '-') ADVANCE(55); + END_STATE(); + case 56: + ACCEPT_TOKEN(anon_sym_AMP); + END_STATE(); + case 57: + ACCEPT_TOKEN(anon_sym_PLUS_PLUS); + END_STATE(); + case 58: + ACCEPT_TOKEN(sym_type_never); + END_STATE(); + case 59: + ACCEPT_TOKEN(anon_sym_DOT); + if (lookahead == '.') ADVANCE(65); + END_STATE(); + case 60: + ACCEPT_TOKEN(aux_sym__rust_token1); + if (lookahead != 0 && + lookahead != '{' && + lookahead != '}') ADVANCE(60); + END_STATE(); + case 61: + ACCEPT_TOKEN(anon_sym_PLUS_EQ); + END_STATE(); + case 62: + ACCEPT_TOKEN(anon_sym_DASH_EQ); + END_STATE(); + case 63: + ACCEPT_TOKEN(anon_sym_STAR_EQ); + END_STATE(); + case 64: + ACCEPT_TOKEN(anon_sym_SLASH_EQ); + END_STATE(); + case 65: + ACCEPT_TOKEN(anon_sym_DOT_DOT); + if (lookahead == '=') ADVANCE(66); + END_STATE(); + case 66: + ACCEPT_TOKEN(anon_sym_DOT_DOT_EQ); + END_STATE(); + case 67: + ACCEPT_TOKEN(anon_sym_EQ_EQ); + END_STATE(); + case 68: + ACCEPT_TOKEN(anon_sym_BANG_EQ); + END_STATE(); + case 69: + ACCEPT_TOKEN(anon_sym_LT); + if (lookahead == '=') ADVANCE(71); + END_STATE(); + case 70: + ACCEPT_TOKEN(anon_sym_GT); + if (lookahead == '=') ADVANCE(72); + END_STATE(); + case 71: + ACCEPT_TOKEN(anon_sym_LT_EQ); + END_STATE(); + case 72: + ACCEPT_TOKEN(anon_sym_GT_EQ); + END_STATE(); + case 73: + ACCEPT_TOKEN(anon_sym_PLUS); + if (lookahead == '+') ADVANCE(57); + if (lookahead == '=') ADVANCE(61); + END_STATE(); + case 74: + ACCEPT_TOKEN(anon_sym_PLUS); + if (lookahead == '=') ADVANCE(61); + END_STATE(); + case 75: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '=') ADVANCE(62); + END_STATE(); + case 76: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '=') ADVANCE(62); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(36); + END_STATE(); + case 77: + ACCEPT_TOKEN(anon_sym_DASH); + if (lookahead == '=') ADVANCE(62); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + END_STATE(); + case 78: + ACCEPT_TOKEN(anon_sym_STAR); + if (lookahead == '=') ADVANCE(63); + END_STATE(); + case 79: + ACCEPT_TOKEN(anon_sym_SLASH); + if (lookahead == '=') ADVANCE(64); + END_STATE(); + case 80: + ACCEPT_TOKEN(anon_sym_COLON_COLON); + END_STATE(); + case 81: + ACCEPT_TOKEN(anon_sym_EQ_GT); + END_STATE(); + default: + return false; + } +} + +static bool ts_lex_keywords(TSLexer *lexer, TSStateId state) { + START_LEXER(); + eof = lexer->eof(lexer); + switch (state) { + case 0: + if (lookahead == '_') ADVANCE(1); + if (lookahead == 'a') ADVANCE(2); + if (lookahead == 'b') ADVANCE(3); + if (lookahead == 'c') ADVANCE(4); + if (lookahead == 'd') ADVANCE(5); + if (lookahead == 'e') ADVANCE(6); + if (lookahead == 'f') ADVANCE(7); + if (lookahead == 'g') ADVANCE(8); + if (lookahead == 'i') ADVANCE(9); + if (lookahead == 'j') ADVANCE(10); + if (lookahead == 'l') ADVANCE(11); + if (lookahead == 'm') ADVANCE(12); + if (lookahead == 'n') ADVANCE(13); + if (lookahead == 'o') ADVANCE(14); + if (lookahead == 'p') ADVANCE(15); + if (lookahead == 'r') ADVANCE(16); + if (lookahead == 's') ADVANCE(17); + if (lookahead == 't') ADVANCE(18); + if (lookahead == 'u') ADVANCE(19); + if (lookahead == 'v') ADVANCE(20); + if (lookahead == 'w') ADVANCE(21); + END_STATE(); + case 1: + ACCEPT_TOKEN(anon_sym__); + END_STATE(); + case 2: + if (lookahead == 'n') ADVANCE(22); + if (lookahead == 's') ADVANCE(23); + END_STATE(); + case 3: + if (lookahead == 'r') ADVANCE(24); + END_STATE(); + case 4: + if (lookahead == 'a') ADVANCE(25); + if (lookahead == 'o') ADVANCE(26); + END_STATE(); + case 5: + if (lookahead == 'e') ADVANCE(27); + if (lookahead == 'o') ADVANCE(28); + END_STATE(); + case 6: + if (lookahead == 'l') ADVANCE(29); + if (lookahead == 'n') ADVANCE(30); + END_STATE(); + case 7: + if (lookahead == 'a') ADVANCE(31); + if (lookahead == 'i') ADVANCE(32); + if (lookahead == 'o') ADVANCE(33); + if (lookahead == 'r') ADVANCE(34); + if (lookahead == 'u') ADVANCE(35); + END_STATE(); + case 8: + if (lookahead == 'r') ADVANCE(36); + END_STATE(); + case 9: + if (lookahead == 'f') ADVANCE(37); + if (lookahead == 'n') ADVANCE(38); + END_STATE(); + case 10: + if (lookahead == 'o') ADVANCE(39); + END_STATE(); + case 11: + if (lookahead == 'o') ADVANCE(40); + END_STATE(); + case 12: + if (lookahead == 'a') ADVANCE(41); + END_STATE(); + case 13: + if (lookahead == 'o') ADVANCE(42); + END_STATE(); + case 14: + if (lookahead == 'f') ADVANCE(43); + if (lookahead == 'n') ADVANCE(44); + if (lookahead == 'r') ADVANCE(45); + if (lookahead == 'v') ADVANCE(46); + END_STATE(); + case 15: + if (lookahead == 'y') ADVANCE(47); + END_STATE(); + case 16: + if (lookahead == 'e') ADVANCE(48); + if (lookahead == 'o') ADVANCE(49); + if (lookahead == 'u') ADVANCE(50); + END_STATE(); + case 17: + if (lookahead == 'e') ADVANCE(51); + END_STATE(); + case 18: + if (lookahead == 'h') ADVANCE(52); + if (lookahead == 'r') ADVANCE(53); + if (lookahead == 'y') ADVANCE(54); + END_STATE(); + case 19: + if (lookahead == 'n') ADVANCE(55); + END_STATE(); + case 20: + if (lookahead == 'a') ADVANCE(56); + END_STATE(); + case 21: + if (lookahead == 'h') ADVANCE(57); + if (lookahead == 'i') ADVANCE(58); + END_STATE(); + case 22: + if (lookahead == 'd') ADVANCE(59); + END_STATE(); + case 23: + ACCEPT_TOKEN(anon_sym_as); + END_STATE(); + case 24: + if (lookahead == 'e') ADVANCE(60); + END_STATE(); + case 25: + if (lookahead == 't') ADVANCE(61); + END_STATE(); + case 26: + if (lookahead == 'm') ADVANCE(62); + if (lookahead == 'n') ADVANCE(63); + END_STATE(); + case 27: + if (lookahead == 'f') ADVANCE(64); + if (lookahead == 's') ADVANCE(65); + END_STATE(); + case 28: + ACCEPT_TOKEN(anon_sym_do); + END_STATE(); + case 29: + if (lookahead == 's') ADVANCE(66); + END_STATE(); + case 30: + if (lookahead == 'u') ADVANCE(67); + END_STATE(); + case 31: + if (lookahead == 'l') ADVANCE(68); + END_STATE(); + case 32: + if (lookahead == 'n') ADVANCE(69); + END_STATE(); + case 33: + if (lookahead == 'r') ADVANCE(70); + END_STATE(); + case 34: + if (lookahead == 'o') ADVANCE(71); + END_STATE(); + case 35: + if (lookahead == 'n') ADVANCE(72); + END_STATE(); + case 36: + if (lookahead == 'o') ADVANCE(73); + END_STATE(); + case 37: + ACCEPT_TOKEN(anon_sym_if); + END_STATE(); + case 38: + ACCEPT_TOKEN(anon_sym_in); + if (lookahead == 't') ADVANCE(74); + END_STATE(); + case 39: + if (lookahead == 'i') ADVANCE(75); + END_STATE(); + case 40: + if (lookahead == 'o') ADVANCE(76); + END_STATE(); + case 41: + if (lookahead == 't') ADVANCE(77); + END_STATE(); + case 42: + if (lookahead == 't') ADVANCE(78); + END_STATE(); + case 43: + ACCEPT_TOKEN(anon_sym_of); + END_STATE(); + case 44: + ACCEPT_TOKEN(anon_sym_on); + END_STATE(); + case 45: + ACCEPT_TOKEN(anon_sym_or); + if (lookahead == 'd') ADVANCE(79); + END_STATE(); + case 46: + if (lookahead == 'e') ADVANCE(80); + END_STATE(); + case 47: + if (lookahead == 't') ADVANCE(81); + END_STATE(); + case 48: + if (lookahead == 't') ADVANCE(82); + END_STATE(); + case 49: + if (lookahead == 'l') ADVANCE(83); + END_STATE(); + case 50: + if (lookahead == 's') ADVANCE(84); + END_STATE(); + case 51: + if (lookahead == 'l') ADVANCE(85); + END_STATE(); + case 52: + if (lookahead == 'r') ADVANCE(86); + END_STATE(); + case 53: + if (lookahead == 'u') ADVANCE(87); + if (lookahead == 'y') ADVANCE(88); + END_STATE(); + case 54: + if (lookahead == 'p') ADVANCE(89); + END_STATE(); + case 55: + if (lookahead == 'i') ADVANCE(90); + END_STATE(); + case 56: + if (lookahead == 'l') ADVANCE(91); + if (lookahead == 'r') ADVANCE(92); + END_STATE(); + case 57: + if (lookahead == 'e') ADVANCE(93); + if (lookahead == 'i') ADVANCE(94); + END_STATE(); + case 58: + if (lookahead == 't') ADVANCE(95); + END_STATE(); + case 59: + ACCEPT_TOKEN(anon_sym_and); + END_STATE(); + case 60: + if (lookahead == 'a') ADVANCE(96); + END_STATE(); + case 61: + if (lookahead == 'c') ADVANCE(97); + END_STATE(); + case 62: + if (lookahead == 'p') ADVANCE(98); + END_STATE(); + case 63: + if (lookahead == 't') ADVANCE(99); + END_STATE(); + case 64: + ACCEPT_TOKEN(anon_sym_def); + END_STATE(); + case 65: + if (lookahead == 'c') ADVANCE(100); + END_STATE(); + case 66: + if (lookahead == 'e') ADVANCE(101); + END_STATE(); + case 67: + if (lookahead == 'm') ADVANCE(102); + END_STATE(); + case 68: + if (lookahead == 's') ADVANCE(103); + END_STATE(); + case 69: + if (lookahead == 'a') ADVANCE(104); + END_STATE(); + case 70: + ACCEPT_TOKEN(anon_sym_for); + END_STATE(); + case 71: + if (lookahead == 'm') ADVANCE(105); + END_STATE(); + case 72: + ACCEPT_TOKEN(anon_sym_fun); + END_STATE(); + case 73: + if (lookahead == 'u') ADVANCE(106); + END_STATE(); + case 74: + if (lookahead == 'o') ADVANCE(107); + END_STATE(); + case 75: + if (lookahead == 'n') ADVANCE(108); + END_STATE(); + case 76: + if (lookahead == 'p') ADVANCE(109); + END_STATE(); + case 77: + if (lookahead == 'c') ADVANCE(110); + END_STATE(); + case 78: + ACCEPT_TOKEN(anon_sym_not); + END_STATE(); + case 79: + if (lookahead == 'e') ADVANCE(111); + END_STATE(); + case 80: + if (lookahead == 'r') ADVANCE(112); + END_STATE(); + case 81: + if (lookahead == 'h') ADVANCE(113); + END_STATE(); + case 82: + if (lookahead == 'u') ADVANCE(114); + END_STATE(); + case 83: + if (lookahead == 'l') ADVANCE(115); + END_STATE(); + case 84: + if (lookahead == 't') ADVANCE(116); + END_STATE(); + case 85: + if (lookahead == 'e') ADVANCE(117); + END_STATE(); + case 86: + if (lookahead == 'o') ADVANCE(118); + END_STATE(); + case 87: + if (lookahead == 'e') ADVANCE(119); + END_STATE(); + case 88: + ACCEPT_TOKEN(anon_sym_try); + END_STATE(); + case 89: + if (lookahead == 'e') ADVANCE(120); + END_STATE(); + case 90: + if (lookahead == 'o') ADVANCE(121); + END_STATE(); + case 91: + ACCEPT_TOKEN(anon_sym_val); + END_STATE(); + case 92: + ACCEPT_TOKEN(anon_sym_var); + END_STATE(); + case 93: + if (lookahead == 'r') ADVANCE(122); + END_STATE(); + case 94: + if (lookahead == 'l') ADVANCE(123); + END_STATE(); + case 95: + if (lookahead == 'h') ADVANCE(124); + END_STATE(); + case 96: + if (lookahead == 'k') ADVANCE(125); + END_STATE(); + case 97: + if (lookahead == 'h') ADVANCE(126); + END_STATE(); + case 98: + if (lookahead == 'u') ADVANCE(127); + END_STATE(); + case 99: + if (lookahead == 'i') ADVANCE(128); + END_STATE(); + case 100: + ACCEPT_TOKEN(anon_sym_desc); + END_STATE(); + case 101: + ACCEPT_TOKEN(anon_sym_else); + END_STATE(); + case 102: + ACCEPT_TOKEN(anon_sym_enum); + END_STATE(); + case 103: + if (lookahead == 'e') ADVANCE(129); + END_STATE(); + case 104: + if (lookahead == 'l') ADVANCE(130); + END_STATE(); + case 105: + ACCEPT_TOKEN(anon_sym_from); + END_STATE(); + case 106: + if (lookahead == 'p') ADVANCE(131); + END_STATE(); + case 107: + ACCEPT_TOKEN(anon_sym_into); + END_STATE(); + case 108: + ACCEPT_TOKEN(anon_sym_join); + END_STATE(); + case 109: + ACCEPT_TOKEN(anon_sym_loop); + END_STATE(); + case 110: + if (lookahead == 'h') ADVANCE(132); + END_STATE(); + case 111: + if (lookahead == 'r') ADVANCE(133); + END_STATE(); + case 112: + ACCEPT_TOKEN(anon_sym_over); + END_STATE(); + case 113: + if (lookahead == 'o') ADVANCE(134); + END_STATE(); + case 114: + if (lookahead == 'r') ADVANCE(135); + END_STATE(); + case 115: + ACCEPT_TOKEN(anon_sym_roll); + END_STATE(); + case 116: + ACCEPT_TOKEN(anon_sym_rust); + END_STATE(); + case 117: + if (lookahead == 'c') ADVANCE(136); + END_STATE(); + case 118: + if (lookahead == 'w') ADVANCE(137); + END_STATE(); + case 119: + ACCEPT_TOKEN(anon_sym_true); + END_STATE(); + case 120: + ACCEPT_TOKEN(anon_sym_type); + END_STATE(); + case 121: + if (lookahead == 'n') ADVANCE(138); + END_STATE(); + case 122: + if (lookahead == 'e') ADVANCE(139); + END_STATE(); + case 123: + if (lookahead == 'e') ADVANCE(140); + END_STATE(); + case 124: + ACCEPT_TOKEN(anon_sym_with); + END_STATE(); + case 125: + ACCEPT_TOKEN(anon_sym_break); + END_STATE(); + case 126: + ACCEPT_TOKEN(anon_sym_catch); + END_STATE(); + case 127: + if (lookahead == 't') ADVANCE(141); + END_STATE(); + case 128: + if (lookahead == 'n') ADVANCE(142); + END_STATE(); + case 129: + ACCEPT_TOKEN(anon_sym_false); + END_STATE(); + case 130: + if (lookahead == 'l') ADVANCE(143); + END_STATE(); + case 131: + ACCEPT_TOKEN(anon_sym_group); + END_STATE(); + case 132: + ACCEPT_TOKEN(anon_sym_match); + END_STATE(); + case 133: + ACCEPT_TOKEN(anon_sym_order); + END_STATE(); + case 134: + if (lookahead == 'n') ADVANCE(144); + END_STATE(); + case 135: + if (lookahead == 'n') ADVANCE(145); + END_STATE(); + case 136: + if (lookahead == 't') ADVANCE(146); + END_STATE(); + case 137: + ACCEPT_TOKEN(anon_sym_throw); + END_STATE(); + case 138: + ACCEPT_TOKEN(anon_sym_union); + END_STATE(); + case 139: + ACCEPT_TOKEN(anon_sym_where); + END_STATE(); + case 140: + ACCEPT_TOKEN(anon_sym_while); + END_STATE(); + case 141: + if (lookahead == 'e') ADVANCE(147); + END_STATE(); + case 142: + if (lookahead == 'u') ADVANCE(148); + END_STATE(); + case 143: + if (lookahead == 'y') ADVANCE(149); + END_STATE(); + case 144: + ACCEPT_TOKEN(anon_sym_python); + END_STATE(); + case 145: + ACCEPT_TOKEN(anon_sym_return); + END_STATE(); + case 146: + ACCEPT_TOKEN(anon_sym_select); + END_STATE(); + case 147: + ACCEPT_TOKEN(anon_sym_compute); + END_STATE(); + case 148: + if (lookahead == 'e') ADVANCE(150); + END_STATE(); + case 149: + ACCEPT_TOKEN(anon_sym_finally); + END_STATE(); + case 150: + ACCEPT_TOKEN(anon_sym_continue); + END_STATE(); + default: + return false; + } +} + +static const TSLexMode ts_lex_modes[STATE_COUNT] = { + [0] = {.lex_state = 0}, + [1] = {.lex_state = 15}, + [2] = {.lex_state = 1}, + [3] = {.lex_state = 1}, + [4] = {.lex_state = 1}, + [5] = {.lex_state = 1}, + [6] = {.lex_state = 1}, + [7] = {.lex_state = 1}, + [8] = {.lex_state = 1}, + [9] = {.lex_state = 1}, + [10] = {.lex_state = 1}, + [11] = {.lex_state = 1}, + [12] = {.lex_state = 1}, + [13] = {.lex_state = 1}, + [14] = {.lex_state = 1}, + [15] = {.lex_state = 1}, + [16] = {.lex_state = 1}, + [17] = {.lex_state = 1}, + [18] = {.lex_state = 1}, + [19] = {.lex_state = 1}, + [20] = {.lex_state = 1}, + [21] = {.lex_state = 1}, + [22] = {.lex_state = 1}, + [23] = {.lex_state = 1}, + [24] = {.lex_state = 1}, + [25] = {.lex_state = 1}, + [26] = {.lex_state = 1}, + [27] = {.lex_state = 1}, + [28] = {.lex_state = 1}, + [29] = {.lex_state = 1}, + [30] = {.lex_state = 1}, + [31] = {.lex_state = 1}, + [32] = {.lex_state = 15}, + [33] = {.lex_state = 15}, + [34] = {.lex_state = 15}, + [35] = {.lex_state = 15}, + [36] = {.lex_state = 15}, + [37] = {.lex_state = 15}, + [38] = {.lex_state = 15}, + [39] = {.lex_state = 15}, + [40] = {.lex_state = 15}, + [41] = {.lex_state = 15}, + [42] = {.lex_state = 15}, + [43] = {.lex_state = 15}, + [44] = {.lex_state = 15}, + [45] = {.lex_state = 15}, + [46] = {.lex_state = 15}, + [47] = {.lex_state = 15}, + [48] = {.lex_state = 15}, + [49] = {.lex_state = 15}, + [50] = {.lex_state = 15}, + [51] = {.lex_state = 15}, + [52] = {.lex_state = 15}, + [53] = {.lex_state = 15}, + [54] = {.lex_state = 15}, + [55] = {.lex_state = 15}, + [56] = {.lex_state = 15}, + [57] = {.lex_state = 15}, + [58] = {.lex_state = 15}, + [59] = {.lex_state = 3}, + [60] = {.lex_state = 3}, + [61] = {.lex_state = 3}, + [62] = {.lex_state = 15}, + [63] = {.lex_state = 15}, + [64] = {.lex_state = 15}, + [65] = {.lex_state = 15}, + [66] = {.lex_state = 15}, + [67] = {.lex_state = 15}, + [68] = {.lex_state = 15}, + [69] = {.lex_state = 15}, + [70] = {.lex_state = 15}, + [71] = {.lex_state = 15}, + [72] = {.lex_state = 15}, + [73] = {.lex_state = 15}, + [74] = {.lex_state = 15}, + [75] = {.lex_state = 15}, + [76] = {.lex_state = 15}, + [77] = {.lex_state = 15}, + [78] = {.lex_state = 15}, + [79] = {.lex_state = 15}, + [80] = {.lex_state = 15}, + [81] = {.lex_state = 15}, + [82] = {.lex_state = 15}, + [83] = {.lex_state = 15}, + [84] = {.lex_state = 15}, + [85] = {.lex_state = 15}, + [86] = {.lex_state = 15}, + [87] = {.lex_state = 15}, + [88] = {.lex_state = 15}, + [89] = {.lex_state = 15}, + [90] = {.lex_state = 15}, + [91] = {.lex_state = 15}, + [92] = {.lex_state = 15}, + [93] = {.lex_state = 15}, + [94] = {.lex_state = 15}, + [95] = {.lex_state = 15}, + [96] = {.lex_state = 15}, + [97] = {.lex_state = 15}, + [98] = {.lex_state = 15}, + [99] = {.lex_state = 15}, + [100] = {.lex_state = 15}, + [101] = {.lex_state = 15}, + [102] = {.lex_state = 15}, + [103] = {.lex_state = 15}, + [104] = {.lex_state = 15}, + [105] = {.lex_state = 15}, + [106] = {.lex_state = 15}, + [107] = {.lex_state = 15}, + [108] = {.lex_state = 15}, + [109] = {.lex_state = 15}, + [110] = {.lex_state = 15}, + [111] = {.lex_state = 15}, + [112] = {.lex_state = 15}, + [113] = {.lex_state = 15}, + [114] = {.lex_state = 15}, + [115] = {.lex_state = 15}, + [116] = {.lex_state = 15}, + [117] = {.lex_state = 15}, + [118] = {.lex_state = 15}, + [119] = {.lex_state = 15}, + [120] = {.lex_state = 15}, + [121] = {.lex_state = 15}, + [122] = {.lex_state = 15}, + [123] = {.lex_state = 15}, + [124] = {.lex_state = 15}, + [125] = {.lex_state = 15}, + [126] = {.lex_state = 15}, + [127] = {.lex_state = 15}, + [128] = {.lex_state = 15}, + [129] = {.lex_state = 15}, + [130] = {.lex_state = 15}, + [131] = {.lex_state = 15}, + [132] = {.lex_state = 15}, + [133] = {.lex_state = 15}, + [134] = {.lex_state = 15}, + [135] = {.lex_state = 15}, + [136] = {.lex_state = 15}, + [137] = {.lex_state = 15}, + [138] = {.lex_state = 15}, + [139] = {.lex_state = 15}, + [140] = {.lex_state = 15}, + [141] = {.lex_state = 15}, + [142] = {.lex_state = 15}, + [143] = {.lex_state = 15}, + [144] = {.lex_state = 15}, + [145] = {.lex_state = 15}, + [146] = {.lex_state = 15}, + [147] = {.lex_state = 15}, + [148] = {.lex_state = 15}, + [149] = {.lex_state = 15}, + [150] = {.lex_state = 15}, + [151] = {.lex_state = 15}, + [152] = {.lex_state = 15}, + [153] = {.lex_state = 15}, + [154] = {.lex_state = 15}, + [155] = {.lex_state = 15}, + [156] = {.lex_state = 15}, + [157] = {.lex_state = 15}, + [158] = {.lex_state = 15}, + [159] = {.lex_state = 15}, + [160] = {.lex_state = 15}, + [161] = {.lex_state = 15}, + [162] = {.lex_state = 15}, + [163] = {.lex_state = 15}, + [164] = {.lex_state = 15}, + [165] = {.lex_state = 15}, + [166] = {.lex_state = 15}, + [167] = {.lex_state = 15}, + [168] = {.lex_state = 15}, + [169] = {.lex_state = 15}, + [170] = {.lex_state = 15}, + [171] = {.lex_state = 15}, + [172] = {.lex_state = 15}, + [173] = {.lex_state = 15}, + [174] = {.lex_state = 15}, + [175] = {.lex_state = 15}, + [176] = {.lex_state = 15}, + [177] = {.lex_state = 15}, + [178] = {.lex_state = 15}, + [179] = {.lex_state = 15}, + [180] = {.lex_state = 15}, + [181] = {.lex_state = 15}, + [182] = {.lex_state = 15}, + [183] = {.lex_state = 15}, + [184] = {.lex_state = 15}, + [185] = {.lex_state = 15}, + [186] = {.lex_state = 15}, + [187] = {.lex_state = 15}, + [188] = {.lex_state = 15}, + [189] = {.lex_state = 15}, + [190] = {.lex_state = 15}, + [191] = {.lex_state = 15}, + [192] = {.lex_state = 15}, + [193] = {.lex_state = 15}, + [194] = {.lex_state = 15}, + [195] = {.lex_state = 15}, + [196] = {.lex_state = 15}, + [197] = {.lex_state = 15}, + [198] = {.lex_state = 15}, + [199] = {.lex_state = 15}, + [200] = {.lex_state = 15}, + [201] = {.lex_state = 15}, + [202] = {.lex_state = 15}, + [203] = {.lex_state = 15}, + [204] = {.lex_state = 15}, + [205] = {.lex_state = 15}, + [206] = {.lex_state = 15}, + [207] = {.lex_state = 15}, + [208] = {.lex_state = 15}, + [209] = {.lex_state = 15}, + [210] = {.lex_state = 15}, + [211] = {.lex_state = 15}, + [212] = {.lex_state = 15}, + [213] = {.lex_state = 15}, + [214] = {.lex_state = 15}, + [215] = {.lex_state = 15}, + [216] = {.lex_state = 15}, + [217] = {.lex_state = 15}, + [218] = {.lex_state = 15}, + [219] = {.lex_state = 15}, + [220] = {.lex_state = 15}, + [221] = {.lex_state = 15}, + [222] = {.lex_state = 15}, + [223] = {.lex_state = 15}, + [224] = {.lex_state = 15}, + [225] = {.lex_state = 15}, + [226] = {.lex_state = 15}, + [227] = {.lex_state = 15}, + [228] = {.lex_state = 15}, + [229] = {.lex_state = 15}, + [230] = {.lex_state = 15}, + [231] = {.lex_state = 15}, + [232] = {.lex_state = 15}, + [233] = {.lex_state = 15}, + [234] = {.lex_state = 15}, + [235] = {.lex_state = 15}, + [236] = {.lex_state = 15}, + [237] = {.lex_state = 15}, + [238] = {.lex_state = 15}, + [239] = {.lex_state = 15}, + [240] = {.lex_state = 15}, + [241] = {.lex_state = 15}, + [242] = {.lex_state = 15}, + [243] = {.lex_state = 15}, + [244] = {.lex_state = 15}, + [245] = {.lex_state = 15}, + [246] = {.lex_state = 15}, + [247] = {.lex_state = 15}, + [248] = {.lex_state = 15}, + [249] = {.lex_state = 15}, + [250] = {.lex_state = 15}, + [251] = {.lex_state = 15}, + [252] = {.lex_state = 15}, + [253] = {.lex_state = 15}, + [254] = {.lex_state = 15}, + [255] = {.lex_state = 15}, + [256] = {.lex_state = 15}, + [257] = {.lex_state = 3}, + [258] = {.lex_state = 15}, + [259] = {.lex_state = 15}, + [260] = {.lex_state = 3}, + [261] = {.lex_state = 15}, + [262] = {.lex_state = 15}, + [263] = {.lex_state = 15}, + [264] = {.lex_state = 15}, + [265] = {.lex_state = 15}, + [266] = {.lex_state = 15}, + [267] = {.lex_state = 15}, + [268] = {.lex_state = 15}, + [269] = {.lex_state = 15}, + [270] = {.lex_state = 15}, + [271] = {.lex_state = 15}, + [272] = {.lex_state = 15}, + [273] = {.lex_state = 15}, + [274] = {.lex_state = 15}, + [275] = {.lex_state = 15}, + [276] = {.lex_state = 15}, + [277] = {.lex_state = 15}, + [278] = {.lex_state = 15}, + [279] = {.lex_state = 15}, + [280] = {.lex_state = 15}, + [281] = {.lex_state = 15}, + [282] = {.lex_state = 15}, + [283] = {.lex_state = 15}, + [284] = {.lex_state = 15}, + [285] = {.lex_state = 15}, + [286] = {.lex_state = 15}, + [287] = {.lex_state = 15}, + [288] = {.lex_state = 15}, + [289] = {.lex_state = 15}, + [290] = {.lex_state = 15}, + [291] = {.lex_state = 15}, + [292] = {.lex_state = 15}, + [293] = {.lex_state = 15}, + [294] = {.lex_state = 15}, + [295] = {.lex_state = 15}, + [296] = {.lex_state = 15}, + [297] = {.lex_state = 15}, + [298] = {.lex_state = 15}, + [299] = {.lex_state = 15}, + [300] = {.lex_state = 15}, + [301] = {.lex_state = 15}, + [302] = {.lex_state = 15}, + [303] = {.lex_state = 15}, + [304] = {.lex_state = 15}, + [305] = {.lex_state = 15}, + [306] = {.lex_state = 15}, + [307] = {.lex_state = 15}, + [308] = {.lex_state = 15}, + [309] = {.lex_state = 15}, + [310] = {.lex_state = 15}, + [311] = {.lex_state = 15}, + [312] = {.lex_state = 15}, + [313] = {.lex_state = 15}, + [314] = {.lex_state = 15}, + [315] = {.lex_state = 15}, + [316] = {.lex_state = 15}, + [317] = {.lex_state = 15}, + [318] = {.lex_state = 15}, + [319] = {.lex_state = 15}, + [320] = {.lex_state = 15}, + [321] = {.lex_state = 15}, + [322] = {.lex_state = 15}, + [323] = {.lex_state = 15}, + [324] = {.lex_state = 15}, + [325] = {.lex_state = 15}, + [326] = {.lex_state = 15}, + [327] = {.lex_state = 15}, + [328] = {.lex_state = 15}, + [329] = {.lex_state = 15}, + [330] = {.lex_state = 15}, + [331] = {.lex_state = 15}, + [332] = {.lex_state = 15}, + [333] = {.lex_state = 15}, + [334] = {.lex_state = 15}, + [335] = {.lex_state = 15}, + [336] = {.lex_state = 15}, + [337] = {.lex_state = 15}, + [338] = {.lex_state = 15}, + [339] = {.lex_state = 15}, + [340] = {.lex_state = 15}, + [341] = {.lex_state = 15}, + [342] = {.lex_state = 15}, + [343] = {.lex_state = 15}, + [344] = {.lex_state = 15}, + [345] = {.lex_state = 3}, + [346] = {.lex_state = 15}, + [347] = {.lex_state = 15}, + [348] = {.lex_state = 15}, + [349] = {.lex_state = 15}, + [350] = {.lex_state = 15}, + [351] = {.lex_state = 15}, + [352] = {.lex_state = 3}, + [353] = {.lex_state = 15}, + [354] = {.lex_state = 15}, + [355] = {.lex_state = 15}, + [356] = {.lex_state = 15}, + [357] = {.lex_state = 15}, + [358] = {.lex_state = 15}, + [359] = {.lex_state = 15}, + [360] = {.lex_state = 15}, + [361] = {.lex_state = 15}, + [362] = {.lex_state = 15}, + [363] = {.lex_state = 15}, + [364] = {.lex_state = 15}, + [365] = {.lex_state = 15}, + [366] = {.lex_state = 15}, + [367] = {.lex_state = 3}, + [368] = {.lex_state = 15}, + [369] = {.lex_state = 15}, + [370] = {.lex_state = 15}, + [371] = {.lex_state = 15}, + [372] = {.lex_state = 15}, + [373] = {.lex_state = 15}, + [374] = {.lex_state = 15}, + [375] = {.lex_state = 15}, + [376] = {.lex_state = 15}, + [377] = {.lex_state = 15}, + [378] = {.lex_state = 15}, + [379] = {.lex_state = 15}, + [380] = {.lex_state = 15}, + [381] = {.lex_state = 15}, + [382] = {.lex_state = 15}, + [383] = {.lex_state = 15}, + [384] = {.lex_state = 15}, + [385] = {.lex_state = 15}, + [386] = {.lex_state = 15}, + [387] = {.lex_state = 15}, + [388] = {.lex_state = 15}, + [389] = {.lex_state = 15}, + [390] = {.lex_state = 15}, + [391] = {.lex_state = 3}, + [392] = {.lex_state = 3}, + [393] = {.lex_state = 3}, + [394] = {.lex_state = 3}, + [395] = {.lex_state = 3}, + [396] = {.lex_state = 3}, + [397] = {.lex_state = 3}, + [398] = {.lex_state = 3}, + [399] = {.lex_state = 3}, + [400] = {.lex_state = 3}, + [401] = {.lex_state = 3}, + [402] = {.lex_state = 3}, + [403] = {.lex_state = 3}, + [404] = {.lex_state = 3}, + [405] = {.lex_state = 3}, + [406] = {.lex_state = 3}, + [407] = {.lex_state = 3}, + [408] = {.lex_state = 3}, + [409] = {.lex_state = 3}, + [410] = {.lex_state = 3}, + [411] = {.lex_state = 3}, + [412] = {.lex_state = 3}, + [413] = {.lex_state = 3}, + [414] = {.lex_state = 3}, + [415] = {.lex_state = 3}, + [416] = {.lex_state = 3}, + [417] = {.lex_state = 3}, + [418] = {.lex_state = 3}, + [419] = {.lex_state = 3}, + [420] = {.lex_state = 3}, + [421] = {.lex_state = 3}, + [422] = {.lex_state = 3}, + [423] = {.lex_state = 3}, + [424] = {.lex_state = 3}, + [425] = {.lex_state = 3}, + [426] = {.lex_state = 3}, + [427] = {.lex_state = 3}, + [428] = {.lex_state = 3}, + [429] = {.lex_state = 3}, + [430] = {.lex_state = 3}, + [431] = {.lex_state = 3}, + [432] = {.lex_state = 3}, + [433] = {.lex_state = 3}, + [434] = {.lex_state = 3}, + [435] = {.lex_state = 3}, + [436] = {.lex_state = 3}, + [437] = {.lex_state = 3}, + [438] = {.lex_state = 3}, + [439] = {.lex_state = 3}, + [440] = {.lex_state = 3}, + [441] = {.lex_state = 3}, + [442] = {.lex_state = 3}, + [443] = {.lex_state = 3}, + [444] = {.lex_state = 3}, + [445] = {.lex_state = 3}, + [446] = {.lex_state = 3}, + [447] = {.lex_state = 3}, + [448] = {.lex_state = 3}, + [449] = {.lex_state = 3}, + [450] = {.lex_state = 3}, + [451] = {.lex_state = 3}, + [452] = {.lex_state = 3}, + [453] = {.lex_state = 3}, + [454] = {.lex_state = 3}, + [455] = {.lex_state = 3}, + [456] = {.lex_state = 3}, + [457] = {.lex_state = 3}, + [458] = {.lex_state = 3}, + [459] = {.lex_state = 3}, + [460] = {.lex_state = 3}, + [461] = {.lex_state = 3}, + [462] = {.lex_state = 3}, + [463] = {.lex_state = 3}, + [464] = {.lex_state = 3}, + [465] = {.lex_state = 3}, + [466] = {.lex_state = 3}, + [467] = {.lex_state = 3}, + [468] = {.lex_state = 3}, + [469] = {.lex_state = 3}, + [470] = {.lex_state = 3}, + [471] = {.lex_state = 3}, + [472] = {.lex_state = 3}, + [473] = {.lex_state = 3}, + [474] = {.lex_state = 3}, + [475] = {.lex_state = 3}, + [476] = {.lex_state = 3}, + [477] = {.lex_state = 3}, + [478] = {.lex_state = 3}, + [479] = {.lex_state = 3}, + [480] = {.lex_state = 3}, + [481] = {.lex_state = 3}, + [482] = {.lex_state = 3}, + [483] = {.lex_state = 3}, + [484] = {.lex_state = 3}, + [485] = {.lex_state = 3}, + [486] = {.lex_state = 3}, + [487] = {.lex_state = 3}, + [488] = {.lex_state = 3}, + [489] = {.lex_state = 3}, + [490] = {.lex_state = 3}, + [491] = {.lex_state = 3}, + [492] = {.lex_state = 3}, + [493] = {.lex_state = 3}, + [494] = {.lex_state = 3}, + [495] = {.lex_state = 3}, + [496] = {.lex_state = 3}, + [497] = {.lex_state = 3}, + [498] = {.lex_state = 3}, + [499] = {.lex_state = 3}, + [500] = {.lex_state = 3}, + [501] = {.lex_state = 3}, + [502] = {.lex_state = 3}, + [503] = {.lex_state = 3}, + [504] = {.lex_state = 3}, + [505] = {.lex_state = 3}, + [506] = {.lex_state = 3}, + [507] = {.lex_state = 3}, + [508] = {.lex_state = 3}, + [509] = {.lex_state = 3}, + [510] = {.lex_state = 3}, + [511] = {.lex_state = 3}, + [512] = {.lex_state = 3}, + [513] = {.lex_state = 3}, + [514] = {.lex_state = 3}, + [515] = {.lex_state = 3}, + [516] = {.lex_state = 3}, + [517] = {.lex_state = 3}, + [518] = {.lex_state = 3}, + [519] = {.lex_state = 3}, + [520] = {.lex_state = 3}, + [521] = {.lex_state = 3}, + [522] = {.lex_state = 3}, + [523] = {.lex_state = 3}, + [524] = {.lex_state = 3}, + [525] = {.lex_state = 3}, + [526] = {.lex_state = 3}, + [527] = {.lex_state = 3}, + [528] = {.lex_state = 3}, + [529] = {.lex_state = 3}, + [530] = {.lex_state = 3}, + [531] = {.lex_state = 3}, + [532] = {.lex_state = 3}, + [533] = {.lex_state = 3}, + [534] = {.lex_state = 3}, + [535] = {.lex_state = 3}, + [536] = {.lex_state = 3}, + [537] = {.lex_state = 3}, + [538] = {.lex_state = 3}, + [539] = {.lex_state = 3}, + [540] = {.lex_state = 3}, + [541] = {.lex_state = 3}, + [542] = {.lex_state = 3}, + [543] = {.lex_state = 3}, + [544] = {.lex_state = 3}, + [545] = {.lex_state = 3}, + [546] = {.lex_state = 3}, + [547] = {.lex_state = 3}, + [548] = {.lex_state = 3}, + [549] = {.lex_state = 3}, + [550] = {.lex_state = 3}, + [551] = {.lex_state = 3}, + [552] = {.lex_state = 3}, + [553] = {.lex_state = 3}, + [554] = {.lex_state = 3}, + [555] = {.lex_state = 3}, + [556] = {.lex_state = 3}, + [557] = {.lex_state = 3}, + [558] = {.lex_state = 3}, + [559] = {.lex_state = 3}, + [560] = {.lex_state = 3}, + [561] = {.lex_state = 3}, + [562] = {.lex_state = 3}, + [563] = {.lex_state = 3}, + [564] = {.lex_state = 3}, + [565] = {.lex_state = 3}, + [566] = {.lex_state = 3}, + [567] = {.lex_state = 3}, + [568] = {.lex_state = 3}, + [569] = {.lex_state = 3}, + [570] = {.lex_state = 3}, + [571] = {.lex_state = 3}, + [572] = {.lex_state = 3}, + [573] = {.lex_state = 3}, + [574] = {.lex_state = 3}, + [575] = {.lex_state = 3}, + [576] = {.lex_state = 3}, + [577] = {.lex_state = 3}, + [578] = {.lex_state = 3}, + [579] = {.lex_state = 3}, + [580] = {.lex_state = 3}, + [581] = {.lex_state = 3}, + [582] = {.lex_state = 3}, + [583] = {.lex_state = 3}, + [584] = {.lex_state = 3}, + [585] = {.lex_state = 3}, + [586] = {.lex_state = 3}, + [587] = {.lex_state = 3}, + [588] = {.lex_state = 3}, + [589] = {.lex_state = 3}, + [590] = {.lex_state = 3}, + [591] = {.lex_state = 3}, + [592] = {.lex_state = 3}, + [593] = {.lex_state = 3}, + [594] = {.lex_state = 3}, + [595] = {.lex_state = 3}, + [596] = {.lex_state = 3}, + [597] = {.lex_state = 3}, + [598] = {.lex_state = 3}, + [599] = {.lex_state = 3}, + [600] = {.lex_state = 3}, + [601] = {.lex_state = 3}, + [602] = {.lex_state = 3}, + [603] = {.lex_state = 3}, + [604] = {.lex_state = 3}, + [605] = {.lex_state = 3}, + [606] = {.lex_state = 3}, + [607] = {.lex_state = 3}, + [608] = {.lex_state = 3}, + [609] = {.lex_state = 3}, + [610] = {.lex_state = 3}, + [611] = {.lex_state = 3}, + [612] = {.lex_state = 3}, + [613] = {.lex_state = 3}, + [614] = {.lex_state = 3}, + [615] = {.lex_state = 3}, + [616] = {.lex_state = 3}, + [617] = {.lex_state = 3}, + [618] = {.lex_state = 3}, + [619] = {.lex_state = 3}, + [620] = {.lex_state = 3}, + [621] = {.lex_state = 3}, + [622] = {.lex_state = 3}, + [623] = {.lex_state = 3}, + [624] = {.lex_state = 3}, + [625] = {.lex_state = 3}, + [626] = {.lex_state = 3}, + [627] = {.lex_state = 3}, + [628] = {.lex_state = 3}, + [629] = {.lex_state = 3}, + [630] = {.lex_state = 3}, + [631] = {.lex_state = 3}, + [632] = {.lex_state = 3}, + [633] = {.lex_state = 3}, + [634] = {.lex_state = 3}, + [635] = {.lex_state = 3}, + [636] = {.lex_state = 3}, + [637] = {.lex_state = 3}, + [638] = {.lex_state = 3}, + [639] = {.lex_state = 3}, + [640] = {.lex_state = 3}, + [641] = {.lex_state = 3}, + [642] = {.lex_state = 3}, + [643] = {.lex_state = 3}, + [644] = {.lex_state = 3}, + [645] = {.lex_state = 3}, + [646] = {.lex_state = 3}, + [647] = {.lex_state = 3}, + [648] = {.lex_state = 3}, + [649] = {.lex_state = 3}, + [650] = {.lex_state = 3}, + [651] = {.lex_state = 3}, + [652] = {.lex_state = 3}, + [653] = {.lex_state = 3}, + [654] = {.lex_state = 3}, + [655] = {.lex_state = 3}, + [656] = {.lex_state = 3}, + [657] = {.lex_state = 3}, + [658] = {.lex_state = 3}, + [659] = {.lex_state = 3}, + [660] = {.lex_state = 3}, + [661] = {.lex_state = 3}, + [662] = {.lex_state = 3}, + [663] = {.lex_state = 3}, + [664] = {.lex_state = 3}, + [665] = {.lex_state = 3}, + [666] = {.lex_state = 3}, + [667] = {.lex_state = 3}, + [668] = {.lex_state = 3}, + [669] = {.lex_state = 3}, + [670] = {.lex_state = 3}, + [671] = {.lex_state = 3}, + [672] = {.lex_state = 3}, + [673] = {.lex_state = 3}, + [674] = {.lex_state = 3}, + [675] = {.lex_state = 3}, + [676] = {.lex_state = 3}, + [677] = {.lex_state = 3}, + [678] = {.lex_state = 3}, + [679] = {.lex_state = 3}, + [680] = {.lex_state = 3}, + [681] = {.lex_state = 3}, + [682] = {.lex_state = 3}, + [683] = {.lex_state = 3}, + [684] = {.lex_state = 3}, + [685] = {.lex_state = 3}, + [686] = {.lex_state = 3}, + [687] = {.lex_state = 3}, + [688] = {.lex_state = 3}, + [689] = {.lex_state = 3}, + [690] = {.lex_state = 3}, + [691] = {.lex_state = 3}, + [692] = {.lex_state = 3}, + [693] = {.lex_state = 3}, + [694] = {.lex_state = 3}, + [695] = {.lex_state = 3}, + [696] = {.lex_state = 3}, + [697] = {.lex_state = 3}, + [698] = {.lex_state = 3}, + [699] = {.lex_state = 3}, + [700] = {.lex_state = 3}, + [701] = {.lex_state = 3}, + [702] = {.lex_state = 3}, + [703] = {.lex_state = 3}, + [704] = {.lex_state = 3}, + [705] = {.lex_state = 3}, + [706] = {.lex_state = 3}, + [707] = {.lex_state = 3}, + [708] = {.lex_state = 3}, + [709] = {.lex_state = 3}, + [710] = {.lex_state = 3}, + [711] = {.lex_state = 3}, + [712] = {.lex_state = 3}, + [713] = {.lex_state = 3}, + [714] = {.lex_state = 3}, + [715] = {.lex_state = 3}, + [716] = {.lex_state = 3}, + [717] = {.lex_state = 3}, + [718] = {.lex_state = 3}, + [719] = {.lex_state = 3}, + [720] = {.lex_state = 3}, + [721] = {.lex_state = 3}, + [722] = {.lex_state = 3}, + [723] = {.lex_state = 3}, + [724] = {.lex_state = 3}, + [725] = {.lex_state = 3}, + [726] = {.lex_state = 3}, + [727] = {.lex_state = 3}, + [728] = {.lex_state = 3}, + [729] = {.lex_state = 3}, + [730] = {.lex_state = 3}, + [731] = {.lex_state = 3}, + [732] = {.lex_state = 3}, + [733] = {.lex_state = 3}, + [734] = {.lex_state = 3}, + [735] = {.lex_state = 3}, + [736] = {.lex_state = 3}, + [737] = {.lex_state = 3}, + [738] = {.lex_state = 3}, + [739] = {.lex_state = 3}, + [740] = {.lex_state = 3}, + [741] = {.lex_state = 3}, + [742] = {.lex_state = 3}, + [743] = {.lex_state = 3}, + [744] = {.lex_state = 3}, + [745] = {.lex_state = 3}, + [746] = {.lex_state = 3}, + [747] = {.lex_state = 3}, + [748] = {.lex_state = 3}, + [749] = {.lex_state = 3}, + [750] = {.lex_state = 3}, + [751] = {.lex_state = 3}, + [752] = {.lex_state = 3}, + [753] = {.lex_state = 3}, + [754] = {.lex_state = 3}, + [755] = {.lex_state = 3}, + [756] = {.lex_state = 3}, + [757] = {.lex_state = 3}, + [758] = {.lex_state = 3}, + [759] = {.lex_state = 3}, + [760] = {.lex_state = 3}, + [761] = {.lex_state = 3}, + [762] = {.lex_state = 3}, + [763] = {.lex_state = 3}, + [764] = {.lex_state = 3}, + [765] = {.lex_state = 3}, + [766] = {.lex_state = 3}, + [767] = {.lex_state = 3}, + [768] = {.lex_state = 3}, + [769] = {.lex_state = 3}, + [770] = {.lex_state = 3}, + [771] = {.lex_state = 3}, + [772] = {.lex_state = 3}, + [773] = {.lex_state = 3}, + [774] = {.lex_state = 3}, + [775] = {.lex_state = 3}, + [776] = {.lex_state = 3}, + [777] = {.lex_state = 3}, + [778] = {.lex_state = 2}, + [779] = {.lex_state = 2}, + [780] = {.lex_state = 2}, + [781] = {.lex_state = 2}, + [782] = {.lex_state = 2}, + [783] = {.lex_state = 2}, + [784] = {.lex_state = 2}, + [785] = {.lex_state = 2}, + [786] = {.lex_state = 2}, + [787] = {.lex_state = 2}, + [788] = {.lex_state = 2}, + [789] = {.lex_state = 2}, + [790] = {.lex_state = 2}, + [791] = {.lex_state = 2}, + [792] = {.lex_state = 2}, + [793] = {.lex_state = 2}, + [794] = {.lex_state = 2}, + [795] = {.lex_state = 2}, + [796] = {.lex_state = 15}, + [797] = {.lex_state = 15}, + [798] = {.lex_state = 15}, + [799] = {.lex_state = 15}, + [800] = {.lex_state = 15}, + [801] = {.lex_state = 3}, + [802] = {.lex_state = 3}, + [803] = {.lex_state = 15}, + [804] = {.lex_state = 15}, + [805] = {.lex_state = 15}, + [806] = {.lex_state = 15}, + [807] = {.lex_state = 3}, + [808] = {.lex_state = 15}, + [809] = {.lex_state = 15}, + [810] = {.lex_state = 15}, + [811] = {.lex_state = 15}, + [812] = {.lex_state = 15}, + [813] = {.lex_state = 15}, + [814] = {.lex_state = 3}, + [815] = {.lex_state = 15}, + [816] = {.lex_state = 15}, + [817] = {.lex_state = 15}, + [818] = {.lex_state = 15}, + [819] = {.lex_state = 15}, + [820] = {.lex_state = 3}, + [821] = {.lex_state = 15}, + [822] = {.lex_state = 15}, + [823] = {.lex_state = 15}, + [824] = {.lex_state = 15}, + [825] = {.lex_state = 15}, + [826] = {.lex_state = 15}, + [827] = {.lex_state = 15}, + [828] = {.lex_state = 15}, + [829] = {.lex_state = 3}, + [830] = {.lex_state = 15}, + [831] = {.lex_state = 15}, + [832] = {.lex_state = 15}, + [833] = {.lex_state = 15}, + [834] = {.lex_state = 3}, + [835] = {.lex_state = 15}, + [836] = {.lex_state = 15}, + [837] = {.lex_state = 15}, + [838] = {.lex_state = 15}, + [839] = {.lex_state = 15}, + [840] = {.lex_state = 15}, + [841] = {.lex_state = 15}, + [842] = {.lex_state = 15}, + [843] = {.lex_state = 15}, + [844] = {.lex_state = 15}, + [845] = {.lex_state = 15}, + [846] = {.lex_state = 15}, + [847] = {.lex_state = 3}, + [848] = {.lex_state = 15}, + [849] = {.lex_state = 15}, + [850] = {.lex_state = 15}, + [851] = {.lex_state = 3}, + [852] = {.lex_state = 3}, + [853] = {.lex_state = 15}, + [854] = {.lex_state = 3}, + [855] = {.lex_state = 15}, + [856] = {.lex_state = 15}, + [857] = {.lex_state = 3}, + [858] = {.lex_state = 3}, + [859] = {.lex_state = 3}, + [860] = {.lex_state = 3}, + [861] = {.lex_state = 3}, + [862] = {.lex_state = 3}, + [863] = {.lex_state = 3}, + [864] = {.lex_state = 3}, + [865] = {.lex_state = 3}, + [866] = {.lex_state = 15}, + [867] = {.lex_state = 3}, + [868] = {.lex_state = 3}, + [869] = {.lex_state = 3}, + [870] = {.lex_state = 3}, + [871] = {.lex_state = 15}, + [872] = {.lex_state = 3}, + [873] = {.lex_state = 3}, + [874] = {.lex_state = 3}, + [875] = {.lex_state = 3}, + [876] = {.lex_state = 3}, + [877] = {.lex_state = 3}, + [878] = {.lex_state = 3}, + [879] = {.lex_state = 15}, + [880] = {.lex_state = 15}, + [881] = {.lex_state = 15}, + [882] = {.lex_state = 3}, + [883] = {.lex_state = 3}, + [884] = {.lex_state = 15}, + [885] = {.lex_state = 3}, + [886] = {.lex_state = 3}, + [887] = {.lex_state = 3}, + [888] = {.lex_state = 3}, + [889] = {.lex_state = 15}, + [890] = {.lex_state = 3}, + [891] = {.lex_state = 3}, + [892] = {.lex_state = 3}, + [893] = {.lex_state = 3}, + [894] = {.lex_state = 3}, + [895] = {.lex_state = 3}, + [896] = {.lex_state = 3}, + [897] = {.lex_state = 15}, + [898] = {.lex_state = 15}, + [899] = {.lex_state = 15}, + [900] = {.lex_state = 15}, + [901] = {.lex_state = 15}, + [902] = {.lex_state = 15}, + [903] = {.lex_state = 15}, + [904] = {.lex_state = 15}, + [905] = {.lex_state = 15}, + [906] = {.lex_state = 15}, + [907] = {.lex_state = 15}, + [908] = {.lex_state = 15}, + [909] = {.lex_state = 15}, + [910] = {.lex_state = 15}, + [911] = {.lex_state = 15}, + [912] = {.lex_state = 15}, + [913] = {.lex_state = 15}, + [914] = {.lex_state = 15}, + [915] = {.lex_state = 15}, + [916] = {.lex_state = 15}, + [917] = {.lex_state = 15}, + [918] = {.lex_state = 15}, + [919] = {.lex_state = 15}, + [920] = {.lex_state = 15}, + [921] = {.lex_state = 15}, + [922] = {.lex_state = 15}, + [923] = {.lex_state = 15}, + [924] = {.lex_state = 15}, + [925] = {.lex_state = 15}, + [926] = {.lex_state = 15}, + [927] = {.lex_state = 15}, + [928] = {.lex_state = 15}, + [929] = {.lex_state = 15}, + [930] = {.lex_state = 3}, + [931] = {.lex_state = 15}, + [932] = {.lex_state = 15}, + [933] = {.lex_state = 15}, + [934] = {.lex_state = 3}, + [935] = {.lex_state = 15}, + [936] = {.lex_state = 15}, + [937] = {.lex_state = 15}, + [938] = {.lex_state = 15}, + [939] = {.lex_state = 3}, + [940] = {.lex_state = 15}, + [941] = {.lex_state = 15}, + [942] = {.lex_state = 3}, + [943] = {.lex_state = 15}, + [944] = {.lex_state = 15}, + [945] = {.lex_state = 15}, + [946] = {.lex_state = 15}, + [947] = {.lex_state = 3}, + [948] = {.lex_state = 3}, + [949] = {.lex_state = 3}, + [950] = {.lex_state = 15}, + [951] = {.lex_state = 15}, + [952] = {.lex_state = 15}, + [953] = {.lex_state = 15}, + [954] = {.lex_state = 15}, + [955] = {.lex_state = 15}, + [956] = {.lex_state = 15}, + [957] = {.lex_state = 15}, + [958] = {.lex_state = 3}, + [959] = {.lex_state = 15}, + [960] = {.lex_state = 15}, + [961] = {.lex_state = 15}, + [962] = {.lex_state = 15}, + [963] = {.lex_state = 15}, + [964] = {.lex_state = 3}, + [965] = {.lex_state = 3}, + [966] = {.lex_state = 15}, + [967] = {.lex_state = 3}, + [968] = {.lex_state = 15}, + [969] = {.lex_state = 15}, + [970] = {.lex_state = 15}, + [971] = {.lex_state = 3}, + [972] = {.lex_state = 3}, + [973] = {.lex_state = 0}, + [974] = {.lex_state = 3}, + [975] = {.lex_state = 0}, + [976] = {.lex_state = 0}, + [977] = {.lex_state = 0}, + [978] = {.lex_state = 0}, + [979] = {.lex_state = 0}, + [980] = {.lex_state = 3}, + [981] = {.lex_state = 0}, + [982] = {.lex_state = 0}, + [983] = {.lex_state = 0}, + [984] = {.lex_state = 0}, + [985] = {.lex_state = 0}, + [986] = {.lex_state = 0}, + [987] = {.lex_state = 0}, + [988] = {.lex_state = 3}, + [989] = {.lex_state = 3}, + [990] = {.lex_state = 3}, + [991] = {.lex_state = 3}, + [992] = {.lex_state = 3}, + [993] = {.lex_state = 3}, + [994] = {.lex_state = 3}, + [995] = {.lex_state = 3}, + [996] = {.lex_state = 3}, + [997] = {.lex_state = 3}, + [998] = {.lex_state = 3}, + [999] = {.lex_state = 3}, + [1000] = {.lex_state = 3}, + [1001] = {.lex_state = 3}, + [1002] = {.lex_state = 3}, + [1003] = {.lex_state = 3}, + [1004] = {.lex_state = 3}, + [1005] = {.lex_state = 3}, + [1006] = {.lex_state = 3}, + [1007] = {.lex_state = 3}, + [1008] = {.lex_state = 3}, + [1009] = {.lex_state = 3}, + [1010] = {.lex_state = 3}, + [1011] = {.lex_state = 3}, + [1012] = {.lex_state = 3}, + [1013] = {.lex_state = 3}, + [1014] = {.lex_state = 3}, + [1015] = {.lex_state = 3}, + [1016] = {.lex_state = 3}, + [1017] = {.lex_state = 3}, + [1018] = {.lex_state = 3}, + [1019] = {.lex_state = 3}, + [1020] = {.lex_state = 3}, + [1021] = {.lex_state = 3}, + [1022] = {.lex_state = 3}, + [1023] = {.lex_state = 3}, + [1024] = {.lex_state = 3}, + [1025] = {.lex_state = 3}, + [1026] = {.lex_state = 3}, + [1027] = {.lex_state = 3}, + [1028] = {.lex_state = 3}, + [1029] = {.lex_state = 3}, + [1030] = {.lex_state = 3}, + [1031] = {.lex_state = 3}, + [1032] = {.lex_state = 3}, + [1033] = {.lex_state = 3}, + [1034] = {.lex_state = 3}, + [1035] = {.lex_state = 3}, + [1036] = {.lex_state = 3}, + [1037] = {.lex_state = 3}, + [1038] = {.lex_state = 3}, + [1039] = {.lex_state = 3}, + [1040] = {.lex_state = 3}, + [1041] = {.lex_state = 3}, + [1042] = {.lex_state = 3}, + [1043] = {.lex_state = 3}, + [1044] = {.lex_state = 3}, + [1045] = {.lex_state = 3}, + [1046] = {.lex_state = 3}, + [1047] = {.lex_state = 3}, + [1048] = {.lex_state = 3}, + [1049] = {.lex_state = 3}, + [1050] = {.lex_state = 3}, + [1051] = {.lex_state = 3}, + [1052] = {.lex_state = 3}, + [1053] = {.lex_state = 3}, + [1054] = {.lex_state = 3}, + [1055] = {.lex_state = 3}, + [1056] = {.lex_state = 3}, + [1057] = {.lex_state = 3}, + [1058] = {.lex_state = 3}, + [1059] = {.lex_state = 3}, + [1060] = {.lex_state = 3}, + [1061] = {.lex_state = 3}, + [1062] = {.lex_state = 3}, + [1063] = {.lex_state = 3}, + [1064] = {.lex_state = 3}, + [1065] = {.lex_state = 3}, + [1066] = {.lex_state = 0}, + [1067] = {.lex_state = 0}, + [1068] = {.lex_state = 0}, + [1069] = {.lex_state = 0}, + [1070] = {.lex_state = 0}, + [1071] = {.lex_state = 0}, + [1072] = {.lex_state = 0}, + [1073] = {.lex_state = 0}, + [1074] = {.lex_state = 0}, + [1075] = {.lex_state = 0}, + [1076] = {.lex_state = 0}, + [1077] = {.lex_state = 0}, + [1078] = {.lex_state = 0}, + [1079] = {.lex_state = 0}, + [1080] = {.lex_state = 0}, + [1081] = {.lex_state = 0}, + [1082] = {.lex_state = 0}, + [1083] = {.lex_state = 0}, + [1084] = {.lex_state = 0}, + [1085] = {.lex_state = 0}, + [1086] = {.lex_state = 0}, + [1087] = {.lex_state = 0}, + [1088] = {.lex_state = 0}, + [1089] = {.lex_state = 0}, + [1090] = {.lex_state = 0}, + [1091] = {.lex_state = 0}, + [1092] = {.lex_state = 0}, + [1093] = {.lex_state = 0}, + [1094] = {.lex_state = 0}, + [1095] = {.lex_state = 0}, + [1096] = {.lex_state = 0}, + [1097] = {.lex_state = 0}, + [1098] = {.lex_state = 0}, + [1099] = {.lex_state = 0}, + [1100] = {.lex_state = 0}, + [1101] = {.lex_state = 0}, + [1102] = {.lex_state = 0}, + [1103] = {.lex_state = 0}, + [1104] = {.lex_state = 0}, + [1105] = {.lex_state = 0}, + [1106] = {.lex_state = 0}, + [1107] = {.lex_state = 0}, + [1108] = {.lex_state = 0}, + [1109] = {.lex_state = 0}, + [1110] = {.lex_state = 0}, + [1111] = {.lex_state = 0}, + [1112] = {.lex_state = 0}, + [1113] = {.lex_state = 0}, + [1114] = {.lex_state = 0}, + [1115] = {.lex_state = 0}, + [1116] = {.lex_state = 0}, + [1117] = {.lex_state = 0}, + [1118] = {.lex_state = 0}, + [1119] = {.lex_state = 0}, + [1120] = {.lex_state = 0}, + [1121] = {.lex_state = 0}, + [1122] = {.lex_state = 0}, + [1123] = {.lex_state = 0}, + [1124] = {.lex_state = 0}, + [1125] = {.lex_state = 0}, + [1126] = {.lex_state = 0}, + [1127] = {.lex_state = 0}, + [1128] = {.lex_state = 0}, + [1129] = {.lex_state = 0}, + [1130] = {.lex_state = 0}, + [1131] = {.lex_state = 0}, + [1132] = {.lex_state = 0}, + [1133] = {.lex_state = 15}, + [1134] = {.lex_state = 0}, + [1135] = {.lex_state = 0}, + [1136] = {.lex_state = 0}, + [1137] = {.lex_state = 0}, + [1138] = {.lex_state = 0}, + [1139] = {.lex_state = 0}, + [1140] = {.lex_state = 0}, + [1141] = {.lex_state = 0}, + [1142] = {.lex_state = 0}, + [1143] = {.lex_state = 0}, + [1144] = {.lex_state = 0}, + [1145] = {.lex_state = 0}, + [1146] = {.lex_state = 0}, + [1147] = {.lex_state = 0}, + [1148] = {.lex_state = 0}, + [1149] = {.lex_state = 0}, + [1150] = {.lex_state = 0}, + [1151] = {.lex_state = 0}, + [1152] = {.lex_state = 0}, + [1153] = {.lex_state = 0}, + [1154] = {.lex_state = 15}, + [1155] = {.lex_state = 6}, + [1156] = {.lex_state = 15}, + [1157] = {.lex_state = 15}, + [1158] = {.lex_state = 15}, + [1159] = {.lex_state = 0}, + [1160] = {.lex_state = 0}, + [1161] = {.lex_state = 15}, + [1162] = {.lex_state = 15}, + [1163] = {.lex_state = 15}, + [1164] = {.lex_state = 0}, + [1165] = {.lex_state = 4}, + [1166] = {.lex_state = 15}, + [1167] = {.lex_state = 15}, + [1168] = {.lex_state = 6}, + [1169] = {.lex_state = 15}, + [1170] = {.lex_state = 0}, + [1171] = {.lex_state = 4}, + [1172] = {.lex_state = 15}, + [1173] = {.lex_state = 0}, + [1174] = {.lex_state = 0}, + [1175] = {.lex_state = 15}, + [1176] = {.lex_state = 6}, + [1177] = {.lex_state = 0}, + [1178] = {.lex_state = 4}, + [1179] = {.lex_state = 15}, + [1180] = {.lex_state = 15}, + [1181] = {.lex_state = 0}, + [1182] = {.lex_state = 15}, + [1183] = {.lex_state = 15}, + [1184] = {.lex_state = 15}, + [1185] = {.lex_state = 0}, + [1186] = {.lex_state = 0}, + [1187] = {.lex_state = 15}, + [1188] = {.lex_state = 15}, + [1189] = {.lex_state = 15}, + [1190] = {.lex_state = 0}, + [1191] = {.lex_state = 15}, + [1192] = {.lex_state = 6}, + [1193] = {.lex_state = 15}, + [1194] = {.lex_state = 0}, + [1195] = {.lex_state = 15}, + [1196] = {.lex_state = 0}, + [1197] = {.lex_state = 4}, + [1198] = {.lex_state = 0}, + [1199] = {.lex_state = 15}, + [1200] = {.lex_state = 15}, + [1201] = {.lex_state = 15}, + [1202] = {.lex_state = 6}, + [1203] = {.lex_state = 15}, + [1204] = {.lex_state = 5}, + [1205] = {.lex_state = 15}, + [1206] = {.lex_state = 15}, + [1207] = {.lex_state = 15}, + [1208] = {.lex_state = 0}, + [1209] = {.lex_state = 0}, + [1210] = {.lex_state = 0}, + [1211] = {.lex_state = 15}, + [1212] = {.lex_state = 15}, + [1213] = {.lex_state = 0}, + [1214] = {.lex_state = 15}, + [1215] = {.lex_state = 15}, + [1216] = {.lex_state = 15}, + [1217] = {.lex_state = 0}, + [1218] = {.lex_state = 0}, + [1219] = {.lex_state = 15}, + [1220] = {.lex_state = 0}, + [1221] = {.lex_state = 15}, + [1222] = {.lex_state = 15}, + [1223] = {.lex_state = 6}, + [1224] = {.lex_state = 0}, + [1225] = {.lex_state = 4}, + [1226] = {.lex_state = 15}, + [1227] = {.lex_state = 6}, + [1228] = {.lex_state = 15}, + [1229] = {.lex_state = 0}, + [1230] = {.lex_state = 0}, + [1231] = {.lex_state = 0}, + [1232] = {.lex_state = 0}, + [1233] = {.lex_state = 0}, + [1234] = {.lex_state = 7}, + [1235] = {.lex_state = 15}, + [1236] = {.lex_state = 0}, + [1237] = {.lex_state = 0}, + [1238] = {.lex_state = 0}, + [1239] = {.lex_state = 15}, + [1240] = {.lex_state = 15}, + [1241] = {.lex_state = 15}, + [1242] = {.lex_state = 15}, + [1243] = {.lex_state = 15}, + [1244] = {.lex_state = 0}, + [1245] = {.lex_state = 0}, + [1246] = {.lex_state = 15}, + [1247] = {.lex_state = 15}, + [1248] = {.lex_state = 0}, + [1249] = {.lex_state = 0}, + [1250] = {.lex_state = 15}, + [1251] = {.lex_state = 0}, + [1252] = {.lex_state = 15}, + [1253] = {.lex_state = 15}, + [1254] = {.lex_state = 15}, + [1255] = {.lex_state = 0}, + [1256] = {.lex_state = 15}, + [1257] = {.lex_state = 0}, + [1258] = {.lex_state = 15}, + [1259] = {.lex_state = 0}, + [1260] = {.lex_state = 0}, + [1261] = {.lex_state = 15}, + [1262] = {.lex_state = 15}, + [1263] = {.lex_state = 15}, + [1264] = {.lex_state = 15}, + [1265] = {.lex_state = 15}, + [1266] = {.lex_state = 15}, + [1267] = {.lex_state = 0}, + [1268] = {.lex_state = 0}, + [1269] = {.lex_state = 15}, + [1270] = {.lex_state = 15}, + [1271] = {.lex_state = 15}, + [1272] = {.lex_state = 0}, + [1273] = {.lex_state = 0}, + [1274] = {.lex_state = 0}, + [1275] = {.lex_state = 0}, + [1276] = {.lex_state = 0}, + [1277] = {.lex_state = 15}, + [1278] = {.lex_state = 15}, + [1279] = {.lex_state = 0}, + [1280] = {.lex_state = 0}, + [1281] = {.lex_state = 0}, + [1282] = {.lex_state = 0}, + [1283] = {.lex_state = 6}, + [1284] = {.lex_state = 4}, + [1285] = {.lex_state = 0}, + [1286] = {.lex_state = 0}, + [1287] = {.lex_state = 0}, + [1288] = {.lex_state = 0}, + [1289] = {.lex_state = 0}, + [1290] = {.lex_state = 0}, + [1291] = {.lex_state = 0}, + [1292] = {.lex_state = 0}, + [1293] = {.lex_state = 0}, + [1294] = {.lex_state = 0}, + [1295] = {.lex_state = 0}, + [1296] = {.lex_state = 0}, + [1297] = {.lex_state = 0}, + [1298] = {.lex_state = 0}, + [1299] = {.lex_state = 0}, + [1300] = {.lex_state = 0}, + [1301] = {.lex_state = 0}, + [1302] = {.lex_state = 0}, + [1303] = {.lex_state = 0}, + [1304] = {.lex_state = 0}, + [1305] = {.lex_state = 0}, + [1306] = {.lex_state = 0}, + [1307] = {.lex_state = 0}, + [1308] = {.lex_state = 0}, + [1309] = {.lex_state = 0}, + [1310] = {.lex_state = 0}, + [1311] = {.lex_state = 0}, + [1312] = {.lex_state = 0}, + [1313] = {.lex_state = 0}, + [1314] = {.lex_state = 0}, + [1315] = {.lex_state = 0}, + [1316] = {.lex_state = 4}, + [1317] = {.lex_state = 0}, + [1318] = {.lex_state = 0}, + [1319] = {.lex_state = 0}, + [1320] = {.lex_state = 7}, + [1321] = {.lex_state = 6}, + [1322] = {.lex_state = 7}, + [1323] = {.lex_state = 0}, + [1324] = {.lex_state = 0}, + [1325] = {.lex_state = 0}, + [1326] = {.lex_state = 0}, + [1327] = {.lex_state = 4}, + [1328] = {.lex_state = 0}, + [1329] = {.lex_state = 0}, + [1330] = {.lex_state = 0}, + [1331] = {.lex_state = 0}, + [1332] = {.lex_state = 0}, + [1333] = {.lex_state = 0}, + [1334] = {.lex_state = 4}, + [1335] = {.lex_state = 0}, + [1336] = {.lex_state = 0}, + [1337] = {.lex_state = 0}, + [1338] = {.lex_state = 0}, + [1339] = {.lex_state = 0}, + [1340] = {.lex_state = 3}, + [1341] = {.lex_state = 0}, + [1342] = {.lex_state = 0}, + [1343] = {.lex_state = 0}, + [1344] = {.lex_state = 0}, + [1345] = {.lex_state = 3}, + [1346] = {.lex_state = 0}, + [1347] = {.lex_state = 0}, + [1348] = {.lex_state = 0}, + [1349] = {.lex_state = 3}, + [1350] = {.lex_state = 0}, + [1351] = {.lex_state = 0}, + [1352] = {.lex_state = 0}, + [1353] = {.lex_state = 0}, + [1354] = {.lex_state = 0}, + [1355] = {.lex_state = 0}, + [1356] = {.lex_state = 0}, + [1357] = {.lex_state = 15}, + [1358] = {.lex_state = 0}, + [1359] = {.lex_state = 15}, + [1360] = {.lex_state = 0}, + [1361] = {.lex_state = 0}, + [1362] = {.lex_state = 0}, + [1363] = {.lex_state = 0}, + [1364] = {.lex_state = 0}, + [1365] = {.lex_state = 0}, + [1366] = {.lex_state = 0}, + [1367] = {.lex_state = 0}, + [1368] = {.lex_state = 0}, + [1369] = {.lex_state = 0}, + [1370] = {.lex_state = 0}, + [1371] = {.lex_state = 0}, + [1372] = {.lex_state = 0}, + [1373] = {.lex_state = 0}, + [1374] = {.lex_state = 0}, + [1375] = {.lex_state = 0}, + [1376] = {.lex_state = 0}, + [1377] = {.lex_state = 0}, + [1378] = {.lex_state = 0}, + [1379] = {.lex_state = 0}, + [1380] = {.lex_state = 0}, + [1381] = {.lex_state = 0}, + [1382] = {.lex_state = 0}, + [1383] = {.lex_state = 0}, + [1384] = {.lex_state = 0}, + [1385] = {.lex_state = 0}, + [1386] = {.lex_state = 0}, + [1387] = {.lex_state = 0}, + [1388] = {.lex_state = 0}, + [1389] = {.lex_state = 0}, + [1390] = {.lex_state = 0}, + [1391] = {.lex_state = 0}, + [1392] = {.lex_state = 0}, + [1393] = {.lex_state = 0}, + [1394] = {.lex_state = 0}, + [1395] = {.lex_state = 0}, + [1396] = {.lex_state = 0}, + [1397] = {.lex_state = 0}, + [1398] = {.lex_state = 0}, + [1399] = {.lex_state = 0}, + [1400] = {.lex_state = 0}, + [1401] = {.lex_state = 0}, + [1402] = {.lex_state = 0}, + [1403] = {.lex_state = 0}, + [1404] = {.lex_state = 0}, + [1405] = {.lex_state = 0}, + [1406] = {.lex_state = 0}, + [1407] = {.lex_state = 0}, + [1408] = {.lex_state = 0}, + [1409] = {.lex_state = 0}, + [1410] = {.lex_state = 0}, + [1411] = {.lex_state = 0}, + [1412] = {.lex_state = 0}, + [1413] = {.lex_state = 0}, + [1414] = {.lex_state = 15}, + [1415] = {.lex_state = 0}, + [1416] = {.lex_state = 0}, + [1417] = {.lex_state = 0}, + [1418] = {.lex_state = 0}, + [1419] = {.lex_state = 0}, + [1420] = {.lex_state = 0}, + [1421] = {.lex_state = 0}, + [1422] = {.lex_state = 0}, + [1423] = {.lex_state = 0}, + [1424] = {.lex_state = 15}, + [1425] = {.lex_state = 0}, + [1426] = {.lex_state = 0}, + [1427] = {.lex_state = 0}, + [1428] = {.lex_state = 0}, + [1429] = {.lex_state = 0}, + [1430] = {.lex_state = 0}, + [1431] = {.lex_state = 0}, + [1432] = {.lex_state = 0}, + [1433] = {.lex_state = 0}, + [1434] = {.lex_state = 0}, + [1435] = {.lex_state = 0}, + [1436] = {.lex_state = 0}, + [1437] = {.lex_state = 0}, + [1438] = {.lex_state = 0}, + [1439] = {.lex_state = 0}, + [1440] = {.lex_state = 0}, + [1441] = {.lex_state = 0}, + [1442] = {.lex_state = 0}, + [1443] = {.lex_state = 0}, + [1444] = {.lex_state = 0}, + [1445] = {.lex_state = 0}, + [1446] = {.lex_state = 0}, + [1447] = {.lex_state = 0}, + [1448] = {.lex_state = 43}, + [1449] = {.lex_state = 0}, + [1450] = {.lex_state = 0}, + [1451] = {.lex_state = 0}, + [1452] = {.lex_state = 0}, + [1453] = {.lex_state = 0}, + [1454] = {.lex_state = 0}, + [1455] = {.lex_state = 0}, + [1456] = {.lex_state = 0}, + [1457] = {.lex_state = 15}, + [1458] = {.lex_state = 0}, + [1459] = {.lex_state = 0}, + [1460] = {.lex_state = 0}, + [1461] = {.lex_state = 0}, + [1462] = {.lex_state = 0}, + [1463] = {.lex_state = 0}, + [1464] = {.lex_state = 0}, + [1465] = {.lex_state = 0}, + [1466] = {.lex_state = 0}, + [1467] = {.lex_state = 0}, + [1468] = {.lex_state = 0}, + [1469] = {.lex_state = 0}, + [1470] = {.lex_state = 0}, + [1471] = {.lex_state = 0}, + [1472] = {.lex_state = 0}, + [1473] = {.lex_state = 0}, + [1474] = {.lex_state = 0}, + [1475] = {.lex_state = 0}, + [1476] = {.lex_state = 0}, + [1477] = {.lex_state = 0}, + [1478] = {.lex_state = 0}, + [1479] = {.lex_state = 0}, + [1480] = {.lex_state = 15}, + [1481] = {.lex_state = 0}, + [1482] = {.lex_state = 0}, + [1483] = {.lex_state = 0}, + [1484] = {.lex_state = 0}, + [1485] = {.lex_state = 0}, + [1486] = {.lex_state = 0}, + [1487] = {.lex_state = 0}, + [1488] = {.lex_state = 0}, + [1489] = {.lex_state = 0}, + [1490] = {.lex_state = 43}, + [1491] = {.lex_state = 0}, + [1492] = {.lex_state = 0}, + [1493] = {.lex_state = 0}, + [1494] = {.lex_state = 0}, + [1495] = {.lex_state = 0}, + [1496] = {.lex_state = 0}, + [1497] = {.lex_state = 0}, + [1498] = {.lex_state = 0}, + [1499] = {.lex_state = 0}, + [1500] = {.lex_state = 0}, + [1501] = {.lex_state = 0}, + [1502] = {.lex_state = 0}, + [1503] = {.lex_state = 0}, + [1504] = {.lex_state = 15}, + [1505] = {.lex_state = 0}, + [1506] = {.lex_state = 0}, + [1507] = {.lex_state = 0}, + [1508] = {.lex_state = 0}, + [1509] = {.lex_state = 0}, + [1510] = {.lex_state = 0}, +}; + +static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { + [0] = { + [ts_builtin_sym_end] = ACTIONS(1), + [sym_name] = ACTIONS(1), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [sym_index] = ACTIONS(1), + [anon_sym_AT] = ACTIONS(1), + [anon_sym_LBRACE] = ACTIONS(1), + [anon_sym_RBRACE] = ACTIONS(1), + [anon_sym_COMMA] = ACTIONS(1), + [anon_sym_COLON] = ACTIONS(1), + [sym_constant_int] = ACTIONS(1), + [sym_string_quote] = ACTIONS(1), + [anon_sym_DOLLAR] = ACTIONS(1), + [anon_sym_SQUOTE] = ACTIONS(1), + [anon_sym_true] = ACTIONS(1), + [anon_sym_false] = ACTIONS(1), + [anon_sym_LPAREN] = ACTIONS(1), + [anon_sym_RPAREN] = ACTIONS(1), + [anon_sym_def] = ACTIONS(1), + [anon_sym_LBRACK] = ACTIONS(1), + [anon_sym_RBRACK] = ACTIONS(1), + [anon_sym_EQ] = ACTIONS(1), + [anon_sym_SEMI] = ACTIONS(1), + [anon_sym_type] = ACTIONS(1), + [anon_sym_enum] = ACTIONS(1), + [anon_sym_val] = ACTIONS(1), + [anon_sym_var] = ACTIONS(1), + [anon_sym_rust] = ACTIONS(1), + [anon_sym_python] = ACTIONS(1), + [anon_sym_fun] = ACTIONS(1), + [anon_sym_AMP] = ACTIONS(1), + [anon_sym_PLUS_PLUS] = ACTIONS(1), + [sym_type_never] = ACTIONS(1), + [anon_sym__] = ACTIONS(1), + [anon_sym_or] = ACTIONS(1), + [anon_sym_DOT] = ACTIONS(1), + [anon_sym_return] = ACTIONS(1), + [anon_sym_break] = ACTIONS(1), + [anon_sym_continue] = ACTIONS(1), + [anon_sym_throw] = ACTIONS(1), + [anon_sym_from] = ACTIONS(1), + [anon_sym_in] = ACTIONS(1), + [anon_sym_where] = ACTIONS(1), + [anon_sym_join] = ACTIONS(1), + [anon_sym_on] = ACTIONS(1), + [anon_sym_union] = ACTIONS(1), + [anon_sym_group] = ACTIONS(1), + [anon_sym_over] = ACTIONS(1), + [anon_sym_roll] = ACTIONS(1), + [anon_sym_compute] = ACTIONS(1), + [anon_sym_select] = ACTIONS(1), + [anon_sym_with] = ACTIONS(1), + [anon_sym_into] = ACTIONS(1), + [anon_sym_order] = ACTIONS(1), + [anon_sym_desc] = ACTIONS(1), + [anon_sym_as] = ACTIONS(1), + [anon_sym_of] = ACTIONS(1), + [anon_sym_PLUS_EQ] = ACTIONS(1), + [anon_sym_DASH_EQ] = ACTIONS(1), + [anon_sym_STAR_EQ] = ACTIONS(1), + [anon_sym_SLASH_EQ] = ACTIONS(1), + [anon_sym_DOT_DOT] = ACTIONS(1), + [anon_sym_DOT_DOT_EQ] = ACTIONS(1), + [anon_sym_and] = ACTIONS(1), + [anon_sym_EQ_EQ] = ACTIONS(1), + [anon_sym_LT] = ACTIONS(1), + [anon_sym_GT] = ACTIONS(1), + [anon_sym_LT_EQ] = ACTIONS(1), + [anon_sym_GT_EQ] = ACTIONS(1), + [anon_sym_PLUS] = ACTIONS(1), + [anon_sym_DASH] = ACTIONS(1), + [anon_sym_STAR] = ACTIONS(1), + [anon_sym_SLASH] = ACTIONS(1), + [anon_sym_not] = ACTIONS(1), + [anon_sym_COLON_COLON] = ACTIONS(1), + [anon_sym_do] = ACTIONS(1), + [anon_sym_if] = ACTIONS(1), + [anon_sym_else] = ACTIONS(1), + [anon_sym_match] = ACTIONS(1), + [anon_sym_loop] = ACTIONS(1), + [anon_sym_while] = ACTIONS(1), + [anon_sym_for] = ACTIONS(1), + [anon_sym_try] = ACTIONS(1), + [anon_sym_catch] = ACTIONS(1), + [anon_sym_finally] = ACTIONS(1), + [anon_sym_EQ_GT] = ACTIONS(1), + }, + [1] = { + [sym_program] = STATE(1379), + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(39), + [sym__stmt] = STATE(39), + [sym_stmt_def] = STATE(39), + [sym_stmt_type] = STATE(39), + [sym_stmt_enum] = STATE(39), + [sym_stmt_val] = STATE(39), + [sym_stmt_var] = STATE(39), + [sym_stmt_expr] = STATE(39), + [sym_stmt_code] = STATE(39), + [sym__stmt_noop] = STATE(39), + [sym__expr] = STATE(1025), + [sym_expr_return] = STATE(1025), + [sym_expr_break] = STATE(1025), + [sym_expr_continue] = STATE(1025), + [sym_expr_throw] = STATE(1025), + [sym_expr_query] = STATE(1025), + [sym_expr_rust] = STATE(1025), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1025), + [sym_expr_binary] = STATE(1025), + [sym_expr_annot] = STATE(1025), + [sym_expr_call] = STATE(1025), + [sym_expr_tuple_access] = STATE(1025), + [sym_expr_record_access] = STATE(1025), + [sym_expr_array_access] = STATE(1025), + [sym_expr_method_call] = STATE(1025), + [sym_expr_paren] = STATE(1025), + [sym_expr_constant] = STATE(1025), + [sym_expr_name] = STATE(1025), + [sym_expr_array] = STATE(1025), + [sym_expr_tuple] = STATE(1025), + [sym_expr_record] = STATE(1025), + [sym_expr_do] = STATE(1025), + [sym_expr_if] = STATE(1025), + [sym_expr_match] = STATE(1025), + [sym_expr_loop] = STATE(1025), + [sym_expr_while] = STATE(1025), + [sym_expr_for] = STATE(1025), + [sym_expr_try] = STATE(1025), + [ts_builtin_sym_end] = ACTIONS(5), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(29), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [2] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(539), + [sym_expr_return] = STATE(539), + [sym_expr_break] = STATE(539), + [sym_expr_continue] = STATE(539), + [sym_expr_throw] = STATE(539), + [sym_expr_query] = STATE(539), + [sym_expr_rust] = STATE(539), + [sym_query_from] = STATE(59), + [sym_expr_fun] = STATE(539), + [sym_expr_binary] = STATE(539), + [sym_expr_annot] = STATE(539), + [sym_expr_call] = STATE(539), + [sym_expr_tuple_access] = STATE(539), + [sym_expr_record_access] = STATE(539), + [sym_expr_array_access] = STATE(539), + [sym_expr_method_call] = STATE(539), + [sym_expr_paren] = STATE(539), + [sym_expr_constant] = STATE(539), + [sym_expr_name] = STATE(539), + [sym_expr_array] = STATE(539), + [sym_expr_tuple] = STATE(539), + [sym_expr_record] = STATE(539), + [sym_expr_do] = STATE(539), + [sym_expr_if] = STATE(539), + [sym_expr_match] = STATE(539), + [sym_expr_loop] = STATE(539), + [sym_expr_while] = STATE(539), + [sym_expr_for] = STATE(539), + [sym_expr_try] = STATE(539), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(73), + [anon_sym_COMMA] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_RPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_RBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(73), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(89), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(91), + [anon_sym_break] = ACTIONS(93), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(97), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_on] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_desc] = ACTIONS(75), + [anon_sym_as] = ACTIONS(75), + [anon_sym_of] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [3] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(540), + [sym_expr_return] = STATE(540), + [sym_expr_break] = STATE(540), + [sym_expr_continue] = STATE(540), + [sym_expr_throw] = STATE(540), + [sym_expr_query] = STATE(540), + [sym_expr_rust] = STATE(540), + [sym_query_from] = STATE(59), + [sym_expr_fun] = STATE(540), + [sym_expr_binary] = STATE(540), + [sym_expr_annot] = STATE(540), + [sym_expr_call] = STATE(540), + [sym_expr_tuple_access] = STATE(540), + [sym_expr_record_access] = STATE(540), + [sym_expr_array_access] = STATE(540), + [sym_expr_method_call] = STATE(540), + [sym_expr_paren] = STATE(540), + [sym_expr_constant] = STATE(540), + [sym_expr_name] = STATE(540), + [sym_expr_array] = STATE(540), + [sym_expr_tuple] = STATE(540), + [sym_expr_record] = STATE(540), + [sym_expr_do] = STATE(540), + [sym_expr_if] = STATE(540), + [sym_expr_match] = STATE(540), + [sym_expr_loop] = STATE(540), + [sym_expr_while] = STATE(540), + [sym_expr_for] = STATE(540), + [sym_expr_try] = STATE(540), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(113), + [anon_sym_COMMA] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_RPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_RBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_SEMI] = ACTIONS(113), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(89), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(91), + [anon_sym_break] = ACTIONS(93), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(97), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_on] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_desc] = ACTIONS(115), + [anon_sym_as] = ACTIONS(115), + [anon_sym_of] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [4] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(550), + [sym_expr_return] = STATE(550), + [sym_expr_break] = STATE(550), + [sym_expr_continue] = STATE(550), + [sym_expr_throw] = STATE(550), + [sym_expr_query] = STATE(550), + [sym_expr_rust] = STATE(550), + [sym_query_from] = STATE(257), + [sym_expr_fun] = STATE(550), + [sym_expr_binary] = STATE(550), + [sym_expr_annot] = STATE(550), + [sym_expr_call] = STATE(550), + [sym_expr_tuple_access] = STATE(550), + [sym_expr_record_access] = STATE(550), + [sym_expr_array_access] = STATE(550), + [sym_expr_method_call] = STATE(550), + [sym_expr_paren] = STATE(550), + [sym_expr_constant] = STATE(550), + [sym_expr_name] = STATE(550), + [sym_expr_array] = STATE(550), + [sym_expr_tuple] = STATE(550), + [sym_expr_record] = STATE(550), + [sym_expr_do] = STATE(550), + [sym_expr_if] = STATE(550), + [sym_expr_match] = STATE(550), + [sym_expr_loop] = STATE(550), + [sym_expr_while] = STATE(550), + [sym_expr_for] = STATE(550), + [sym_expr_try] = STATE(550), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(73), + [anon_sym_COMMA] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_RPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_RBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(73), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(117), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(119), + [anon_sym_break] = ACTIONS(121), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(123), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_on] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_desc] = ACTIONS(75), + [anon_sym_as] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [5] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(569), + [sym_expr_return] = STATE(569), + [sym_expr_break] = STATE(569), + [sym_expr_continue] = STATE(569), + [sym_expr_throw] = STATE(569), + [sym_expr_query] = STATE(569), + [sym_expr_rust] = STATE(569), + [sym_query_from] = STATE(345), + [sym_expr_fun] = STATE(569), + [sym_expr_binary] = STATE(569), + [sym_expr_annot] = STATE(569), + [sym_expr_call] = STATE(569), + [sym_expr_tuple_access] = STATE(569), + [sym_expr_record_access] = STATE(569), + [sym_expr_array_access] = STATE(569), + [sym_expr_method_call] = STATE(569), + [sym_expr_paren] = STATE(569), + [sym_expr_constant] = STATE(569), + [sym_expr_name] = STATE(569), + [sym_expr_array] = STATE(569), + [sym_expr_tuple] = STATE(569), + [sym_expr_record] = STATE(569), + [sym_expr_do] = STATE(569), + [sym_expr_if] = STATE(569), + [sym_expr_match] = STATE(569), + [sym_expr_loop] = STATE(569), + [sym_expr_while] = STATE(569), + [sym_expr_for] = STATE(569), + [sym_expr_try] = STATE(569), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(113), + [anon_sym_COMMA] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_RPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_RBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_SEMI] = ACTIONS(113), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(125), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(127), + [anon_sym_break] = ACTIONS(129), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(131), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_on] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_as] = ACTIONS(115), + [anon_sym_of] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [6] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(571), + [sym_expr_return] = STATE(571), + [sym_expr_break] = STATE(571), + [sym_expr_continue] = STATE(571), + [sym_expr_throw] = STATE(571), + [sym_expr_query] = STATE(571), + [sym_expr_rust] = STATE(571), + [sym_query_from] = STATE(345), + [sym_expr_fun] = STATE(571), + [sym_expr_binary] = STATE(571), + [sym_expr_annot] = STATE(571), + [sym_expr_call] = STATE(571), + [sym_expr_tuple_access] = STATE(571), + [sym_expr_record_access] = STATE(571), + [sym_expr_array_access] = STATE(571), + [sym_expr_method_call] = STATE(571), + [sym_expr_paren] = STATE(571), + [sym_expr_constant] = STATE(571), + [sym_expr_name] = STATE(571), + [sym_expr_array] = STATE(571), + [sym_expr_tuple] = STATE(571), + [sym_expr_record] = STATE(571), + [sym_expr_do] = STATE(571), + [sym_expr_if] = STATE(571), + [sym_expr_match] = STATE(571), + [sym_expr_loop] = STATE(571), + [sym_expr_while] = STATE(571), + [sym_expr_for] = STATE(571), + [sym_expr_try] = STATE(571), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(73), + [anon_sym_COMMA] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_RPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_RBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(73), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(125), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(127), + [anon_sym_break] = ACTIONS(129), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(131), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_on] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_as] = ACTIONS(75), + [anon_sym_of] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [7] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(588), + [sym_expr_return] = STATE(588), + [sym_expr_break] = STATE(588), + [sym_expr_continue] = STATE(588), + [sym_expr_throw] = STATE(588), + [sym_expr_query] = STATE(588), + [sym_expr_rust] = STATE(588), + [sym_query_from] = STATE(257), + [sym_expr_fun] = STATE(588), + [sym_expr_binary] = STATE(588), + [sym_expr_annot] = STATE(588), + [sym_expr_call] = STATE(588), + [sym_expr_tuple_access] = STATE(588), + [sym_expr_record_access] = STATE(588), + [sym_expr_array_access] = STATE(588), + [sym_expr_method_call] = STATE(588), + [sym_expr_paren] = STATE(588), + [sym_expr_constant] = STATE(588), + [sym_expr_name] = STATE(588), + [sym_expr_array] = STATE(588), + [sym_expr_tuple] = STATE(588), + [sym_expr_record] = STATE(588), + [sym_expr_do] = STATE(588), + [sym_expr_if] = STATE(588), + [sym_expr_match] = STATE(588), + [sym_expr_loop] = STATE(588), + [sym_expr_while] = STATE(588), + [sym_expr_for] = STATE(588), + [sym_expr_try] = STATE(588), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(113), + [anon_sym_COMMA] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_RPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_RBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_SEMI] = ACTIONS(113), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(117), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(119), + [anon_sym_break] = ACTIONS(121), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(123), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_on] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_desc] = ACTIONS(115), + [anon_sym_as] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [8] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(599), + [sym_expr_return] = STATE(599), + [sym_expr_break] = STATE(599), + [sym_expr_continue] = STATE(599), + [sym_expr_throw] = STATE(599), + [sym_expr_query] = STATE(599), + [sym_expr_rust] = STATE(599), + [sym_query_from] = STATE(395), + [sym_expr_fun] = STATE(599), + [sym_expr_binary] = STATE(599), + [sym_expr_annot] = STATE(599), + [sym_expr_call] = STATE(599), + [sym_expr_tuple_access] = STATE(599), + [sym_expr_record_access] = STATE(599), + [sym_expr_array_access] = STATE(599), + [sym_expr_method_call] = STATE(599), + [sym_expr_paren] = STATE(599), + [sym_expr_constant] = STATE(599), + [sym_expr_name] = STATE(599), + [sym_expr_array] = STATE(599), + [sym_expr_tuple] = STATE(599), + [sym_expr_record] = STATE(599), + [sym_expr_do] = STATE(599), + [sym_expr_if] = STATE(599), + [sym_expr_match] = STATE(599), + [sym_expr_loop] = STATE(599), + [sym_expr_while] = STATE(599), + [sym_expr_for] = STATE(599), + [sym_expr_try] = STATE(599), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(73), + [anon_sym_COMMA] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_RPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_RBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(73), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(133), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(135), + [anon_sym_break] = ACTIONS(137), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(139), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_on] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_as] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [9] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(600), + [sym_expr_return] = STATE(600), + [sym_expr_break] = STATE(600), + [sym_expr_continue] = STATE(600), + [sym_expr_throw] = STATE(600), + [sym_expr_query] = STATE(600), + [sym_expr_rust] = STATE(600), + [sym_query_from] = STATE(395), + [sym_expr_fun] = STATE(600), + [sym_expr_binary] = STATE(600), + [sym_expr_annot] = STATE(600), + [sym_expr_call] = STATE(600), + [sym_expr_tuple_access] = STATE(600), + [sym_expr_record_access] = STATE(600), + [sym_expr_array_access] = STATE(600), + [sym_expr_method_call] = STATE(600), + [sym_expr_paren] = STATE(600), + [sym_expr_constant] = STATE(600), + [sym_expr_name] = STATE(600), + [sym_expr_array] = STATE(600), + [sym_expr_tuple] = STATE(600), + [sym_expr_record] = STATE(600), + [sym_expr_do] = STATE(600), + [sym_expr_if] = STATE(600), + [sym_expr_match] = STATE(600), + [sym_expr_loop] = STATE(600), + [sym_expr_while] = STATE(600), + [sym_expr_for] = STATE(600), + [sym_expr_try] = STATE(600), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(113), + [anon_sym_COMMA] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_RPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_RBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_SEMI] = ACTIONS(113), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(133), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(135), + [anon_sym_break] = ACTIONS(137), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(139), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_on] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_as] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [10] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(602), + [sym_expr_return] = STATE(602), + [sym_expr_break] = STATE(602), + [sym_expr_continue] = STATE(602), + [sym_expr_throw] = STATE(602), + [sym_expr_query] = STATE(602), + [sym_expr_rust] = STATE(602), + [sym_query_from] = STATE(394), + [sym_expr_fun] = STATE(602), + [sym_expr_binary] = STATE(602), + [sym_expr_annot] = STATE(602), + [sym_expr_call] = STATE(602), + [sym_expr_tuple_access] = STATE(602), + [sym_expr_record_access] = STATE(602), + [sym_expr_array_access] = STATE(602), + [sym_expr_method_call] = STATE(602), + [sym_expr_paren] = STATE(602), + [sym_expr_constant] = STATE(602), + [sym_expr_name] = STATE(602), + [sym_expr_array] = STATE(602), + [sym_expr_tuple] = STATE(602), + [sym_expr_record] = STATE(602), + [sym_expr_do] = STATE(602), + [sym_expr_if] = STATE(602), + [sym_expr_match] = STATE(602), + [sym_expr_loop] = STATE(602), + [sym_expr_while] = STATE(602), + [sym_expr_for] = STATE(602), + [sym_expr_try] = STATE(602), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(73), + [anon_sym_COMMA] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_RPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_RBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(73), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(141), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(143), + [anon_sym_break] = ACTIONS(145), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(147), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_on] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_desc] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [11] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(590), + [sym_expr_return] = STATE(590), + [sym_expr_break] = STATE(590), + [sym_expr_continue] = STATE(590), + [sym_expr_throw] = STATE(590), + [sym_expr_query] = STATE(590), + [sym_expr_rust] = STATE(590), + [sym_query_from] = STATE(394), + [sym_expr_fun] = STATE(590), + [sym_expr_binary] = STATE(590), + [sym_expr_annot] = STATE(590), + [sym_expr_call] = STATE(590), + [sym_expr_tuple_access] = STATE(590), + [sym_expr_record_access] = STATE(590), + [sym_expr_array_access] = STATE(590), + [sym_expr_method_call] = STATE(590), + [sym_expr_paren] = STATE(590), + [sym_expr_constant] = STATE(590), + [sym_expr_name] = STATE(590), + [sym_expr_array] = STATE(590), + [sym_expr_tuple] = STATE(590), + [sym_expr_record] = STATE(590), + [sym_expr_do] = STATE(590), + [sym_expr_if] = STATE(590), + [sym_expr_match] = STATE(590), + [sym_expr_loop] = STATE(590), + [sym_expr_while] = STATE(590), + [sym_expr_for] = STATE(590), + [sym_expr_try] = STATE(590), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(113), + [anon_sym_COMMA] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_RPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_RBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_SEMI] = ACTIONS(113), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(141), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(143), + [anon_sym_break] = ACTIONS(145), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(147), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_on] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_desc] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [12] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(641), + [sym_expr_return] = STATE(641), + [sym_expr_break] = STATE(641), + [sym_expr_continue] = STATE(641), + [sym_expr_throw] = STATE(641), + [sym_expr_query] = STATE(641), + [sym_expr_rust] = STATE(641), + [sym_query_from] = STATE(399), + [sym_expr_fun] = STATE(641), + [sym_expr_binary] = STATE(641), + [sym_expr_annot] = STATE(641), + [sym_expr_call] = STATE(641), + [sym_expr_tuple_access] = STATE(641), + [sym_expr_record_access] = STATE(641), + [sym_expr_array_access] = STATE(641), + [sym_expr_method_call] = STATE(641), + [sym_expr_paren] = STATE(641), + [sym_expr_constant] = STATE(641), + [sym_expr_name] = STATE(641), + [sym_expr_array] = STATE(641), + [sym_expr_tuple] = STATE(641), + [sym_expr_record] = STATE(641), + [sym_expr_do] = STATE(641), + [sym_expr_if] = STATE(641), + [sym_expr_match] = STATE(641), + [sym_expr_loop] = STATE(641), + [sym_expr_while] = STATE(641), + [sym_expr_for] = STATE(641), + [sym_expr_try] = STATE(641), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(113), + [anon_sym_COMMA] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_RPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_RBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_SEMI] = ACTIONS(113), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(149), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(151), + [anon_sym_break] = ACTIONS(153), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(155), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_on] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [13] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(638), + [sym_expr_return] = STATE(638), + [sym_expr_break] = STATE(638), + [sym_expr_continue] = STATE(638), + [sym_expr_throw] = STATE(638), + [sym_expr_query] = STATE(638), + [sym_expr_rust] = STATE(638), + [sym_query_from] = STATE(399), + [sym_expr_fun] = STATE(638), + [sym_expr_binary] = STATE(638), + [sym_expr_annot] = STATE(638), + [sym_expr_call] = STATE(638), + [sym_expr_tuple_access] = STATE(638), + [sym_expr_record_access] = STATE(638), + [sym_expr_array_access] = STATE(638), + [sym_expr_method_call] = STATE(638), + [sym_expr_paren] = STATE(638), + [sym_expr_constant] = STATE(638), + [sym_expr_name] = STATE(638), + [sym_expr_array] = STATE(638), + [sym_expr_tuple] = STATE(638), + [sym_expr_record] = STATE(638), + [sym_expr_do] = STATE(638), + [sym_expr_if] = STATE(638), + [sym_expr_match] = STATE(638), + [sym_expr_loop] = STATE(638), + [sym_expr_while] = STATE(638), + [sym_expr_for] = STATE(638), + [sym_expr_try] = STATE(638), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(71), + [anon_sym_RBRACE] = ACTIONS(73), + [anon_sym_COMMA] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_RPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_RBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(73), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(149), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(151), + [anon_sym_break] = ACTIONS(153), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(155), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_on] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [14] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(676), + [sym_expr_return] = STATE(676), + [sym_expr_break] = STATE(676), + [sym_expr_continue] = STATE(676), + [sym_expr_throw] = STATE(676), + [sym_expr_query] = STATE(676), + [sym_expr_rust] = STATE(676), + [sym_query_from] = STATE(405), + [sym_expr_fun] = STATE(676), + [sym_expr_binary] = STATE(676), + [sym_expr_annot] = STATE(676), + [sym_expr_call] = STATE(676), + [sym_expr_tuple_access] = STATE(676), + [sym_expr_record_access] = STATE(676), + [sym_expr_array_access] = STATE(676), + [sym_expr_method_call] = STATE(676), + [sym_expr_paren] = STATE(676), + [sym_expr_constant] = STATE(676), + [sym_expr_name] = STATE(676), + [sym_expr_array] = STATE(676), + [sym_expr_tuple] = STATE(676), + [sym_expr_record] = STATE(676), + [sym_expr_do] = STATE(676), + [sym_expr_if] = STATE(676), + [sym_expr_match] = STATE(676), + [sym_expr_loop] = STATE(676), + [sym_expr_while] = STATE(676), + [sym_expr_for] = STATE(676), + [sym_expr_try] = STATE(676), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(157), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(159), + [anon_sym_break] = ACTIONS(161), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(163), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_desc] = ACTIONS(75), + [anon_sym_as] = ACTIONS(75), + [anon_sym_of] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [15] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(677), + [sym_expr_return] = STATE(677), + [sym_expr_break] = STATE(677), + [sym_expr_continue] = STATE(677), + [sym_expr_throw] = STATE(677), + [sym_expr_query] = STATE(677), + [sym_expr_rust] = STATE(677), + [sym_query_from] = STATE(405), + [sym_expr_fun] = STATE(677), + [sym_expr_binary] = STATE(677), + [sym_expr_annot] = STATE(677), + [sym_expr_call] = STATE(677), + [sym_expr_tuple_access] = STATE(677), + [sym_expr_record_access] = STATE(677), + [sym_expr_array_access] = STATE(677), + [sym_expr_method_call] = STATE(677), + [sym_expr_paren] = STATE(677), + [sym_expr_constant] = STATE(677), + [sym_expr_name] = STATE(677), + [sym_expr_array] = STATE(677), + [sym_expr_tuple] = STATE(677), + [sym_expr_record] = STATE(677), + [sym_expr_do] = STATE(677), + [sym_expr_if] = STATE(677), + [sym_expr_match] = STATE(677), + [sym_expr_loop] = STATE(677), + [sym_expr_while] = STATE(677), + [sym_expr_for] = STATE(677), + [sym_expr_try] = STATE(677), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(157), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(159), + [anon_sym_break] = ACTIONS(161), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(163), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_desc] = ACTIONS(115), + [anon_sym_as] = ACTIONS(115), + [anon_sym_of] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [16] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(721), + [sym_expr_return] = STATE(721), + [sym_expr_break] = STATE(721), + [sym_expr_continue] = STATE(721), + [sym_expr_throw] = STATE(721), + [sym_expr_query] = STATE(721), + [sym_expr_rust] = STATE(721), + [sym_query_from] = STATE(408), + [sym_expr_fun] = STATE(721), + [sym_expr_binary] = STATE(721), + [sym_expr_annot] = STATE(721), + [sym_expr_call] = STATE(721), + [sym_expr_tuple_access] = STATE(721), + [sym_expr_record_access] = STATE(721), + [sym_expr_array_access] = STATE(721), + [sym_expr_method_call] = STATE(721), + [sym_expr_paren] = STATE(721), + [sym_expr_constant] = STATE(721), + [sym_expr_name] = STATE(721), + [sym_expr_array] = STATE(721), + [sym_expr_tuple] = STATE(721), + [sym_expr_record] = STATE(721), + [sym_expr_do] = STATE(721), + [sym_expr_if] = STATE(721), + [sym_expr_match] = STATE(721), + [sym_expr_loop] = STATE(721), + [sym_expr_while] = STATE(721), + [sym_expr_for] = STATE(721), + [sym_expr_try] = STATE(721), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(165), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(167), + [anon_sym_break] = ACTIONS(169), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(171), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_as] = ACTIONS(115), + [anon_sym_of] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [17] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(719), + [sym_expr_return] = STATE(719), + [sym_expr_break] = STATE(719), + [sym_expr_continue] = STATE(719), + [sym_expr_throw] = STATE(719), + [sym_expr_query] = STATE(719), + [sym_expr_rust] = STATE(719), + [sym_query_from] = STATE(408), + [sym_expr_fun] = STATE(719), + [sym_expr_binary] = STATE(719), + [sym_expr_annot] = STATE(719), + [sym_expr_call] = STATE(719), + [sym_expr_tuple_access] = STATE(719), + [sym_expr_record_access] = STATE(719), + [sym_expr_array_access] = STATE(719), + [sym_expr_method_call] = STATE(719), + [sym_expr_paren] = STATE(719), + [sym_expr_constant] = STATE(719), + [sym_expr_name] = STATE(719), + [sym_expr_array] = STATE(719), + [sym_expr_tuple] = STATE(719), + [sym_expr_record] = STATE(719), + [sym_expr_do] = STATE(719), + [sym_expr_if] = STATE(719), + [sym_expr_match] = STATE(719), + [sym_expr_loop] = STATE(719), + [sym_expr_while] = STATE(719), + [sym_expr_for] = STATE(719), + [sym_expr_try] = STATE(719), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(165), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(167), + [anon_sym_break] = ACTIONS(169), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(171), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_as] = ACTIONS(75), + [anon_sym_of] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [18] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(695), + [sym_expr_return] = STATE(695), + [sym_expr_break] = STATE(695), + [sym_expr_continue] = STATE(695), + [sym_expr_throw] = STATE(695), + [sym_expr_query] = STATE(695), + [sym_expr_rust] = STATE(695), + [sym_query_from] = STATE(406), + [sym_expr_fun] = STATE(695), + [sym_expr_binary] = STATE(695), + [sym_expr_annot] = STATE(695), + [sym_expr_call] = STATE(695), + [sym_expr_tuple_access] = STATE(695), + [sym_expr_record_access] = STATE(695), + [sym_expr_array_access] = STATE(695), + [sym_expr_method_call] = STATE(695), + [sym_expr_paren] = STATE(695), + [sym_expr_constant] = STATE(695), + [sym_expr_name] = STATE(695), + [sym_expr_array] = STATE(695), + [sym_expr_tuple] = STATE(695), + [sym_expr_record] = STATE(695), + [sym_expr_do] = STATE(695), + [sym_expr_if] = STATE(695), + [sym_expr_match] = STATE(695), + [sym_expr_loop] = STATE(695), + [sym_expr_while] = STATE(695), + [sym_expr_for] = STATE(695), + [sym_expr_try] = STATE(695), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(173), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(175), + [anon_sym_break] = ACTIONS(177), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(179), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_desc] = ACTIONS(75), + [anon_sym_as] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [19] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(694), + [sym_expr_return] = STATE(694), + [sym_expr_break] = STATE(694), + [sym_expr_continue] = STATE(694), + [sym_expr_throw] = STATE(694), + [sym_expr_query] = STATE(694), + [sym_expr_rust] = STATE(694), + [sym_query_from] = STATE(406), + [sym_expr_fun] = STATE(694), + [sym_expr_binary] = STATE(694), + [sym_expr_annot] = STATE(694), + [sym_expr_call] = STATE(694), + [sym_expr_tuple_access] = STATE(694), + [sym_expr_record_access] = STATE(694), + [sym_expr_array_access] = STATE(694), + [sym_expr_method_call] = STATE(694), + [sym_expr_paren] = STATE(694), + [sym_expr_constant] = STATE(694), + [sym_expr_name] = STATE(694), + [sym_expr_array] = STATE(694), + [sym_expr_tuple] = STATE(694), + [sym_expr_record] = STATE(694), + [sym_expr_do] = STATE(694), + [sym_expr_if] = STATE(694), + [sym_expr_match] = STATE(694), + [sym_expr_loop] = STATE(694), + [sym_expr_while] = STATE(694), + [sym_expr_for] = STATE(694), + [sym_expr_try] = STATE(694), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(173), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(175), + [anon_sym_break] = ACTIONS(177), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(179), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_desc] = ACTIONS(115), + [anon_sym_as] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [20] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(757), + [sym_expr_return] = STATE(757), + [sym_expr_break] = STATE(757), + [sym_expr_continue] = STATE(757), + [sym_expr_throw] = STATE(757), + [sym_expr_query] = STATE(757), + [sym_expr_rust] = STATE(757), + [sym_query_from] = STATE(416), + [sym_expr_fun] = STATE(757), + [sym_expr_binary] = STATE(757), + [sym_expr_annot] = STATE(757), + [sym_expr_call] = STATE(757), + [sym_expr_tuple_access] = STATE(757), + [sym_expr_record_access] = STATE(757), + [sym_expr_array_access] = STATE(757), + [sym_expr_method_call] = STATE(757), + [sym_expr_paren] = STATE(757), + [sym_expr_constant] = STATE(757), + [sym_expr_name] = STATE(757), + [sym_expr_array] = STATE(757), + [sym_expr_tuple] = STATE(757), + [sym_expr_record] = STATE(757), + [sym_expr_do] = STATE(757), + [sym_expr_if] = STATE(757), + [sym_expr_match] = STATE(757), + [sym_expr_loop] = STATE(757), + [sym_expr_while] = STATE(757), + [sym_expr_for] = STATE(757), + [sym_expr_try] = STATE(757), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(181), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(183), + [anon_sym_break] = ACTIONS(185), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(187), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_as] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [21] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(736), + [sym_expr_return] = STATE(736), + [sym_expr_break] = STATE(736), + [sym_expr_continue] = STATE(736), + [sym_expr_throw] = STATE(736), + [sym_expr_query] = STATE(736), + [sym_expr_rust] = STATE(736), + [sym_query_from] = STATE(416), + [sym_expr_fun] = STATE(736), + [sym_expr_binary] = STATE(736), + [sym_expr_annot] = STATE(736), + [sym_expr_call] = STATE(736), + [sym_expr_tuple_access] = STATE(736), + [sym_expr_record_access] = STATE(736), + [sym_expr_array_access] = STATE(736), + [sym_expr_method_call] = STATE(736), + [sym_expr_paren] = STATE(736), + [sym_expr_constant] = STATE(736), + [sym_expr_name] = STATE(736), + [sym_expr_array] = STATE(736), + [sym_expr_tuple] = STATE(736), + [sym_expr_record] = STATE(736), + [sym_expr_do] = STATE(736), + [sym_expr_if] = STATE(736), + [sym_expr_match] = STATE(736), + [sym_expr_loop] = STATE(736), + [sym_expr_while] = STATE(736), + [sym_expr_for] = STATE(736), + [sym_expr_try] = STATE(736), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(181), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(183), + [anon_sym_break] = ACTIONS(185), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(187), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_as] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [22] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(745), + [sym_expr_return] = STATE(745), + [sym_expr_break] = STATE(745), + [sym_expr_continue] = STATE(745), + [sym_expr_throw] = STATE(745), + [sym_expr_query] = STATE(745), + [sym_expr_rust] = STATE(745), + [sym_query_from] = STATE(417), + [sym_expr_fun] = STATE(745), + [sym_expr_binary] = STATE(745), + [sym_expr_annot] = STATE(745), + [sym_expr_call] = STATE(745), + [sym_expr_tuple_access] = STATE(745), + [sym_expr_record_access] = STATE(745), + [sym_expr_array_access] = STATE(745), + [sym_expr_method_call] = STATE(745), + [sym_expr_paren] = STATE(745), + [sym_expr_constant] = STATE(745), + [sym_expr_name] = STATE(745), + [sym_expr_array] = STATE(745), + [sym_expr_tuple] = STATE(745), + [sym_expr_record] = STATE(745), + [sym_expr_do] = STATE(745), + [sym_expr_if] = STATE(745), + [sym_expr_match] = STATE(745), + [sym_expr_loop] = STATE(745), + [sym_expr_while] = STATE(745), + [sym_expr_for] = STATE(745), + [sym_expr_try] = STATE(745), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(189), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(191), + [anon_sym_break] = ACTIONS(193), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(195), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_desc] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [23] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(742), + [sym_expr_return] = STATE(742), + [sym_expr_break] = STATE(742), + [sym_expr_continue] = STATE(742), + [sym_expr_throw] = STATE(742), + [sym_expr_query] = STATE(742), + [sym_expr_rust] = STATE(742), + [sym_query_from] = STATE(417), + [sym_expr_fun] = STATE(742), + [sym_expr_binary] = STATE(742), + [sym_expr_annot] = STATE(742), + [sym_expr_call] = STATE(742), + [sym_expr_tuple_access] = STATE(742), + [sym_expr_record_access] = STATE(742), + [sym_expr_array_access] = STATE(742), + [sym_expr_method_call] = STATE(742), + [sym_expr_paren] = STATE(742), + [sym_expr_constant] = STATE(742), + [sym_expr_name] = STATE(742), + [sym_expr_array] = STATE(742), + [sym_expr_tuple] = STATE(742), + [sym_expr_record] = STATE(742), + [sym_expr_do] = STATE(742), + [sym_expr_if] = STATE(742), + [sym_expr_match] = STATE(742), + [sym_expr_loop] = STATE(742), + [sym_expr_while] = STATE(742), + [sym_expr_for] = STATE(742), + [sym_expr_try] = STATE(742), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(189), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(191), + [anon_sym_break] = ACTIONS(193), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(195), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_desc] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [24] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(777), + [sym_expr_return] = STATE(777), + [sym_expr_break] = STATE(777), + [sym_expr_continue] = STATE(777), + [sym_expr_throw] = STATE(777), + [sym_expr_query] = STATE(777), + [sym_expr_rust] = STATE(777), + [sym_query_from] = STATE(422), + [sym_expr_fun] = STATE(777), + [sym_expr_binary] = STATE(777), + [sym_expr_annot] = STATE(777), + [sym_expr_call] = STATE(777), + [sym_expr_tuple_access] = STATE(777), + [sym_expr_record_access] = STATE(777), + [sym_expr_array_access] = STATE(777), + [sym_expr_method_call] = STATE(777), + [sym_expr_paren] = STATE(777), + [sym_expr_constant] = STATE(777), + [sym_expr_name] = STATE(777), + [sym_expr_array] = STATE(777), + [sym_expr_tuple] = STATE(777), + [sym_expr_record] = STATE(777), + [sym_expr_do] = STATE(777), + [sym_expr_if] = STATE(777), + [sym_expr_match] = STATE(777), + [sym_expr_loop] = STATE(777), + [sym_expr_while] = STATE(777), + [sym_expr_for] = STATE(777), + [sym_expr_try] = STATE(777), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(197), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(199), + [anon_sym_break] = ACTIONS(201), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(203), + [anon_sym_from] = ACTIONS(115), + [anon_sym_where] = ACTIONS(115), + [anon_sym_join] = ACTIONS(115), + [anon_sym_union] = ACTIONS(115), + [anon_sym_group] = ACTIONS(115), + [anon_sym_over] = ACTIONS(115), + [anon_sym_roll] = ACTIONS(115), + [anon_sym_compute] = ACTIONS(115), + [anon_sym_select] = ACTIONS(115), + [anon_sym_with] = ACTIONS(115), + [anon_sym_into] = ACTIONS(115), + [anon_sym_order] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [25] = { + [sym__constant] = STATE(525), + [sym_constant_string] = STATE(525), + [sym_constant_char] = STATE(525), + [sym_constant_bool] = STATE(525), + [sym_constant_unit] = STATE(525), + [sym__expr] = STATE(762), + [sym_expr_return] = STATE(762), + [sym_expr_break] = STATE(762), + [sym_expr_continue] = STATE(762), + [sym_expr_throw] = STATE(762), + [sym_expr_query] = STATE(762), + [sym_expr_rust] = STATE(762), + [sym_query_from] = STATE(422), + [sym_expr_fun] = STATE(762), + [sym_expr_binary] = STATE(762), + [sym_expr_annot] = STATE(762), + [sym_expr_call] = STATE(762), + [sym_expr_tuple_access] = STATE(762), + [sym_expr_record_access] = STATE(762), + [sym_expr_array_access] = STATE(762), + [sym_expr_method_call] = STATE(762), + [sym_expr_paren] = STATE(762), + [sym_expr_constant] = STATE(762), + [sym_expr_name] = STATE(762), + [sym_expr_array] = STATE(762), + [sym_expr_tuple] = STATE(762), + [sym_expr_record] = STATE(762), + [sym_expr_do] = STATE(762), + [sym_expr_if] = STATE(762), + [sym_expr_match] = STATE(762), + [sym_expr_loop] = STATE(762), + [sym_expr_while] = STATE(762), + [sym_expr_for] = STATE(762), + [sym_expr_try] = STATE(762), + [sym_name] = ACTIONS(69), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(77), + [sym_constant_float] = ACTIONS(79), + [sym_string_quote] = ACTIONS(81), + [anon_sym_SQUOTE] = ACTIONS(83), + [anon_sym_true] = ACTIONS(85), + [anon_sym_false] = ACTIONS(85), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_rust] = ACTIONS(87), + [anon_sym_fun] = ACTIONS(197), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(199), + [anon_sym_break] = ACTIONS(201), + [anon_sym_continue] = ACTIONS(95), + [anon_sym_throw] = ACTIONS(203), + [anon_sym_from] = ACTIONS(75), + [anon_sym_where] = ACTIONS(75), + [anon_sym_join] = ACTIONS(75), + [anon_sym_union] = ACTIONS(75), + [anon_sym_group] = ACTIONS(75), + [anon_sym_over] = ACTIONS(75), + [anon_sym_roll] = ACTIONS(75), + [anon_sym_compute] = ACTIONS(75), + [anon_sym_select] = ACTIONS(75), + [anon_sym_with] = ACTIONS(75), + [anon_sym_into] = ACTIONS(75), + [anon_sym_order] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(99), + [anon_sym_if] = ACTIONS(101), + [anon_sym_match] = ACTIONS(103), + [anon_sym_loop] = ACTIONS(105), + [anon_sym_while] = ACTIONS(107), + [anon_sym_for] = ACTIONS(109), + [anon_sym_try] = ACTIONS(111), + }, + [26] = { + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [sym__expr] = STATE(947), + [sym_expr_return] = STATE(947), + [sym_expr_break] = STATE(947), + [sym_expr_continue] = STATE(947), + [sym_expr_throw] = STATE(947), + [sym_expr_query] = STATE(947), + [sym_expr_rust] = STATE(947), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(947), + [sym_expr_binary] = STATE(947), + [sym_expr_annot] = STATE(947), + [sym_expr_call] = STATE(947), + [sym_expr_tuple_access] = STATE(947), + [sym_expr_record_access] = STATE(947), + [sym_expr_array_access] = STATE(947), + [sym_expr_method_call] = STATE(947), + [sym_expr_paren] = STATE(947), + [sym_expr_constant] = STATE(947), + [sym_expr_name] = STATE(947), + [sym_expr_array] = STATE(947), + [sym_expr_tuple] = STATE(947), + [sym_expr_record] = STATE(947), + [sym_expr_do] = STATE(947), + [sym_expr_if] = STATE(947), + [sym_expr_match] = STATE(947), + [sym_expr_loop] = STATE(947), + [sym_expr_while] = STATE(947), + [sym_expr_for] = STATE(947), + [sym_expr_try] = STATE(947), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(73), + [anon_sym_COMMA] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_RPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_RBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_SEMI] = ACTIONS(73), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_on] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [27] = { + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [sym__expr] = STATE(948), + [sym_expr_return] = STATE(948), + [sym_expr_break] = STATE(948), + [sym_expr_continue] = STATE(948), + [sym_expr_throw] = STATE(948), + [sym_expr_query] = STATE(948), + [sym_expr_rust] = STATE(948), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(948), + [sym_expr_binary] = STATE(948), + [sym_expr_annot] = STATE(948), + [sym_expr_call] = STATE(948), + [sym_expr_tuple_access] = STATE(948), + [sym_expr_record_access] = STATE(948), + [sym_expr_array_access] = STATE(948), + [sym_expr_method_call] = STATE(948), + [sym_expr_paren] = STATE(948), + [sym_expr_constant] = STATE(948), + [sym_expr_name] = STATE(948), + [sym_expr_array] = STATE(948), + [sym_expr_tuple] = STATE(948), + [sym_expr_record] = STATE(948), + [sym_expr_do] = STATE(948), + [sym_expr_if] = STATE(948), + [sym_expr_match] = STATE(948), + [sym_expr_loop] = STATE(948), + [sym_expr_while] = STATE(948), + [sym_expr_for] = STATE(948), + [sym_expr_try] = STATE(948), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(113), + [anon_sym_COMMA] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_RPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_RBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_SEMI] = ACTIONS(113), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_on] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [28] = { + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [sym__expr] = STATE(998), + [sym_expr_return] = STATE(998), + [sym_expr_break] = STATE(998), + [sym_expr_continue] = STATE(998), + [sym_expr_throw] = STATE(998), + [sym_expr_query] = STATE(998), + [sym_expr_rust] = STATE(998), + [sym_query_from] = STATE(414), + [sym_expr_fun] = STATE(998), + [sym_expr_binary] = STATE(998), + [sym_expr_annot] = STATE(998), + [sym_expr_call] = STATE(998), + [sym_expr_tuple_access] = STATE(998), + [sym_expr_record_access] = STATE(998), + [sym_expr_array_access] = STATE(998), + [sym_expr_method_call] = STATE(998), + [sym_expr_paren] = STATE(998), + [sym_expr_constant] = STATE(998), + [sym_expr_name] = STATE(998), + [sym_expr_array] = STATE(998), + [sym_expr_tuple] = STATE(998), + [sym_expr_record] = STATE(998), + [sym_expr_do] = STATE(998), + [sym_expr_if] = STATE(998), + [sym_expr_match] = STATE(998), + [sym_expr_loop] = STATE(998), + [sym_expr_while] = STATE(998), + [sym_expr_for] = STATE(998), + [sym_expr_try] = STATE(998), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(205), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(207), + [anon_sym_break] = ACTIONS(209), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(211), + [anon_sym_from] = ACTIONS(213), + [anon_sym_as] = ACTIONS(75), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [29] = { + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [sym__expr] = STATE(997), + [sym_expr_return] = STATE(997), + [sym_expr_break] = STATE(997), + [sym_expr_continue] = STATE(997), + [sym_expr_throw] = STATE(997), + [sym_expr_query] = STATE(997), + [sym_expr_rust] = STATE(997), + [sym_query_from] = STATE(414), + [sym_expr_fun] = STATE(997), + [sym_expr_binary] = STATE(997), + [sym_expr_annot] = STATE(997), + [sym_expr_call] = STATE(997), + [sym_expr_tuple_access] = STATE(997), + [sym_expr_record_access] = STATE(997), + [sym_expr_array_access] = STATE(997), + [sym_expr_method_call] = STATE(997), + [sym_expr_paren] = STATE(997), + [sym_expr_constant] = STATE(997), + [sym_expr_name] = STATE(997), + [sym_expr_array] = STATE(997), + [sym_expr_tuple] = STATE(997), + [sym_expr_record] = STATE(997), + [sym_expr_do] = STATE(997), + [sym_expr_if] = STATE(997), + [sym_expr_match] = STATE(997), + [sym_expr_loop] = STATE(997), + [sym_expr_while] = STATE(997), + [sym_expr_for] = STATE(997), + [sym_expr_try] = STATE(997), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(205), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(207), + [anon_sym_break] = ACTIONS(209), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(211), + [anon_sym_from] = ACTIONS(213), + [anon_sym_as] = ACTIONS(115), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [30] = { + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [sym__expr] = STATE(1042), + [sym_expr_return] = STATE(1042), + [sym_expr_break] = STATE(1042), + [sym_expr_continue] = STATE(1042), + [sym_expr_throw] = STATE(1042), + [sym_expr_query] = STATE(1042), + [sym_expr_rust] = STATE(1042), + [sym_query_from] = STATE(421), + [sym_expr_fun] = STATE(1042), + [sym_expr_binary] = STATE(1042), + [sym_expr_annot] = STATE(1042), + [sym_expr_call] = STATE(1042), + [sym_expr_tuple_access] = STATE(1042), + [sym_expr_record_access] = STATE(1042), + [sym_expr_array_access] = STATE(1042), + [sym_expr_method_call] = STATE(1042), + [sym_expr_paren] = STATE(1042), + [sym_expr_constant] = STATE(1042), + [sym_expr_name] = STATE(1042), + [sym_expr_array] = STATE(1042), + [sym_expr_tuple] = STATE(1042), + [sym_expr_record] = STATE(1042), + [sym_expr_do] = STATE(1042), + [sym_expr_if] = STATE(1042), + [sym_expr_match] = STATE(1042), + [sym_expr_loop] = STATE(1042), + [sym_expr_while] = STATE(1042), + [sym_expr_for] = STATE(1042), + [sym_expr_try] = STATE(1042), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(73), + [anon_sym_COLON] = ACTIONS(75), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(73), + [anon_sym_LBRACK] = ACTIONS(73), + [anon_sym_EQ] = ACTIONS(75), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(215), + [anon_sym_or] = ACTIONS(75), + [anon_sym_DOT] = ACTIONS(75), + [anon_sym_return] = ACTIONS(217), + [anon_sym_break] = ACTIONS(219), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(221), + [anon_sym_from] = ACTIONS(223), + [anon_sym_PLUS_EQ] = ACTIONS(73), + [anon_sym_DASH_EQ] = ACTIONS(73), + [anon_sym_STAR_EQ] = ACTIONS(73), + [anon_sym_SLASH_EQ] = ACTIONS(73), + [anon_sym_DOT_DOT] = ACTIONS(75), + [anon_sym_DOT_DOT_EQ] = ACTIONS(73), + [anon_sym_and] = ACTIONS(75), + [anon_sym_EQ_EQ] = ACTIONS(73), + [anon_sym_BANG_EQ] = ACTIONS(73), + [anon_sym_LT] = ACTIONS(75), + [anon_sym_GT] = ACTIONS(75), + [anon_sym_LT_EQ] = ACTIONS(73), + [anon_sym_GT_EQ] = ACTIONS(73), + [anon_sym_PLUS] = ACTIONS(75), + [anon_sym_DASH] = ACTIONS(75), + [anon_sym_STAR] = ACTIONS(75), + [anon_sym_SLASH] = ACTIONS(75), + [anon_sym_COLON_COLON] = ACTIONS(73), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [31] = { + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [sym__expr] = STATE(1040), + [sym_expr_return] = STATE(1040), + [sym_expr_break] = STATE(1040), + [sym_expr_continue] = STATE(1040), + [sym_expr_throw] = STATE(1040), + [sym_expr_query] = STATE(1040), + [sym_expr_rust] = STATE(1040), + [sym_query_from] = STATE(421), + [sym_expr_fun] = STATE(1040), + [sym_expr_binary] = STATE(1040), + [sym_expr_annot] = STATE(1040), + [sym_expr_call] = STATE(1040), + [sym_expr_tuple_access] = STATE(1040), + [sym_expr_record_access] = STATE(1040), + [sym_expr_array_access] = STATE(1040), + [sym_expr_method_call] = STATE(1040), + [sym_expr_paren] = STATE(1040), + [sym_expr_constant] = STATE(1040), + [sym_expr_name] = STATE(1040), + [sym_expr_array] = STATE(1040), + [sym_expr_tuple] = STATE(1040), + [sym_expr_record] = STATE(1040), + [sym_expr_do] = STATE(1040), + [sym_expr_if] = STATE(1040), + [sym_expr_match] = STATE(1040), + [sym_expr_loop] = STATE(1040), + [sym_expr_while] = STATE(1040), + [sym_expr_for] = STATE(1040), + [sym_expr_try] = STATE(1040), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(113), + [anon_sym_COLON] = ACTIONS(115), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(113), + [anon_sym_LBRACK] = ACTIONS(113), + [anon_sym_EQ] = ACTIONS(115), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(215), + [anon_sym_or] = ACTIONS(115), + [anon_sym_DOT] = ACTIONS(115), + [anon_sym_return] = ACTIONS(217), + [anon_sym_break] = ACTIONS(219), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(221), + [anon_sym_from] = ACTIONS(223), + [anon_sym_PLUS_EQ] = ACTIONS(113), + [anon_sym_DASH_EQ] = ACTIONS(113), + [anon_sym_STAR_EQ] = ACTIONS(113), + [anon_sym_SLASH_EQ] = ACTIONS(113), + [anon_sym_DOT_DOT] = ACTIONS(115), + [anon_sym_DOT_DOT_EQ] = ACTIONS(113), + [anon_sym_and] = ACTIONS(115), + [anon_sym_EQ_EQ] = ACTIONS(113), + [anon_sym_BANG_EQ] = ACTIONS(113), + [anon_sym_LT] = ACTIONS(115), + [anon_sym_GT] = ACTIONS(115), + [anon_sym_LT_EQ] = ACTIONS(113), + [anon_sym_GT_EQ] = ACTIONS(113), + [anon_sym_PLUS] = ACTIONS(115), + [anon_sym_DASH] = ACTIONS(115), + [anon_sym_STAR] = ACTIONS(115), + [anon_sym_SLASH] = ACTIONS(115), + [anon_sym_COLON_COLON] = ACTIONS(113), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [32] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(32), + [sym__stmt] = STATE(32), + [sym_stmt_def] = STATE(32), + [sym_stmt_type] = STATE(32), + [sym_stmt_enum] = STATE(32), + [sym_stmt_val] = STATE(32), + [sym_stmt_var] = STATE(32), + [sym_stmt_expr] = STATE(32), + [sym_stmt_code] = STATE(32), + [sym__stmt_noop] = STATE(32), + [sym__expr] = STATE(1025), + [sym_expr_return] = STATE(1025), + [sym_expr_break] = STATE(1025), + [sym_expr_continue] = STATE(1025), + [sym_expr_throw] = STATE(1025), + [sym_expr_query] = STATE(1025), + [sym_expr_rust] = STATE(1025), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1025), + [sym_expr_binary] = STATE(1025), + [sym_expr_annot] = STATE(1025), + [sym_expr_call] = STATE(1025), + [sym_expr_tuple_access] = STATE(1025), + [sym_expr_record_access] = STATE(1025), + [sym_expr_array_access] = STATE(1025), + [sym_expr_method_call] = STATE(1025), + [sym_expr_paren] = STATE(1025), + [sym_expr_constant] = STATE(1025), + [sym_expr_name] = STATE(1025), + [sym_expr_array] = STATE(1025), + [sym_expr_tuple] = STATE(1025), + [sym_expr_record] = STATE(1025), + [sym_expr_do] = STATE(1025), + [sym_expr_if] = STATE(1025), + [sym_expr_match] = STATE(1025), + [sym_expr_loop] = STATE(1025), + [sym_expr_while] = STATE(1025), + [sym_expr_for] = STATE(1025), + [sym_expr_try] = STATE(1025), + [ts_builtin_sym_end] = ACTIONS(225), + [sym_name] = ACTIONS(227), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(230), + [anon_sym_LBRACE] = ACTIONS(233), + [anon_sym_RBRACE] = ACTIONS(225), + [sym_constant_int] = ACTIONS(236), + [sym_constant_float] = ACTIONS(239), + [sym_string_quote] = ACTIONS(242), + [anon_sym_SQUOTE] = ACTIONS(245), + [anon_sym_true] = ACTIONS(248), + [anon_sym_false] = ACTIONS(248), + [anon_sym_LPAREN] = ACTIONS(251), + [anon_sym_def] = ACTIONS(254), + [anon_sym_LBRACK] = ACTIONS(257), + [anon_sym_SEMI] = ACTIONS(260), + [anon_sym_type] = ACTIONS(263), + [anon_sym_enum] = ACTIONS(266), + [anon_sym_val] = ACTIONS(269), + [anon_sym_var] = ACTIONS(272), + [anon_sym_DASH_DASH_DASH] = ACTIONS(275), + [anon_sym_rust] = ACTIONS(278), + [anon_sym_fun] = ACTIONS(281), + [anon_sym_return] = ACTIONS(284), + [anon_sym_break] = ACTIONS(287), + [anon_sym_continue] = ACTIONS(290), + [anon_sym_throw] = ACTIONS(293), + [anon_sym_from] = ACTIONS(296), + [anon_sym_do] = ACTIONS(299), + [anon_sym_if] = ACTIONS(302), + [anon_sym_match] = ACTIONS(305), + [anon_sym_loop] = ACTIONS(308), + [anon_sym_while] = ACTIONS(311), + [anon_sym_for] = ACTIONS(314), + [anon_sym_try] = ACTIONS(317), + }, + [33] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(32), + [sym__stmt] = STATE(32), + [sym_stmt_def] = STATE(32), + [sym_stmt_type] = STATE(32), + [sym_stmt_enum] = STATE(32), + [sym_stmt_val] = STATE(32), + [sym_stmt_var] = STATE(32), + [sym_stmt_expr] = STATE(32), + [sym_stmt_code] = STATE(32), + [sym__stmt_noop] = STATE(32), + [sym__expr] = STATE(999), + [sym_expr_return] = STATE(999), + [sym_expr_break] = STATE(999), + [sym_expr_continue] = STATE(999), + [sym_expr_throw] = STATE(999), + [sym_expr_query] = STATE(999), + [sym_expr_rust] = STATE(999), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(999), + [sym_expr_binary] = STATE(999), + [sym_expr_annot] = STATE(999), + [sym_expr_call] = STATE(999), + [sym_expr_tuple_access] = STATE(999), + [sym_expr_record_access] = STATE(999), + [sym_expr_array_access] = STATE(999), + [sym_expr_method_call] = STATE(999), + [sym_expr_paren] = STATE(999), + [sym_expr_constant] = STATE(999), + [sym_expr_name] = STATE(999), + [sym_expr_array] = STATE(999), + [sym_expr_tuple] = STATE(999), + [sym_expr_record] = STATE(999), + [sym_expr_do] = STATE(999), + [sym_expr_if] = STATE(999), + [sym_expr_match] = STATE(999), + [sym_expr_loop] = STATE(999), + [sym_expr_while] = STATE(999), + [sym_expr_for] = STATE(999), + [sym_expr_try] = STATE(999), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(320), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(322), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [34] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(38), + [sym__stmt] = STATE(38), + [sym_stmt_def] = STATE(38), + [sym_stmt_type] = STATE(38), + [sym_stmt_enum] = STATE(38), + [sym_stmt_val] = STATE(38), + [sym_stmt_var] = STATE(38), + [sym_stmt_expr] = STATE(38), + [sym_stmt_code] = STATE(38), + [sym__stmt_noop] = STATE(38), + [sym__expr] = STATE(1016), + [sym_expr_return] = STATE(1016), + [sym_expr_break] = STATE(1016), + [sym_expr_continue] = STATE(1016), + [sym_expr_throw] = STATE(1016), + [sym_expr_query] = STATE(1016), + [sym_expr_rust] = STATE(1016), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1016), + [sym_expr_binary] = STATE(1016), + [sym_expr_annot] = STATE(1016), + [sym_expr_call] = STATE(1016), + [sym_expr_tuple_access] = STATE(1016), + [sym_expr_record_access] = STATE(1016), + [sym_expr_array_access] = STATE(1016), + [sym_expr_method_call] = STATE(1016), + [sym_expr_paren] = STATE(1016), + [sym_expr_constant] = STATE(1016), + [sym_expr_name] = STATE(1016), + [sym_expr_array] = STATE(1016), + [sym_expr_tuple] = STATE(1016), + [sym_expr_record] = STATE(1016), + [sym_expr_do] = STATE(1016), + [sym_expr_if] = STATE(1016), + [sym_expr_match] = STATE(1016), + [sym_expr_loop] = STATE(1016), + [sym_expr_while] = STATE(1016), + [sym_expr_for] = STATE(1016), + [sym_expr_try] = STATE(1016), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(324), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(326), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [35] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(32), + [sym__stmt] = STATE(32), + [sym_stmt_def] = STATE(32), + [sym_stmt_type] = STATE(32), + [sym_stmt_enum] = STATE(32), + [sym_stmt_val] = STATE(32), + [sym_stmt_var] = STATE(32), + [sym_stmt_expr] = STATE(32), + [sym_stmt_code] = STATE(32), + [sym__stmt_noop] = STATE(32), + [sym__expr] = STATE(1013), + [sym_expr_return] = STATE(1013), + [sym_expr_break] = STATE(1013), + [sym_expr_continue] = STATE(1013), + [sym_expr_throw] = STATE(1013), + [sym_expr_query] = STATE(1013), + [sym_expr_rust] = STATE(1013), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1013), + [sym_expr_binary] = STATE(1013), + [sym_expr_annot] = STATE(1013), + [sym_expr_call] = STATE(1013), + [sym_expr_tuple_access] = STATE(1013), + [sym_expr_record_access] = STATE(1013), + [sym_expr_array_access] = STATE(1013), + [sym_expr_method_call] = STATE(1013), + [sym_expr_paren] = STATE(1013), + [sym_expr_constant] = STATE(1013), + [sym_expr_name] = STATE(1013), + [sym_expr_array] = STATE(1013), + [sym_expr_tuple] = STATE(1013), + [sym_expr_record] = STATE(1013), + [sym_expr_do] = STATE(1013), + [sym_expr_if] = STATE(1013), + [sym_expr_match] = STATE(1013), + [sym_expr_loop] = STATE(1013), + [sym_expr_while] = STATE(1013), + [sym_expr_for] = STATE(1013), + [sym_expr_try] = STATE(1013), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(328), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(322), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [36] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(35), + [sym__stmt] = STATE(35), + [sym_stmt_def] = STATE(35), + [sym_stmt_type] = STATE(35), + [sym_stmt_enum] = STATE(35), + [sym_stmt_val] = STATE(35), + [sym_stmt_var] = STATE(35), + [sym_stmt_expr] = STATE(35), + [sym_stmt_code] = STATE(35), + [sym__stmt_noop] = STATE(35), + [sym__expr] = STATE(1017), + [sym_expr_return] = STATE(1017), + [sym_expr_break] = STATE(1017), + [sym_expr_continue] = STATE(1017), + [sym_expr_throw] = STATE(1017), + [sym_expr_query] = STATE(1017), + [sym_expr_rust] = STATE(1017), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1017), + [sym_expr_binary] = STATE(1017), + [sym_expr_annot] = STATE(1017), + [sym_expr_call] = STATE(1017), + [sym_expr_tuple_access] = STATE(1017), + [sym_expr_record_access] = STATE(1017), + [sym_expr_array_access] = STATE(1017), + [sym_expr_method_call] = STATE(1017), + [sym_expr_paren] = STATE(1017), + [sym_expr_constant] = STATE(1017), + [sym_expr_name] = STATE(1017), + [sym_expr_array] = STATE(1017), + [sym_expr_tuple] = STATE(1017), + [sym_expr_record] = STATE(1017), + [sym_expr_do] = STATE(1017), + [sym_expr_if] = STATE(1017), + [sym_expr_match] = STATE(1017), + [sym_expr_loop] = STATE(1017), + [sym_expr_while] = STATE(1017), + [sym_expr_for] = STATE(1017), + [sym_expr_try] = STATE(1017), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(330), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(332), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [37] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(33), + [sym__stmt] = STATE(33), + [sym_stmt_def] = STATE(33), + [sym_stmt_type] = STATE(33), + [sym_stmt_enum] = STATE(33), + [sym_stmt_val] = STATE(33), + [sym_stmt_var] = STATE(33), + [sym_stmt_expr] = STATE(33), + [sym_stmt_code] = STATE(33), + [sym__stmt_noop] = STATE(33), + [sym__expr] = STATE(989), + [sym_expr_return] = STATE(989), + [sym_expr_break] = STATE(989), + [sym_expr_continue] = STATE(989), + [sym_expr_throw] = STATE(989), + [sym_expr_query] = STATE(989), + [sym_expr_rust] = STATE(989), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(989), + [sym_expr_binary] = STATE(989), + [sym_expr_annot] = STATE(989), + [sym_expr_call] = STATE(989), + [sym_expr_tuple_access] = STATE(989), + [sym_expr_record_access] = STATE(989), + [sym_expr_array_access] = STATE(989), + [sym_expr_method_call] = STATE(989), + [sym_expr_paren] = STATE(989), + [sym_expr_constant] = STATE(989), + [sym_expr_name] = STATE(989), + [sym_expr_array] = STATE(989), + [sym_expr_tuple] = STATE(989), + [sym_expr_record] = STATE(989), + [sym_expr_do] = STATE(989), + [sym_expr_if] = STATE(989), + [sym_expr_match] = STATE(989), + [sym_expr_loop] = STATE(989), + [sym_expr_while] = STATE(989), + [sym_expr_for] = STATE(989), + [sym_expr_try] = STATE(989), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(334), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(336), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [38] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(32), + [sym__stmt] = STATE(32), + [sym_stmt_def] = STATE(32), + [sym_stmt_type] = STATE(32), + [sym_stmt_enum] = STATE(32), + [sym_stmt_val] = STATE(32), + [sym_stmt_var] = STATE(32), + [sym_stmt_expr] = STATE(32), + [sym_stmt_code] = STATE(32), + [sym__stmt_noop] = STATE(32), + [sym__expr] = STATE(1008), + [sym_expr_return] = STATE(1008), + [sym_expr_break] = STATE(1008), + [sym_expr_continue] = STATE(1008), + [sym_expr_throw] = STATE(1008), + [sym_expr_query] = STATE(1008), + [sym_expr_rust] = STATE(1008), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1008), + [sym_expr_binary] = STATE(1008), + [sym_expr_annot] = STATE(1008), + [sym_expr_call] = STATE(1008), + [sym_expr_tuple_access] = STATE(1008), + [sym_expr_record_access] = STATE(1008), + [sym_expr_array_access] = STATE(1008), + [sym_expr_method_call] = STATE(1008), + [sym_expr_paren] = STATE(1008), + [sym_expr_constant] = STATE(1008), + [sym_expr_name] = STATE(1008), + [sym_expr_array] = STATE(1008), + [sym_expr_tuple] = STATE(1008), + [sym_expr_record] = STATE(1008), + [sym_expr_do] = STATE(1008), + [sym_expr_if] = STATE(1008), + [sym_expr_match] = STATE(1008), + [sym_expr_loop] = STATE(1008), + [sym_expr_while] = STATE(1008), + [sym_expr_for] = STATE(1008), + [sym_expr_try] = STATE(1008), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(338), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(322), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [39] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(32), + [sym__stmt] = STATE(32), + [sym_stmt_def] = STATE(32), + [sym_stmt_type] = STATE(32), + [sym_stmt_enum] = STATE(32), + [sym_stmt_val] = STATE(32), + [sym_stmt_var] = STATE(32), + [sym_stmt_expr] = STATE(32), + [sym_stmt_code] = STATE(32), + [sym__stmt_noop] = STATE(32), + [sym__expr] = STATE(1025), + [sym_expr_return] = STATE(1025), + [sym_expr_break] = STATE(1025), + [sym_expr_continue] = STATE(1025), + [sym_expr_throw] = STATE(1025), + [sym_expr_query] = STATE(1025), + [sym_expr_rust] = STATE(1025), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1025), + [sym_expr_binary] = STATE(1025), + [sym_expr_annot] = STATE(1025), + [sym_expr_call] = STATE(1025), + [sym_expr_tuple_access] = STATE(1025), + [sym_expr_record_access] = STATE(1025), + [sym_expr_array_access] = STATE(1025), + [sym_expr_method_call] = STATE(1025), + [sym_expr_paren] = STATE(1025), + [sym_expr_constant] = STATE(1025), + [sym_expr_name] = STATE(1025), + [sym_expr_array] = STATE(1025), + [sym_expr_tuple] = STATE(1025), + [sym_expr_record] = STATE(1025), + [sym_expr_do] = STATE(1025), + [sym_expr_if] = STATE(1025), + [sym_expr_match] = STATE(1025), + [sym_expr_loop] = STATE(1025), + [sym_expr_while] = STATE(1025), + [sym_expr_for] = STATE(1025), + [sym_expr_try] = STATE(1025), + [ts_builtin_sym_end] = ACTIONS(340), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(322), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [40] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(32), + [sym__stmt] = STATE(32), + [sym_stmt_def] = STATE(32), + [sym_stmt_type] = STATE(32), + [sym_stmt_enum] = STATE(32), + [sym_stmt_val] = STATE(32), + [sym_stmt_var] = STATE(32), + [sym_stmt_expr] = STATE(32), + [sym_stmt_code] = STATE(32), + [sym__stmt_noop] = STATE(32), + [sym__expr] = STATE(1014), + [sym_expr_return] = STATE(1014), + [sym_expr_break] = STATE(1014), + [sym_expr_continue] = STATE(1014), + [sym_expr_throw] = STATE(1014), + [sym_expr_query] = STATE(1014), + [sym_expr_rust] = STATE(1014), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1014), + [sym_expr_binary] = STATE(1014), + [sym_expr_annot] = STATE(1014), + [sym_expr_call] = STATE(1014), + [sym_expr_tuple_access] = STATE(1014), + [sym_expr_record_access] = STATE(1014), + [sym_expr_array_access] = STATE(1014), + [sym_expr_method_call] = STATE(1014), + [sym_expr_paren] = STATE(1014), + [sym_expr_constant] = STATE(1014), + [sym_expr_name] = STATE(1014), + [sym_expr_array] = STATE(1014), + [sym_expr_tuple] = STATE(1014), + [sym_expr_record] = STATE(1014), + [sym_expr_do] = STATE(1014), + [sym_expr_if] = STATE(1014), + [sym_expr_match] = STATE(1014), + [sym_expr_loop] = STATE(1014), + [sym_expr_while] = STATE(1014), + [sym_expr_for] = STATE(1014), + [sym_expr_try] = STATE(1014), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(342), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(322), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [41] = { + [sym_meta] = STATE(1336), + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [aux_sym__stmts] = STATE(40), + [sym__stmt] = STATE(40), + [sym_stmt_def] = STATE(40), + [sym_stmt_type] = STATE(40), + [sym_stmt_enum] = STATE(40), + [sym_stmt_val] = STATE(40), + [sym_stmt_var] = STATE(40), + [sym_stmt_expr] = STATE(40), + [sym_stmt_code] = STATE(40), + [sym__stmt_noop] = STATE(40), + [sym__expr] = STATE(995), + [sym_expr_return] = STATE(995), + [sym_expr_break] = STATE(995), + [sym_expr_continue] = STATE(995), + [sym_expr_throw] = STATE(995), + [sym_expr_query] = STATE(995), + [sym_expr_rust] = STATE(995), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(995), + [sym_expr_binary] = STATE(995), + [sym_expr_annot] = STATE(995), + [sym_expr_call] = STATE(995), + [sym_expr_tuple_access] = STATE(995), + [sym_expr_record_access] = STATE(995), + [sym_expr_array_access] = STATE(995), + [sym_expr_method_call] = STATE(995), + [sym_expr_paren] = STATE(995), + [sym_expr_constant] = STATE(995), + [sym_expr_name] = STATE(995), + [sym_expr_array] = STATE(995), + [sym_expr_tuple] = STATE(995), + [sym_expr_record] = STATE(995), + [sym_expr_do] = STATE(995), + [sym_expr_if] = STATE(995), + [sym_expr_match] = STATE(995), + [sym_expr_loop] = STATE(995), + [sym_expr_while] = STATE(995), + [sym_expr_for] = STATE(995), + [sym_expr_try] = STATE(995), + [sym_name] = ACTIONS(7), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_AT] = ACTIONS(9), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(344), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_def] = ACTIONS(25), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_SEMI] = ACTIONS(346), + [anon_sym_type] = ACTIONS(31), + [anon_sym_enum] = ACTIONS(33), + [anon_sym_val] = ACTIONS(35), + [anon_sym_var] = ACTIONS(37), + [anon_sym_DASH_DASH_DASH] = ACTIONS(39), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [42] = { + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [sym__expr_fields] = STATE(1453), + [sym_expr_field] = STATE(1331), + [sym_expr_field_expr] = STATE(1350), + [sym_expr_field_name] = STATE(1350), + [sym__expr] = STATE(1065), + [sym_expr_return] = STATE(1065), + [sym_expr_break] = STATE(1065), + [sym_expr_continue] = STATE(1065), + [sym_expr_throw] = STATE(1065), + [sym_expr_query] = STATE(1065), + [sym_expr_rust] = STATE(1065), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1065), + [sym_expr_binary] = STATE(1065), + [sym_expr_annot] = STATE(1065), + [sym_expr_call] = STATE(1065), + [sym_expr_tuple_access] = STATE(1065), + [sym_expr_record_access] = STATE(1065), + [sym_expr_array_access] = STATE(1065), + [sym_expr_method_call] = STATE(1065), + [sym_expr_paren] = STATE(1065), + [sym_expr_constant] = STATE(1065), + [sym_expr_name] = STATE(1065), + [sym_expr_array] = STATE(1065), + [sym_expr_tuple] = STATE(1065), + [sym_expr_record] = STATE(1065), + [sym_expr_do] = STATE(1065), + [sym_expr_if] = STATE(1065), + [sym_expr_match] = STATE(1065), + [sym_expr_loop] = STATE(1065), + [sym_expr_while] = STATE(1065), + [sym_expr_for] = STATE(1065), + [sym_expr_try] = STATE(1065), + [sym_name] = ACTIONS(348), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(350), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, + [43] = { + [sym__constant] = STATE(896), + [sym_constant_string] = STATE(896), + [sym_constant_char] = STATE(896), + [sym_constant_bool] = STATE(896), + [sym_constant_unit] = STATE(896), + [sym__expr_fields] = STATE(1430), + [sym_expr_field] = STATE(1331), + [sym_expr_field_expr] = STATE(1350), + [sym_expr_field_name] = STATE(1350), + [sym__expr] = STATE(1065), + [sym_expr_return] = STATE(1065), + [sym_expr_break] = STATE(1065), + [sym_expr_continue] = STATE(1065), + [sym_expr_throw] = STATE(1065), + [sym_expr_query] = STATE(1065), + [sym_expr_rust] = STATE(1065), + [sym_query_from] = STATE(401), + [sym_expr_fun] = STATE(1065), + [sym_expr_binary] = STATE(1065), + [sym_expr_annot] = STATE(1065), + [sym_expr_call] = STATE(1065), + [sym_expr_tuple_access] = STATE(1065), + [sym_expr_record_access] = STATE(1065), + [sym_expr_array_access] = STATE(1065), + [sym_expr_method_call] = STATE(1065), + [sym_expr_paren] = STATE(1065), + [sym_expr_constant] = STATE(1065), + [sym_expr_name] = STATE(1065), + [sym_expr_array] = STATE(1065), + [sym_expr_tuple] = STATE(1065), + [sym_expr_record] = STATE(1065), + [sym_expr_do] = STATE(1065), + [sym_expr_if] = STATE(1065), + [sym_expr_match] = STATE(1065), + [sym_expr_loop] = STATE(1065), + [sym_expr_while] = STATE(1065), + [sym_expr_for] = STATE(1065), + [sym_expr_try] = STATE(1065), + [sym_name] = ACTIONS(348), + [sym__whitespace] = ACTIONS(3), + [sym_line_comment] = ACTIONS(3), + [anon_sym_LBRACE] = ACTIONS(11), + [anon_sym_RBRACE] = ACTIONS(352), + [sym_constant_int] = ACTIONS(13), + [sym_constant_float] = ACTIONS(15), + [sym_string_quote] = ACTIONS(17), + [anon_sym_SQUOTE] = ACTIONS(19), + [anon_sym_true] = ACTIONS(21), + [anon_sym_false] = ACTIONS(21), + [anon_sym_LPAREN] = ACTIONS(23), + [anon_sym_LBRACK] = ACTIONS(27), + [anon_sym_rust] = ACTIONS(41), + [anon_sym_fun] = ACTIONS(43), + [anon_sym_return] = ACTIONS(45), + [anon_sym_break] = ACTIONS(47), + [anon_sym_continue] = ACTIONS(49), + [anon_sym_throw] = ACTIONS(51), + [anon_sym_from] = ACTIONS(53), + [anon_sym_do] = ACTIONS(55), + [anon_sym_if] = ACTIONS(57), + [anon_sym_match] = ACTIONS(59), + [anon_sym_loop] = ACTIONS(61), + [anon_sym_while] = ACTIONS(63), + [anon_sym_for] = ACTIONS(65), + [anon_sym_try] = ACTIONS(67), + }, +}; + +static const uint16_t ts_small_parse_table[] = { + [0] = 29, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(348), 1, + sym_name, + STATE(401), 1, + sym_query_from, + STATE(1338), 1, + sym_expr_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1350), 2, + sym_expr_field_expr, + sym_expr_field_name, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1065), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [122] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(354), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1502), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [243] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(356), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1382), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [364] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(358), 1, + anon_sym_RBRACK, + STATE(401), 1, + sym_query_from, + STATE(1464), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [485] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(360), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1489), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [606] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(362), 1, + anon_sym_RBRACK, + STATE(401), 1, + sym_query_from, + STATE(1389), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [727] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(364), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1487), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [848] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(366), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1449), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [969] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(368), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1450), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1090] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(370), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1485), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1211] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(372), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1440), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1332] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(374), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1378), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1453] = 29, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(376), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + STATE(1479), 1, + sym__exprs, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(971), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1574] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(378), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1000), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1692] = 28, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(380), 1, + anon_sym_RPAREN, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1009), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [1810] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(60), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 34, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [1880] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(61), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 34, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [1950] = 16, + ACTIONS(394), 1, + anon_sym_from, + ACTIONS(397), 1, + anon_sym_where, + ACTIONS(400), 1, + anon_sym_join, + ACTIONS(403), 1, + anon_sym_union, + ACTIONS(406), 1, + anon_sym_group, + ACTIONS(409), 1, + anon_sym_over, + ACTIONS(412), 1, + anon_sym_roll, + ACTIONS(415), 1, + anon_sym_compute, + ACTIONS(418), 1, + anon_sym_select, + ACTIONS(421), 1, + anon_sym_with, + ACTIONS(424), 1, + anon_sym_into, + ACTIONS(427), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(61), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [2044] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(775), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2159] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(555), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2274] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(699), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2389] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(701), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2504] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(702), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2619] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(705), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2734] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(707), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2849] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(693), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [2964] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(864), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3079] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1027), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3194] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1028), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3309] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1046), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3424] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(537), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3539] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1047), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3654] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(543), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3769] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1051), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3884] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1052), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [3999] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1054), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4114] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1044), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4229] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1021), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4344] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(526), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4459] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(535), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4574] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(548), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4689] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(538), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4804] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(528), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [4919] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(653), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5034] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1030), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5149] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(743), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5264] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(722), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5379] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1053), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5494] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(942), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5609] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(723), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5724] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(958), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5839] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(750), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [5954] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(964), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6069] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(965), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6184] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(930), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6299] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(967), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6414] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(864), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6529] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(751), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6644] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(642), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6759] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(752), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6874] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(639), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [6989] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(972), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7104] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1037), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7219] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(515), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7334] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(514), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7449] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(561), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7564] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(741), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7679] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(627), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7794] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(604), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [7909] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1036), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8024] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(740), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8139] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8254] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(739), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8369] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(738), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8484] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(993), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8599] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(737), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8714] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(729), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8829] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(730), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [8944] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(731), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9059] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(746), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9174] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(589), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9289] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1035), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9404] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(598), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9519] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1061), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9634] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(980), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9749] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(597), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9864] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(595), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [9979] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(594), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10094] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(593), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10209] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(663), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10324] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(516), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10439] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(552), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10554] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(665), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10669] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1033), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10784] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(710), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [10899] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(709), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11014] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(689), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11129] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(708), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11244] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(658), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11359] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1029), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11474] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(706), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11589] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(704), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11704] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(703), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11819] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(754), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [11934] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(747), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12049] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1018), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12164] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12279] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(756), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12394] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(734), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12509] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(753), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12624] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(755), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12739] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(758), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12854] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(629), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [12969] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(732), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13084] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(584), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13199] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(735), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13314] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13429] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(697), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13544] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(596), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13659] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(990), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13774] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [13889] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(551), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14004] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1031), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14119] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(609), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14234] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(553), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14349] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(610), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14464] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(611), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14579] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(592), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14694] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(554), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14809] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(619), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [14924] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(696), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15039] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15154] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(556), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15269] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(557), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15384] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(558), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15499] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(549), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15614] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(559), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15729] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(560), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15844] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(587), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [15959] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(688), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16074] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(687), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16189] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(647), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16304] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(646), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16419] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(458), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16534] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(442), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16649] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(690), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16764] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(562), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16879] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(446), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [16994] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(448), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17109] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(546), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17224] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1024), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17339] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1022), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17454] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(679), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17569] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(645), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17684] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(644), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17799] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1059), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [17914] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1050), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18029] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1062), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18144] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(759), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18259] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(724), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18374] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(725), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18489] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(692), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18604] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(726), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18719] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(664), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18834] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(636), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [18949] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(648), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19064] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(727), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19179] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(728), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19294] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(718), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19409] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(717), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19524] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19639] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(716), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19754] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(715), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19869] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(681), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [19984] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(714), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20099] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(713), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20214] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(712), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20329] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(720), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20444] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(686), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20559] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(685), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20674] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1045), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20789] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1049), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [20904] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1001), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21019] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1002), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21134] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1026), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21249] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(864), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21364] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1004), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21479] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1006), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21594] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1007), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21709] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1010), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21824] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1011), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [21939] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1012), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22054] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(996), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22169] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(684), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22284] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(683), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22399] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(572), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22514] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(575), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22629] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1055), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22744] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1032), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22859] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1039), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [22974] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1056), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23089] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1063), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23204] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(577), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23319] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(530), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23434] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(578), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23549] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(547), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23664] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(457), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23779] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(456), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [23894] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1038), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24009] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(205), 1, + anon_sym_fun, + ACTIONS(207), 1, + anon_sym_return, + ACTIONS(209), 1, + anon_sym_break, + ACTIONS(211), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + STATE(414), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(974), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24124] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(579), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24239] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(580), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24354] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(626), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24469] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(260), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 33, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [24538] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(640), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24653] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(586), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24768] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(352), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 33, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [24837] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(632), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [24952] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(585), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25067] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(628), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25182] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(634), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25297] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(934), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25412] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(633), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25527] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(630), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25642] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25757] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(635), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25872] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(545), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [25987] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1057), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26102] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(544), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26217] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(643), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26332] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(631), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26447] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1034), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26562] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(680), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26677] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(674), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26792] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(761), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [26907] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1005), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27022] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27137] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(527), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27252] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1019), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27367] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(542), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27482] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(534), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27597] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(533), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27712] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(532), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27827] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(607), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [27942] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(760), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28057] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(773), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28172] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(770), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28287] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(769), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28402] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(768), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28517] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(637), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28632] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(765), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28747] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(531), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28862] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(89), 1, + anon_sym_fun, + ACTIONS(91), 1, + anon_sym_return, + ACTIONS(93), 1, + anon_sym_break, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(97), 1, + anon_sym_throw, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(438), 1, + anon_sym_from, + STATE(59), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(541), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [28977] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(583), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29092] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1020), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29207] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29322] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(763), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29437] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1043), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29552] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(621), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29667] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(620), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29782] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(591), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [29897] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(173), 1, + anon_sym_fun, + ACTIONS(175), 1, + anon_sym_return, + ACTIONS(177), 1, + anon_sym_break, + ACTIONS(179), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(436), 1, + anon_sym_from, + STATE(406), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(698), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30012] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(625), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30127] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(617), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30242] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(616), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30357] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(615), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30472] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(614), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30587] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(603), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30702] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(582), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30817] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(117), 1, + anon_sym_fun, + ACTIONS(119), 1, + anon_sym_return, + ACTIONS(121), 1, + anon_sym_break, + ACTIONS(123), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(434), 1, + anon_sym_from, + STATE(257), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(581), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [30932] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(764), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31047] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(669), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31162] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(605), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31277] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(608), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31392] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31507] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(624), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31622] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(618), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31737] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(623), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31852] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(622), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [31967] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(613), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32082] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(612), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32197] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(601), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32312] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(662), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32427] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(678), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32542] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(939), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32657] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(661), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32772] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(660), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [32887] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(675), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33002] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(988), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33117] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(574), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33232] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(573), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33347] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33462] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(570), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33577] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(568), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33692] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(567), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33807] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(566), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [33922] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(565), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34037] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(564), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34152] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(563), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34267] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(666), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34382] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(667), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34497] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(391), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 33, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [34566] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1015), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34681] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1023), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34796] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(772), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [34911] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(992), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35026] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(991), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35141] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(651), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35256] = 16, + ACTIONS(406), 1, + anon_sym_group, + ACTIONS(409), 1, + anon_sym_over, + ACTIONS(452), 1, + anon_sym_from, + ACTIONS(455), 1, + anon_sym_where, + ACTIONS(458), 1, + anon_sym_join, + ACTIONS(461), 1, + anon_sym_union, + ACTIONS(464), 1, + anon_sym_roll, + ACTIONS(467), 1, + anon_sym_compute, + ACTIONS(470), 1, + anon_sym_select, + ACTIONS(473), 1, + anon_sym_with, + ACTIONS(476), 1, + anon_sym_into, + ACTIONS(479), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(352), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [35349] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(668), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35464] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(656), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35579] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(711), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35694] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1060), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35809] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(654), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [35924] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(652), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36039] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(774), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36154] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(649), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36269] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(650), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36384] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(749), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36499] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(748), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36614] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(133), 1, + anon_sym_fun, + ACTIONS(135), 1, + anon_sym_return, + ACTIONS(137), 1, + anon_sym_break, + ACTIONS(139), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(446), 1, + anon_sym_from, + STATE(395), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(700), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36729] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(472), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36844] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(508), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [36959] = 16, + ACTIONS(406), 1, + anon_sym_group, + ACTIONS(409), 1, + anon_sym_over, + ACTIONS(482), 1, + anon_sym_from, + ACTIONS(485), 1, + anon_sym_where, + ACTIONS(488), 1, + anon_sym_join, + ACTIONS(491), 1, + anon_sym_union, + ACTIONS(494), 1, + anon_sym_roll, + ACTIONS(497), 1, + anon_sym_compute, + ACTIONS(500), 1, + anon_sym_select, + ACTIONS(503), 1, + anon_sym_with, + ACTIONS(506), 1, + anon_sym_into, + ACTIONS(509), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(367), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [37052] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(670), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37167] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(189), 1, + anon_sym_fun, + ACTIONS(191), 1, + anon_sym_return, + ACTIONS(193), 1, + anon_sym_break, + ACTIONS(195), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(442), 1, + anon_sym_from, + STATE(417), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(733), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37282] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(949), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37397] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(536), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37512] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(767), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37627] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(504), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37742] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(673), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37857] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(125), 1, + anon_sym_fun, + ACTIONS(127), 1, + anon_sym_return, + ACTIONS(129), 1, + anon_sym_break, + ACTIONS(131), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(444), 1, + anon_sym_from, + STATE(345), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(461), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [37972] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(671), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38087] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(506), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38202] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(744), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38317] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(776), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38432] = 27, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(149), 1, + anon_sym_fun, + ACTIONS(151), 1, + anon_sym_return, + ACTIONS(153), 1, + anon_sym_break, + ACTIONS(155), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(399), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(771), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38547] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1058), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38662] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1003), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38777] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(43), 1, + anon_sym_fun, + ACTIONS(45), 1, + anon_sym_return, + ACTIONS(47), 1, + anon_sym_break, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(51), 1, + anon_sym_throw, + ACTIONS(53), 1, + anon_sym_from, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + STATE(401), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1041), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [38892] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(197), 1, + anon_sym_fun, + ACTIONS(199), 1, + anon_sym_return, + ACTIONS(201), 1, + anon_sym_break, + ACTIONS(203), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(422), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(766), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39007] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(141), 1, + anon_sym_fun, + ACTIONS(143), 1, + anon_sym_return, + ACTIONS(145), 1, + anon_sym_break, + ACTIONS(147), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(448), 1, + anon_sym_from, + STATE(394), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(606), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39122] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(181), 1, + anon_sym_fun, + ACTIONS(183), 1, + anon_sym_return, + ACTIONS(185), 1, + anon_sym_break, + ACTIONS(187), 1, + anon_sym_throw, + ACTIONS(213), 1, + anon_sym_from, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + STATE(416), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(682), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39237] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(655), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39352] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(165), 1, + anon_sym_fun, + ACTIONS(167), 1, + anon_sym_return, + ACTIONS(169), 1, + anon_sym_break, + ACTIONS(171), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(450), 1, + anon_sym_from, + STATE(408), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(657), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39467] = 27, + ACTIONS(69), 1, + sym_name, + ACTIONS(71), 1, + anon_sym_LBRACE, + ACTIONS(77), 1, + sym_constant_int, + ACTIONS(79), 1, + sym_constant_float, + ACTIONS(81), 1, + sym_string_quote, + ACTIONS(83), 1, + anon_sym_SQUOTE, + ACTIONS(87), 1, + anon_sym_rust, + ACTIONS(95), 1, + anon_sym_continue, + ACTIONS(99), 1, + anon_sym_do, + ACTIONS(101), 1, + anon_sym_if, + ACTIONS(103), 1, + anon_sym_match, + ACTIONS(105), 1, + anon_sym_loop, + ACTIONS(107), 1, + anon_sym_while, + ACTIONS(109), 1, + anon_sym_for, + ACTIONS(111), 1, + anon_sym_try, + ACTIONS(157), 1, + anon_sym_fun, + ACTIONS(159), 1, + anon_sym_return, + ACTIONS(161), 1, + anon_sym_break, + ACTIONS(163), 1, + anon_sym_throw, + ACTIONS(430), 1, + anon_sym_LPAREN, + ACTIONS(432), 1, + anon_sym_LBRACK, + ACTIONS(440), 1, + anon_sym_from, + STATE(405), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(85), 2, + anon_sym_true, + anon_sym_false, + STATE(525), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(672), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39582] = 27, + ACTIONS(7), 1, + sym_name, + ACTIONS(11), 1, + anon_sym_LBRACE, + ACTIONS(13), 1, + sym_constant_int, + ACTIONS(15), 1, + sym_constant_float, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(27), 1, + anon_sym_LBRACK, + ACTIONS(41), 1, + anon_sym_rust, + ACTIONS(49), 1, + anon_sym_continue, + ACTIONS(55), 1, + anon_sym_do, + ACTIONS(57), 1, + anon_sym_if, + ACTIONS(59), 1, + anon_sym_match, + ACTIONS(61), 1, + anon_sym_loop, + ACTIONS(63), 1, + anon_sym_while, + ACTIONS(65), 1, + anon_sym_for, + ACTIONS(67), 1, + anon_sym_try, + ACTIONS(215), 1, + anon_sym_fun, + ACTIONS(217), 1, + anon_sym_return, + ACTIONS(219), 1, + anon_sym_break, + ACTIONS(221), 1, + anon_sym_throw, + ACTIONS(223), 1, + anon_sym_from, + STATE(421), 1, + sym_query_from, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(896), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1048), 28, + sym__expr, + sym_expr_return, + sym_expr_break, + sym_expr_continue, + sym_expr_throw, + sym_expr_query, + sym_expr_rust, + sym_expr_fun, + sym_expr_binary, + sym_expr_annot, + sym_expr_call, + sym_expr_tuple_access, + sym_expr_record_access, + sym_expr_array_access, + sym_expr_method_call, + sym_expr_paren, + sym_expr_constant, + sym_expr_name, + sym_expr_array, + sym_expr_tuple, + sym_expr_record, + sym_expr_do, + sym_expr_if, + sym_expr_match, + sym_expr_loop, + sym_expr_while, + sym_expr_for, + sym_expr_try, + [39697] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(367), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 33, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [39766] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(396), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 32, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [39834] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(397), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 32, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [39902] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(393), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 32, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [39970] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(392), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 32, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40038] = 16, + ACTIONS(406), 1, + anon_sym_group, + ACTIONS(409), 1, + anon_sym_over, + ACTIONS(512), 1, + anon_sym_from, + ACTIONS(515), 1, + anon_sym_where, + ACTIONS(518), 1, + anon_sym_join, + ACTIONS(521), 1, + anon_sym_union, + ACTIONS(524), 1, + anon_sym_roll, + ACTIONS(527), 1, + anon_sym_compute, + ACTIONS(530), 1, + anon_sym_select, + ACTIONS(533), 1, + anon_sym_with, + ACTIONS(536), 1, + anon_sym_into, + ACTIONS(539), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(396), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40130] = 16, + ACTIONS(542), 1, + anon_sym_from, + ACTIONS(545), 1, + anon_sym_where, + ACTIONS(548), 1, + anon_sym_join, + ACTIONS(551), 1, + anon_sym_union, + ACTIONS(554), 1, + anon_sym_group, + ACTIONS(557), 1, + anon_sym_over, + ACTIONS(560), 1, + anon_sym_roll, + ACTIONS(563), 1, + anon_sym_compute, + ACTIONS(566), 1, + anon_sym_select, + ACTIONS(569), 1, + anon_sym_with, + ACTIONS(572), 1, + anon_sym_into, + ACTIONS(575), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(397), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40222] = 16, + ACTIONS(554), 1, + anon_sym_group, + ACTIONS(557), 1, + anon_sym_over, + ACTIONS(578), 1, + anon_sym_from, + ACTIONS(581), 1, + anon_sym_where, + ACTIONS(584), 1, + anon_sym_join, + ACTIONS(587), 1, + anon_sym_union, + ACTIONS(590), 1, + anon_sym_roll, + ACTIONS(593), 1, + anon_sym_compute, + ACTIONS(596), 1, + anon_sym_select, + ACTIONS(599), 1, + anon_sym_with, + ACTIONS(602), 1, + anon_sym_into, + ACTIONS(605), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(398), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40313] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(402), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 31, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40380] = 16, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(620), 1, + anon_sym_roll, + ACTIONS(622), 1, + anon_sym_compute, + ACTIONS(624), 1, + anon_sym_select, + ACTIONS(626), 1, + anon_sym_with, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(630), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(398), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40471] = 16, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(620), 1, + anon_sym_roll, + ACTIONS(622), 1, + anon_sym_compute, + ACTIONS(624), 1, + anon_sym_select, + ACTIONS(626), 1, + anon_sym_with, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(630), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(400), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40562] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(398), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 31, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40629] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(404), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 29, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40694] = 16, + ACTIONS(406), 1, + anon_sym_group, + ACTIONS(409), 1, + anon_sym_over, + ACTIONS(632), 1, + anon_sym_from, + ACTIONS(635), 1, + anon_sym_where, + ACTIONS(638), 1, + anon_sym_join, + ACTIONS(641), 1, + anon_sym_union, + ACTIONS(644), 1, + anon_sym_roll, + ACTIONS(647), 1, + anon_sym_compute, + ACTIONS(650), 1, + anon_sym_select, + ACTIONS(653), 1, + anon_sym_with, + ACTIONS(656), 1, + anon_sym_into, + ACTIONS(659), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(404), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 17, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40783] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(403), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 29, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40848] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(409), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 28, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40912] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(410), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 28, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [40976] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(407), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 28, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41040] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(411), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 28, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41104] = 16, + ACTIONS(406), 1, + anon_sym_group, + ACTIONS(409), 1, + anon_sym_over, + ACTIONS(662), 1, + anon_sym_from, + ACTIONS(665), 1, + anon_sym_where, + ACTIONS(668), 1, + anon_sym_join, + ACTIONS(671), 1, + anon_sym_union, + ACTIONS(674), 1, + anon_sym_roll, + ACTIONS(677), 1, + anon_sym_compute, + ACTIONS(680), 1, + anon_sym_select, + ACTIONS(683), 1, + anon_sym_with, + ACTIONS(686), 1, + anon_sym_into, + ACTIONS(689), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(410), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 16, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41192] = 16, + ACTIONS(406), 1, + anon_sym_group, + ACTIONS(409), 1, + anon_sym_over, + ACTIONS(692), 1, + anon_sym_from, + ACTIONS(695), 1, + anon_sym_where, + ACTIONS(698), 1, + anon_sym_join, + ACTIONS(701), 1, + anon_sym_union, + ACTIONS(704), 1, + anon_sym_roll, + ACTIONS(707), 1, + anon_sym_compute, + ACTIONS(710), 1, + anon_sym_select, + ACTIONS(713), 1, + anon_sym_with, + ACTIONS(716), 1, + anon_sym_into, + ACTIONS(719), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(411), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 16, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41280] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(419), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 27, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41343] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(415), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 27, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41406] = 16, + ACTIONS(722), 1, + anon_sym_from, + ACTIONS(724), 1, + anon_sym_where, + ACTIONS(726), 1, + anon_sym_join, + ACTIONS(728), 1, + anon_sym_union, + ACTIONS(730), 1, + anon_sym_group, + ACTIONS(732), 1, + anon_sym_over, + ACTIONS(734), 1, + anon_sym_roll, + ACTIONS(736), 1, + anon_sym_compute, + ACTIONS(738), 1, + anon_sym_select, + ACTIONS(740), 1, + anon_sym_with, + ACTIONS(742), 1, + anon_sym_into, + ACTIONS(744), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(418), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 15, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41493] = 16, + ACTIONS(554), 1, + anon_sym_group, + ACTIONS(557), 1, + anon_sym_over, + ACTIONS(746), 1, + anon_sym_from, + ACTIONS(749), 1, + anon_sym_where, + ACTIONS(752), 1, + anon_sym_join, + ACTIONS(755), 1, + anon_sym_union, + ACTIONS(758), 1, + anon_sym_roll, + ACTIONS(761), 1, + anon_sym_compute, + ACTIONS(764), 1, + anon_sym_select, + ACTIONS(767), 1, + anon_sym_with, + ACTIONS(770), 1, + anon_sym_into, + ACTIONS(773), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(415), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 15, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41580] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(412), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 27, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41643] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(413), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 27, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41706] = 16, + ACTIONS(722), 1, + anon_sym_from, + ACTIONS(724), 1, + anon_sym_where, + ACTIONS(726), 1, + anon_sym_join, + ACTIONS(728), 1, + anon_sym_union, + ACTIONS(730), 1, + anon_sym_group, + ACTIONS(732), 1, + anon_sym_over, + ACTIONS(734), 1, + anon_sym_roll, + ACTIONS(736), 1, + anon_sym_compute, + ACTIONS(738), 1, + anon_sym_select, + ACTIONS(740), 1, + anon_sym_with, + ACTIONS(742), 1, + anon_sym_into, + ACTIONS(744), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(419), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 15, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41793] = 16, + ACTIONS(406), 1, + anon_sym_group, + ACTIONS(409), 1, + anon_sym_over, + ACTIONS(776), 1, + anon_sym_from, + ACTIONS(779), 1, + anon_sym_where, + ACTIONS(782), 1, + anon_sym_join, + ACTIONS(785), 1, + anon_sym_union, + ACTIONS(788), 1, + anon_sym_roll, + ACTIONS(791), 1, + anon_sym_compute, + ACTIONS(794), 1, + anon_sym_select, + ACTIONS(797), 1, + anon_sym_with, + ACTIONS(800), 1, + anon_sym_into, + ACTIONS(803), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(419), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(390), 15, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [41880] = 16, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(806), 1, + anon_sym_from, + ACTIONS(808), 1, + anon_sym_where, + ACTIONS(810), 1, + anon_sym_join, + ACTIONS(812), 1, + anon_sym_union, + ACTIONS(814), 1, + anon_sym_roll, + ACTIONS(816), 1, + anon_sym_compute, + ACTIONS(818), 1, + anon_sym_select, + ACTIONS(820), 1, + anon_sym_with, + ACTIONS(822), 1, + anon_sym_into, + ACTIONS(824), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(386), 14, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + STATE(424), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [41966] = 16, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(806), 1, + anon_sym_from, + ACTIONS(808), 1, + anon_sym_where, + ACTIONS(810), 1, + anon_sym_join, + ACTIONS(812), 1, + anon_sym_union, + ACTIONS(814), 1, + anon_sym_roll, + ACTIONS(816), 1, + anon_sym_compute, + ACTIONS(818), 1, + anon_sym_select, + ACTIONS(820), 1, + anon_sym_with, + ACTIONS(822), 1, + anon_sym_into, + ACTIONS(824), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(382), 14, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + STATE(420), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [42052] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(384), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(423), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(382), 26, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42114] = 4, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(388), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + STATE(424), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + ACTIONS(386), 26, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42176] = 16, + ACTIONS(554), 1, + anon_sym_group, + ACTIONS(557), 1, + anon_sym_over, + ACTIONS(826), 1, + anon_sym_from, + ACTIONS(829), 1, + anon_sym_where, + ACTIONS(832), 1, + anon_sym_join, + ACTIONS(835), 1, + anon_sym_union, + ACTIONS(838), 1, + anon_sym_roll, + ACTIONS(841), 1, + anon_sym_compute, + ACTIONS(844), 1, + anon_sym_select, + ACTIONS(847), 1, + anon_sym_with, + ACTIONS(850), 1, + anon_sym_into, + ACTIONS(853), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(392), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(390), 14, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + STATE(424), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [42262] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(858), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(856), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42319] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(862), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(860), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42376] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(866), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(864), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42433] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(870), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(868), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42490] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(874), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(872), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42547] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(878), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(876), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42604] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(882), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(880), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42661] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(886), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(884), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42718] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(890), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(888), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42775] = 5, + ACTIONS(896), 1, + anon_sym_AMP, + ACTIONS(898), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(894), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(892), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42836] = 5, + ACTIONS(896), 1, + anon_sym_AMP, + ACTIONS(898), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(902), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(900), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42897] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(906), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(904), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [42954] = 5, + ACTIONS(896), 1, + anon_sym_AMP, + ACTIONS(898), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(910), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(908), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43015] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(914), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(912), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43072] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(918), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(916), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43129] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(922), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(920), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43186] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(926), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(924), 37, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43243] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(942), 1, + anon_sym_of, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + STATE(453), 1, + sym__of, + STATE(497), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [43329] = 4, + STATE(486), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(960), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(958), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43387] = 4, + STATE(483), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(964), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(962), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43445] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(968), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(966), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + [43501] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + STATE(451), 1, + sym__of, + STATE(501), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(970), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [43585] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(976), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(974), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + [43641] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + STATE(453), 1, + sym__of, + STATE(497), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [43725] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 36, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + [43781] = 4, + STATE(474), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(984), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(982), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43839] = 4, + STATE(487), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(988), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(986), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43897] = 4, + ACTIONS(994), 1, + anon_sym_else, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(992), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(990), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [43955] = 4, + STATE(524), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(998), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(996), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44013] = 4, + STATE(502), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1002), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1000), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44071] = 4, + STATE(476), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1006), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1004), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44129] = 19, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(942), 1, + anon_sym_of, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + STATE(497), 1, + sym__as, + STATE(500), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [44217] = 19, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(942), 1, + anon_sym_of, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + STATE(501), 1, + sym__as, + STATE(503), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(970), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [44305] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(942), 1, + anon_sym_of, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + STATE(451), 1, + sym__of, + STATE(501), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(970), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [44391] = 5, + ACTIONS(1014), 1, + anon_sym_LPAREN, + ACTIONS(1016), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1012), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1010), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [44450] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1020), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1018), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44505] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + STATE(453), 1, + sym__of, + STATE(497), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [44588] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1036), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44643] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1042), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1040), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44698] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1046), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1044), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44753] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1050), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1048), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44808] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1054), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1052), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44863] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1058), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1056), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44918] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1062), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1060), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [44973] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1066), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1064), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45028] = 5, + ACTIONS(1008), 1, + anon_sym_as, + STATE(474), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(984), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(982), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45087] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1070), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1068), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45142] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1072), 1, + anon_sym_of, + STATE(451), 1, + sym__of, + STATE(501), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(970), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [45227] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1076), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1074), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45282] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1002), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1000), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45337] = 5, + ACTIONS(1008), 1, + anon_sym_as, + STATE(502), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1002), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1000), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45396] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1080), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1078), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45451] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1084), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1082), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45506] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1088), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1086), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45561] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1092), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1090), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45616] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1096), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1094), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45671] = 5, + ACTIONS(1008), 1, + anon_sym_as, + STATE(476), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1006), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1004), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45730] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1100), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1098), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45785] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1006), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1004), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45840] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1104), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1102), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45895] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1108), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1106), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [45950] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(984), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(982), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46005] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1112), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1110), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46060] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1116), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1114), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46115] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1120), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1118), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46170] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1124), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1122), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46225] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1128), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1126), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46280] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1132), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1130), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46335] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1136), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1134), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46390] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1140), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1138), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46445] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1144), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1142), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46500] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1148), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1146), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46555] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(998), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(996), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46610] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1152), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1150), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46665] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1156), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1154), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46720] = 5, + ACTIONS(1008), 1, + anon_sym_as, + STATE(524), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(998), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(996), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46779] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(988), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(986), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46834] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1160), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1158), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46889] = 5, + ACTIONS(1008), 1, + anon_sym_as, + STATE(487), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(988), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(986), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [46948] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + STATE(451), 1, + sym__of, + STATE(501), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(970), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [47031] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1164), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1162), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47086] = 8, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 9, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 32, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [47151] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1172), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1170), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47206] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1072), 1, + anon_sym_of, + STATE(453), 1, + sym__of, + STATE(497), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [47291] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1176), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1174), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47346] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1180), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1178), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47401] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1184), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47456] = 5, + ACTIONS(1008), 1, + anon_sym_as, + STATE(486), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(960), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(958), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47515] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1188), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1186), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47570] = 19, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1072), 1, + anon_sym_of, + STATE(501), 1, + sym__as, + STATE(503), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(970), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [47657] = 19, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1072), 1, + anon_sym_of, + STATE(497), 1, + sym__as, + STATE(500), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [47744] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1190), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [47825] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1196), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1194), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47880] = 5, + ACTIONS(1008), 1, + anon_sym_as, + STATE(483), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(964), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(962), 33, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47939] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1200), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1198), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [47994] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1204), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1202), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [48049] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1208), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1206), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [48104] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1212), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1210), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [48159] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1216), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1214), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [48214] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1220), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1218), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [48269] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1224), 11, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1222), 35, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [48324] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1228), 1, + anon_sym_EQ, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1230), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [48408] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 31, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [48474] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [48554] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1228), 1, + anon_sym_EQ, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1230), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1250), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [48638] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1256), 1, + anon_sym_desc, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1252), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [48718] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [48800] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 27, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [48874] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1166), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [48952] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [49024] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1228), 1, + anon_sym_EQ, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1230), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [49108] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1190), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [49188] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1228), 1, + anon_sym_EQ, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1230), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [49272] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1228), 1, + anon_sym_EQ, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1230), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [49356] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [49438] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [49520] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [49602] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 31, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [49670] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1276), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [49748] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1280), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [49826] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1284), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [49904] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1252), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [49982] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [50064] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(938), 1, + anon_sym_or, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(944), 1, + anon_sym_and, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1228), 1, + anon_sym_EQ, + ACTIONS(1232), 1, + anon_sym_DOT_DOT, + ACTIONS(1234), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(946), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(948), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(950), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(952), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(954), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1230), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 21, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [50148] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [50225] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [50306] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1294), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1296), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1250), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [50389] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1252), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [50466] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1256), 1, + anon_sym_desc, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1252), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [50545] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1284), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [50622] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1280), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [50699] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 30, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [50764] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 30, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [50831] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 28, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [50902] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [50975] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [51056] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [51137] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [51216] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [51297] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [51378] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [51451] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1166), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [51528] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 28, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [51599] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 30, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [51666] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [51747] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 30, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [51812] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [51893] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1316), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1318), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [51976] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1280), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [52053] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1284), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [52130] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1276), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [52207] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1316), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1318), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1250), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [52290] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1316), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1318), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [52373] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1316), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1318), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [52456] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1316), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1318), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [52539] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1316), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1318), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [52622] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1294), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1296), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [52705] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1276), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [52782] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1294), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1296), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [52865] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1294), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1296), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [52948] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1294), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1296), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [53031] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1294), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1296), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 20, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [53114] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [53195] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1236), 1, + anon_sym_or, + ACTIONS(1238), 1, + anon_sym_and, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1290), 1, + anon_sym_DOT_DOT, + ACTIONS(1292), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1240), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1242), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1244), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1246), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1248), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [53276] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1324), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [53358] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [53438] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [53514] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1342), 1, + anon_sym_EQ, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1344), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [53596] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1324), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [53678] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1324), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [53760] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1324), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [53842] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1342), 1, + anon_sym_EQ, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1344), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [53924] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1324), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [54006] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [54082] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [54162] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [54242] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [54322] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [54402] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [54482] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1256), 1, + anon_sym_desc, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1252), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [54560] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [54636] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1252), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [54712] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1342), 1, + anon_sym_EQ, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1344), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1250), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [54794] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [54870] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1342), 1, + anon_sym_EQ, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1344), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [54952] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1342), 1, + anon_sym_EQ, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1344), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [55034] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1342), 1, + anon_sym_EQ, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1344), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 19, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [55116] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [55196] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [55268] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [55348] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 25, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [55420] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [55496] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 27, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [55566] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [55632] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [55696] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [55772] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [55848] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [55924] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 27, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [55994] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [56058] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 29, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [56124] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [56203] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1370), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [56284] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [56359] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1370), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [56440] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 28, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [56503] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1370), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [56584] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 24, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [56655] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 28, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [56720] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 26, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [56789] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [56864] = 19, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_of, + ACTIONS(1376), 1, + anon_sym_and, + STATE(501), 1, + sym__as, + STATE(503), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(970), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [56947] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57022] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [57101] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1370), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [57182] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [57261] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 22, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [57340] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1370), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 18, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [57421] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 23, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_on, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57496] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_of, + ACTIONS(1376), 1, + anon_sym_and, + STATE(453), 1, + sym__of, + STATE(497), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57577] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_of, + ACTIONS(1376), 1, + anon_sym_and, + STATE(451), 1, + sym__of, + STATE(501), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(970), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57658] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + STATE(453), 1, + sym__of, + STATE(497), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57737] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + STATE(451), 1, + sym__of, + STATE(501), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(970), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57816] = 19, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1374), 1, + anon_sym_of, + ACTIONS(1376), 1, + anon_sym_and, + STATE(497), 1, + sym__as, + STATE(500), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57899] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + STATE(451), 1, + sym__of, + STATE(501), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(970), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [57977] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + STATE(453), 1, + sym__of, + STATE(497), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58055] = 19, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1402), 1, + anon_sym_of, + STATE(497), 1, + sym__as, + STATE(500), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58137] = 22, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1072), 1, + anon_sym_of, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1316), 1, + anon_sym_EQ, + STATE(497), 1, + sym__as, + STATE(500), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1318), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(928), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [58225] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58301] = 22, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1022), 1, + anon_sym_or, + ACTIONS(1024), 1, + anon_sym_and, + ACTIONS(1072), 1, + anon_sym_of, + ACTIONS(1312), 1, + anon_sym_DOT_DOT, + ACTIONS(1314), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1316), 1, + anon_sym_EQ, + STATE(501), 1, + sym__as, + STATE(503), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1026), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1028), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1030), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1032), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1034), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1318), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(970), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [58389] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1402), 1, + anon_sym_of, + STATE(451), 1, + sym__of, + STATE(501), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(970), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58469] = 19, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1402), 1, + anon_sym_of, + STATE(501), 1, + sym__as, + STATE(503), 1, + sym__of, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(972), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(970), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58551] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1402), 1, + anon_sym_of, + STATE(453), 1, + sym__of, + STATE(497), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(936), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(928), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58631] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1256), 1, + anon_sym_desc, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1252), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [58706] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1404), 1, + anon_sym_EQ, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1406), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1250), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [58785] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1404), 1, + anon_sym_EQ, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1406), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [58864] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1404), 1, + anon_sym_EQ, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1406), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [58943] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1404), 1, + anon_sym_EQ, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1406), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [59022] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1252), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59095] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59172] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59247] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [59324] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 22, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [59393] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59466] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1404), 1, + anon_sym_EQ, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1406), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [59545] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [59612] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 26, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [59675] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 26, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [59736] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59809] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59882] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [59955] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [60032] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [60109] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [60186] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [60261] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1372), 1, + anon_sym_or, + ACTIONS(1376), 1, + anon_sym_and, + ACTIONS(1404), 1, + anon_sym_EQ, + ACTIONS(1408), 1, + anon_sym_DOT_DOT, + ACTIONS(1410), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1378), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1380), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1382), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1384), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1386), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1406), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 16, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_of, + [60340] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 23, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [60406] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [60480] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [60558] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [60630] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [60708] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [60786] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [60864] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [60942] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1440), 1, + anon_sym_EQ, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1442), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1250), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + [61020] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1252), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [61092] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1448), 1, + anon_sym_EQ, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1450), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1250), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [61170] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1256), 1, + anon_sym_desc, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1252), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [61244] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [61320] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [61396] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [61472] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [61544] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [61616] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 25, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [61676] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 25, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [61738] = 20, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1298), 1, + anon_sym_or, + ACTIONS(1300), 1, + anon_sym_and, + ACTIONS(1342), 1, + anon_sym_EQ, + ACTIONS(1346), 1, + anon_sym_DOT_DOT, + ACTIONS(1348), 1, + anon_sym_DOT_DOT_EQ, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1302), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1304), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1306), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1308), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1310), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1344), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1190), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [61820] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 23, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [61886] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [61958] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1448), 1, + anon_sym_EQ, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1450), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [62036] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1448), 1, + anon_sym_EQ, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1450), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [62114] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [62182] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1448), 1, + anon_sym_EQ, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1450), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [62260] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1412), 1, + anon_sym_or, + ACTIONS(1414), 1, + anon_sym_and, + ACTIONS(1444), 1, + anon_sym_DOT_DOT, + ACTIONS(1446), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1416), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1418), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1420), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1422), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1424), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [62336] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1448), 1, + anon_sym_EQ, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1450), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [62414] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [62486] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1448), 1, + anon_sym_EQ, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1450), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 15, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + [62564] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + STATE(471), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1192), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1190), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [62640] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [62716] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [62784] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [62856] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 25, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [62918] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 25, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [62978] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [63050] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [63122] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [63198] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [63274] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1388), 1, + anon_sym_or, + ACTIONS(1390), 1, + anon_sym_and, + ACTIONS(1452), 1, + anon_sym_DOT_DOT, + ACTIONS(1454), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1392), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1394), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1396), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1398), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1400), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_of, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [63350] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [63421] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(1474), 1, + anon_sym_DOT_DOT, + ACTIONS(1476), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [63498] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [63569] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1478), 1, + anon_sym_EQ, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1480), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [63646] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1478), 1, + anon_sym_EQ, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1480), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [63723] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1478), 1, + anon_sym_EQ, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1480), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [63800] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1478), 1, + anon_sym_EQ, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1480), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [63877] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [63948] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [64015] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(1474), 1, + anon_sym_DOT_DOT, + ACTIONS(1476), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [64090] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [64165] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1252), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [64236] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [64297] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [64372] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [64447] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 22, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [64512] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [64573] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [64632] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [64703] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [64774] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(1474), 1, + anon_sym_DOT_DOT, + ACTIONS(1476), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [64849] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(1474), 1, + anon_sym_DOT_DOT, + ACTIONS(1476), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [64926] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1478), 1, + anon_sym_EQ, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1480), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1250), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [65003] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(1474), 1, + anon_sym_DOT_DOT, + ACTIONS(1476), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [65078] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(1474), 1, + anon_sym_DOT_DOT, + ACTIONS(1476), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [65153] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [65224] = 19, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1256), 1, + anon_sym_desc, + ACTIONS(1320), 1, + anon_sym_EQ, + ACTIONS(1322), 1, + anon_sym_or, + ACTIONS(1326), 1, + anon_sym_DOT_DOT, + ACTIONS(1328), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1330), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1332), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1334), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1336), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1338), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1340), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1324), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1252), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [65303] = 16, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1256), 1, + anon_sym_desc, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1254), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1252), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [65376] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(1474), 1, + anon_sym_DOT_DOT, + ACTIONS(1476), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [65453] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(1474), 1, + anon_sym_DOT_DOT, + ACTIONS(1476), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [65530] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1456), 1, + anon_sym_or, + ACTIONS(1458), 1, + anon_sym_and, + ACTIONS(1470), 1, + anon_sym_EQ, + ACTIONS(1474), 1, + anon_sym_DOT_DOT, + ACTIONS(1476), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1460), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1462), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1464), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1466), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1468), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1472), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_desc, + [65607] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 22, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [65672] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [65743] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [65814] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 24, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [65873] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [65948] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 20, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [66015] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1426), 1, + anon_sym_or, + ACTIONS(1428), 1, + anon_sym_and, + ACTIONS(1478), 1, + anon_sym_EQ, + ACTIONS(1482), 1, + anon_sym_DOT_DOT, + ACTIONS(1484), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1430), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1432), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1434), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1436), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1438), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1480), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 14, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_as, + [66092] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1488), 1, + anon_sym_DOT_DOT, + ACTIONS(1490), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 17, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [66166] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1488), 1, + anon_sym_DOT_DOT, + ACTIONS(1490), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 17, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [66240] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1488), 1, + anon_sym_DOT_DOT, + ACTIONS(1490), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 17, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [66314] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [66384] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [66454] = 9, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 7, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 23, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [66512] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1488), 1, + anon_sym_DOT_DOT, + ACTIONS(1490), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(1504), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1506), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1260), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [66588] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1488), 1, + anon_sym_DOT_DOT, + ACTIONS(1490), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(1504), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1506), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1226), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [66664] = 10, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 5, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 23, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [66724] = 12, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 21, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [66788] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [66858] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1350), 1, + anon_sym_or, + ACTIONS(1352), 1, + anon_sym_DOT_DOT, + ACTIONS(1354), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1356), 1, + anon_sym_and, + ACTIONS(1368), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1358), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1360), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1362), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1364), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1366), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1370), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1276), 13, + anon_sym_RBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [66934] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1488), 1, + anon_sym_DOT_DOT, + ACTIONS(1490), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(1504), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1506), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1262), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [67010] = 13, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 3, + anon_sym_EQ, + anon_sym_or, + anon_sym_DOT_DOT, + ACTIONS(1166), 19, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [67076] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1488), 1, + anon_sym_DOT_DOT, + ACTIONS(1490), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(1504), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1506), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1258), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [67152] = 18, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1488), 1, + anon_sym_DOT_DOT, + ACTIONS(1490), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(1504), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1506), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + ACTIONS(1288), 13, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + [67228] = 15, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1278), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1276), 18, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [67298] = 17, + ACTIONS(930), 1, + anon_sym_COLON, + ACTIONS(932), 1, + anon_sym_LPAREN, + ACTIONS(934), 1, + anon_sym_LBRACK, + ACTIONS(940), 1, + anon_sym_DOT, + ACTIONS(956), 1, + anon_sym_COLON_COLON, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1486), 1, + anon_sym_or, + ACTIONS(1488), 1, + anon_sym_DOT_DOT, + ACTIONS(1490), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1492), 1, + anon_sym_and, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1494), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1496), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1498), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1500), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1502), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 17, + anon_sym_LBRACE, + anon_sym_from, + anon_sym_where, + anon_sym_join, + anon_sym_union, + anon_sym_group, + anon_sym_over, + anon_sym_roll, + anon_sym_compute, + anon_sym_select, + anon_sym_with, + anon_sym_into, + anon_sym_order, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [67372] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(918), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(916), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67417] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(870), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(868), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67462] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(922), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(920), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67507] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(890), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(888), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67552] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(886), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(884), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67597] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1092), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1090), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67642] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(862), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(860), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67687] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(866), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(864), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67732] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(882), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(880), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67777] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(874), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(872), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67822] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(878), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(876), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67867] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(914), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(912), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67912] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(858), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(856), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [67957] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1096), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1094), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [68002] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1208), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1206), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [68047] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1204), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1202), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [68092] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(926), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(924), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [68137] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1196), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1194), 26, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_EQ_GT, + [68182] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1508), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1510), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68225] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1512), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1514), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68268] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1516), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1518), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68311] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1520), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1522), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68354] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1524), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1526), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68397] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(906), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(904), 24, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [68440] = 5, + ACTIONS(1528), 1, + anon_sym_AMP, + ACTIONS(1530), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(894), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(892), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [68487] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(974), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(976), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68530] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(978), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(980), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68573] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(966), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(968), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68616] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1532), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1534), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68659] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(968), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(966), 24, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + anon_sym_catch, + [68702] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1536), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1538), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68745] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1540), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1542), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68788] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1544), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1546), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68831] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1548), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1550), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68874] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1552), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1554), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68917] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1556), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1558), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [68960] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(980), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(978), 24, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + anon_sym_catch, + [69003] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1560), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1562), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69046] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1564), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1566), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69089] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1568), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1570), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69132] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1572), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1574), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69175] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1576), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1578), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69218] = 5, + ACTIONS(1528), 1, + anon_sym_AMP, + ACTIONS(1530), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(902), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(900), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [69265] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1580), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1582), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69308] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1584), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1586), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69351] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1588), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1590), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69394] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1592), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1594), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69437] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1596), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1598), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69480] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1600), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1602), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69523] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1604), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1606), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69566] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1608), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1610), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69609] = 5, + ACTIONS(1528), 1, + anon_sym_AMP, + ACTIONS(1530), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(910), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(908), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [69656] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1612), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1614), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69699] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1616), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1618), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69742] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1620), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1622), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69785] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1624), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1626), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69828] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(976), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(974), 24, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + anon_sym_else, + anon_sym_catch, + [69871] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1628), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1630), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69914] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1632), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1634), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [69957] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1636), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1638), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70000] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1640), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1642), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70043] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1644), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1646), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70086] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1648), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1650), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70129] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1652), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1654), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70172] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1656), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1658), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70215] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1660), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1662), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70258] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1664), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1666), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70301] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1668), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1670), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70344] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1672), 11, + ts_builtin_sym_end, + anon_sym_AT, + anon_sym_LBRACE, + anon_sym_RBRACE, + sym_constant_float, + sym_string_quote, + anon_sym_SQUOTE, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_SEMI, + anon_sym_DASH_DASH_DASH, + ACTIONS(1674), 23, + sym_name, + sym_constant_int, + anon_sym_true, + anon_sym_false, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + anon_sym_val, + anon_sym_var, + anon_sym_rust, + anon_sym_fun, + anon_sym_return, + anon_sym_break, + anon_sym_continue, + anon_sym_throw, + anon_sym_from, + anon_sym_do, + anon_sym_if, + anon_sym_match, + anon_sym_loop, + anon_sym_while, + anon_sym_for, + anon_sym_try, + [70387] = 4, + ACTIONS(1676), 1, + anon_sym_else, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(992), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(990), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70431] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1682), 1, + anon_sym_RBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1289), 1, + sym_arm, + STATE(1372), 1, + sym_variant_name, + STATE(1429), 1, + sym__arms, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1204), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [70501] = 17, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1694), 1, + anon_sym_RBRACE, + STATE(1289), 1, + sym_arm, + STATE(1372), 1, + sym_variant_name, + STATE(1404), 1, + sym__arms, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1204), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [70571] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1696), 1, + anon_sym_RPAREN, + STATE(1372), 1, + sym_variant_name, + STATE(1483), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [70638] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1136), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1134), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70679] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1066), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1064), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70720] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1698), 1, + anon_sym_RPAREN, + STATE(1372), 1, + sym_variant_name, + STATE(1409), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [70787] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1042), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1040), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [70828] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1700), 1, + anon_sym_RPAREN, + STATE(1372), 1, + sym_variant_name, + STATE(1454), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [70895] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1702), 1, + anon_sym_RPAREN, + STATE(1372), 1, + sym_variant_name, + STATE(1463), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [70962] = 5, + ACTIONS(1704), 1, + anon_sym_LPAREN, + ACTIONS(1706), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1012), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1010), 20, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [71007] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1172), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1170), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71048] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1050), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1048), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71089] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1088), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1086), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71130] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1216), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1214), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71171] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1104), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1102), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71212] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1062), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1060), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71253] = 8, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 8, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 19, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [71304] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1046), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1044), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71345] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1289), 1, + sym_arm, + STATE(1372), 1, + sym_variant_name, + STATE(1402), 1, + sym__arms, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1204), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [71412] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1076), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1074), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71453] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1156), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1154), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71494] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1152), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1150), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71535] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1116), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1114), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71576] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1718), 1, + anon_sym_RPAREN, + STATE(1372), 1, + sym_variant_name, + STATE(1509), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [71643] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1020), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1018), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71684] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1120), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1118), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71725] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1054), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1052), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71766] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1144), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1142), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71807] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1180), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1178), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71848] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1140), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1138), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71889] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1148), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1146), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [71930] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1720), 1, + anon_sym_RPAREN, + STATE(1372), 1, + sym_variant_name, + STATE(1397), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [71997] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1722), 1, + anon_sym_RBRACK, + STATE(1372), 1, + sym_variant_name, + STATE(1400), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72064] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1724), 1, + anon_sym_RPAREN, + STATE(1372), 1, + sym_variant_name, + STATE(1384), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72131] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1084), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1082), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72172] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1164), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1162), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72213] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + ACTIONS(1726), 1, + anon_sym_RPAREN, + STATE(1372), 1, + sym_variant_name, + STATE(1510), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72280] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1058), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1056), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72321] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1108), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1106), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72362] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1038), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1036), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72403] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1124), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1122), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72444] = 16, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1289), 1, + sym_arm, + STATE(1372), 1, + sym_variant_name, + STATE(1416), 1, + sym__arms, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1204), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72511] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1128), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1126), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72552] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1200), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1198), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72593] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1100), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1098), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72634] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1132), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1130), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72675] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1184), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1182), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72716] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1212), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1210), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72757] = 3, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1224), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1222), 22, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_LBRACK, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [72798] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1410), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72862] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1427), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72926] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1500), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [72990] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1452), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73054] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1446), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73118] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1411), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73182] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1438), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73246] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1506), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73310] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1458), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73374] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1344), 1, + sym_arm, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1204), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73438] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1503), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73502] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1492), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73566] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1447), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73630] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1395), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73694] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1394), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73758] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + STATE(1419), 1, + sym__patterns, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1149), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73822] = 15, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(380), 1, + anon_sym_RPAREN, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1151), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73886] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1196), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [73947] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1230), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74008] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1186), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74069] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1199), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74130] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1200), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74191] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1208), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74252] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1210), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74313] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1157), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74374] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1180), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74435] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1209), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74496] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1185), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74557] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1172), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74618] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1167), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74679] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1181), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74740] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1179), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74801] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1177), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74862] = 10, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 4, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 17, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [74915] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1173), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [74976] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1198), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75037] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1218), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75098] = 14, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1284), 11, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [75159] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1159), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75220] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1138), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75281] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1213), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75342] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1164), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75403] = 14, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1280), 11, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [75464] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1201), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75525] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1150), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75586] = 16, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1166), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [75651] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1174), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75712] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1233), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75773] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1229), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75834] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1163), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [75895] = 16, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1264), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [75960] = 16, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1268), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [76025] = 16, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1272), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [76090] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1153), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76151] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1189), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76212] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1145), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76273] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1144), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76334] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1214), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76395] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1160), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76456] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1206), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76517] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1219), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76578] = 13, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1166), 13, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [76637] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1194), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76698] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1220), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76759] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1231), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76820] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1232), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76881] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1195), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [76942] = 14, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1166), 11, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [77003] = 12, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1166), 15, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [77060] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1224), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77121] = 9, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 6, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 17, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_on, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [77172] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1217), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77233] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1190), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77294] = 14, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(1678), 1, + sym_name, + ACTIONS(1680), 1, + anon_sym_LBRACE, + ACTIONS(1684), 1, + sym_constant_int, + ACTIONS(1686), 1, + sym_constant_float, + ACTIONS(1688), 1, + anon_sym_LPAREN, + ACTIONS(1690), 1, + anon_sym_LBRACK, + ACTIONS(1692), 1, + anon_sym__, + STATE(1372), 1, + sym_variant_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(21), 2, + anon_sym_true, + anon_sym_false, + STATE(1136), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + STATE(1211), 13, + sym__pattern, + sym_pattern_annot, + sym_pattern_or, + sym_pattern_record_concat, + sym_pattern_array_concat, + sym_pattern_paren, + sym_pattern_constant, + sym_pattern_name, + sym_pattern_variant, + sym_pattern_tuple, + sym_pattern_record, + sym_pattern_array, + sym_pattern_wild, + [77355] = 19, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1744), 1, + anon_sym_COMMA, + ACTIONS(1748), 1, + anon_sym_EQ, + STATE(1236), 1, + aux_sym__exprs_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1746), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [77424] = 19, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1752), 1, + anon_sym_LBRACE, + ACTIONS(1754), 1, + anon_sym_EQ, + ACTIONS(1760), 1, + anon_sym_DOT_DOT, + ACTIONS(1762), 1, + anon_sym_DOT_DOT_EQ, + STATE(1436), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1756), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1758), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [77492] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1774), 1, + anon_sym_RBRACE, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(976), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77552] = 19, + ACTIONS(1008), 1, + anon_sym_as, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1754), 1, + anon_sym_EQ, + ACTIONS(1760), 1, + anon_sym_DOT_DOT, + ACTIONS(1762), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1786), 1, + anon_sym_LBRACE, + STATE(1434), 1, + sym__as, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1756), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1758), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [77620] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1788), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(976), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77680] = 15, + ACTIONS(390), 1, + anon_sym_RBRACE, + ACTIONS(554), 1, + anon_sym_group, + ACTIONS(557), 1, + anon_sym_over, + ACTIONS(578), 1, + anon_sym_from, + ACTIONS(581), 1, + anon_sym_where, + ACTIONS(584), 1, + anon_sym_join, + ACTIONS(587), 1, + anon_sym_union, + ACTIONS(602), 1, + anon_sym_into, + ACTIONS(1790), 1, + anon_sym_roll, + ACTIONS(1793), 1, + anon_sym_compute, + ACTIONS(1796), 1, + anon_sym_select, + ACTIONS(1799), 1, + anon_sym_with, + ACTIONS(1802), 1, + anon_sym_order, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(976), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77740] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1805), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(978), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77800] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1807), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(976), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77860] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1809), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(973), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [77920] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1811), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [77984] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1813), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(985), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78044] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1815), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(987), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78104] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1807), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(984), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78164] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1817), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(976), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78224] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1819), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(976), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78284] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1819), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(975), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78344] = 15, + ACTIONS(608), 1, + anon_sym_from, + ACTIONS(610), 1, + anon_sym_where, + ACTIONS(612), 1, + anon_sym_join, + ACTIONS(614), 1, + anon_sym_union, + ACTIONS(616), 1, + anon_sym_group, + ACTIONS(618), 1, + anon_sym_over, + ACTIONS(628), 1, + anon_sym_into, + ACTIONS(1776), 1, + anon_sym_roll, + ACTIONS(1778), 1, + anon_sym_compute, + ACTIONS(1780), 1, + anon_sym_select, + ACTIONS(1782), 1, + anon_sym_with, + ACTIONS(1784), 1, + anon_sym_order, + ACTIONS(1821), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(976), 14, + aux_sym__query_stmts, + sym__query_stmt, + sym_query_from, + sym_query_where, + sym_query_join, + sym_query_union, + sym_query_group, + sym_query_over, + sym_query_roll, + sym_query_compute, + sym_query_select, + sym_query_val, + sym_query_into, + sym_query_order, + [78404] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1823), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78467] = 18, + ACTIONS(320), 1, + anon_sym_RBRACE, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1825), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78532] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1827), 1, + anon_sym_LBRACE, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + STATE(888), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78597] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1849), 1, + anon_sym_LBRACE, + STATE(452), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78662] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1849), 1, + anon_sym_LBRACE, + STATE(511), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78727] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1851), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78790] = 6, + ACTIONS(1704), 1, + anon_sym_LPAREN, + ACTIONS(1706), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1853), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + ACTIONS(1012), 10, + anon_sym_COLON, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1010), 12, + anon_sym_LBRACK, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [78831] = 18, + ACTIONS(342), 1, + anon_sym_RBRACE, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1825), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78896] = 16, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1760), 1, + anon_sym_DOT_DOT, + ACTIONS(1762), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1756), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 6, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [78957] = 16, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1760), 1, + anon_sym_DOT_DOT, + ACTIONS(1762), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1756), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 6, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79018] = 16, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1760), 1, + anon_sym_DOT_DOT, + ACTIONS(1762), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1756), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 6, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79079] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1825), 1, + anon_sym_SEMI, + ACTIONS(1855), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79144] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1857), 1, + anon_sym_COMMA, + ACTIONS(1859), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79209] = 14, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1756), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 7, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [79266] = 14, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1756), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 7, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [79323] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1827), 1, + anon_sym_LBRACE, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + STATE(894), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79388] = 9, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 6, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 13, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [79435] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1827), 1, + anon_sym_LBRACE, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + STATE(847), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79500] = 10, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 4, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 13, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [79549] = 12, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 11, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [79602] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1825), 1, + anon_sym_SEMI, + ACTIONS(1861), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79667] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1863), 1, + anon_sym_COMMA, + ACTIONS(1865), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79732] = 14, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1756), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 7, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [79789] = 13, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 9, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [79844] = 16, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1760), 1, + anon_sym_DOT_DOT, + ACTIONS(1762), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1756), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1764), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1766), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1768), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1770), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1772), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 6, + anon_sym_LBRACE, + anon_sym_as, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79905] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1825), 1, + anon_sym_SEMI, + ACTIONS(1867), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [79970] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1825), 1, + anon_sym_SEMI, + ACTIONS(1869), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80035] = 18, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1849), 1, + anon_sym_LBRACE, + STATE(490), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80100] = 18, + ACTIONS(338), 1, + anon_sym_RBRACE, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1825), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80165] = 18, + ACTIONS(328), 1, + anon_sym_RBRACE, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1825), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80230] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1871), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80292] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1873), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80354] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1875), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80416] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1877), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80478] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1879), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80540] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1881), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80602] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1883), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80664] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1825), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80726] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1885), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80788] = 9, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 6, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1166), 12, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [80834] = 10, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1168), 4, + anon_sym_EQ, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1166), 12, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + [80882] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1887), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [80944] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1889), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81006] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1891), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81068] = 14, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1286), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1284), 6, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [81124] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1893), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81186] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1895), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81248] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1897), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81310] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1899), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81372] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1901), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81434] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1903), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81496] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1905), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81558] = 16, + ACTIONS(1270), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1268), 5, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81618] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1907), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81680] = 16, + ACTIONS(1266), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1264), 5, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81740] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1909), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81802] = 16, + ACTIONS(1274), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1272), 5, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [81862] = 14, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1282), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1280), 6, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [81918] = 12, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 10, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + [81970] = 14, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 6, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + [82026] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1911), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82088] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1913), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82150] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1915), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82212] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1917), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82274] = 13, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1168), 2, + anon_sym_EQ, + anon_sym_DOT_DOT, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 8, + anon_sym_LBRACE, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + [82328] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1919), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82390] = 16, + ACTIONS(1168), 1, + anon_sym_EQ, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1166), 5, + anon_sym_LBRACE, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82450] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1921), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82512] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1923), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82574] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1925), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82636] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1927), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82698] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1929), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82760] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1931), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82822] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1933), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82884] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1935), 1, + anon_sym_on, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [82946] = 17, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1714), 1, + anon_sym_DOT, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1829), 1, + anon_sym_EQ, + ACTIONS(1835), 1, + anon_sym_DOT_DOT, + ACTIONS(1837), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1937), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1831), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1839), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1841), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1843), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1845), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1847), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1833), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [83008] = 4, + ACTIONS(1939), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1200), 9, + anon_sym_EQ, + anon_sym_DOT, + anon_sym_DOT_DOT, + anon_sym_LT, + anon_sym_GT, + anon_sym_PLUS, + anon_sym_DASH, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1198), 14, + anon_sym_LPAREN, + anon_sym_LBRACK, + anon_sym_or, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + anon_sym_DOT_DOT_EQ, + anon_sym_and, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_COLON_COLON, + [83043] = 16, + ACTIONS(1708), 1, + anon_sym_COLON, + ACTIONS(1710), 1, + anon_sym_LPAREN, + ACTIONS(1712), 1, + anon_sym_LBRACK, + ACTIONS(1716), 1, + anon_sym_COLON_COLON, + ACTIONS(1740), 1, + anon_sym_DOT_DOT, + ACTIONS(1742), 1, + anon_sym_DOT_DOT_EQ, + ACTIONS(1748), 1, + anon_sym_EQ, + ACTIONS(1941), 1, + anon_sym_DOT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1728), 2, + anon_sym_PLUS, + anon_sym_DASH, + ACTIONS(1730), 2, + anon_sym_STAR, + anon_sym_SLASH, + ACTIONS(1732), 2, + anon_sym_or, + anon_sym_and, + ACTIONS(1734), 2, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + ACTIONS(1736), 2, + anon_sym_LT, + anon_sym_GT, + ACTIONS(1738), 2, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + ACTIONS(1750), 4, + anon_sym_PLUS_EQ, + anon_sym_DASH_EQ, + anon_sym_STAR_EQ, + anon_sym_SLASH_EQ, + [83102] = 12, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1949), 1, + anon_sym_RPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + STATE(1129), 1, + sym_type_name, + STATE(1375), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83150] = 12, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1959), 1, + anon_sym_RPAREN, + STATE(1129), 1, + sym_type_name, + STATE(1476), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83198] = 12, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1961), 1, + anon_sym_RBRACK, + STATE(1129), 1, + sym_type_name, + STATE(1484), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83246] = 12, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1963), 1, + anon_sym_RPAREN, + STATE(1129), 1, + sym_type_name, + STATE(1499), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83294] = 12, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1965), 1, + anon_sym_RBRACK, + STATE(1129), 1, + sym_type_name, + STATE(1467), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83342] = 12, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1967), 1, + anon_sym_RPAREN, + STATE(1129), 1, + sym_type_name, + STATE(1380), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83390] = 12, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1969), 1, + anon_sym_RBRACK, + STATE(1129), 1, + sym_type_name, + STATE(1396), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83438] = 11, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + STATE(1129), 1, + sym_type_name, + STATE(1496), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83483] = 11, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + STATE(1129), 1, + sym_type_name, + STATE(1381), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83528] = 11, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + STATE(1129), 1, + sym_type_name, + STATE(1501), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83573] = 11, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1955), 1, + sym_type_never, + ACTIONS(1957), 1, + anon_sym__, + STATE(1129), 1, + sym_type_name, + STATE(1376), 1, + sym__types, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1152), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83618] = 11, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1971), 1, + anon_sym_RPAREN, + ACTIONS(1973), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1259), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83663] = 11, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1975), 1, + anon_sym_RPAREN, + ACTIONS(1977), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1260), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83708] = 11, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1979), 1, + anon_sym_RPAREN, + ACTIONS(1981), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1318), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83753] = 11, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1983), 1, + anon_sym_RPAREN, + ACTIONS(1985), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1299), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83798] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1987), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1182), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83840] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1989), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1169), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83882] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1991), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1304), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83924] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1993), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1333), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [83966] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1995), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1205), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84008] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1997), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1323), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84050] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1999), 1, + anon_sym_fun, + ACTIONS(2001), 1, + sym_type_never, + STATE(801), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(829), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84092] = 10, + ACTIONS(2003), 1, + sym_name, + ACTIONS(2005), 1, + anon_sym_LBRACE, + ACTIONS(2007), 1, + anon_sym_LPAREN, + ACTIONS(2009), 1, + anon_sym_LBRACK, + ACTIONS(2011), 1, + anon_sym_fun, + ACTIONS(2013), 1, + sym_type_never, + ACTIONS(2015), 1, + anon_sym__, + STATE(436), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(437), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84134] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2017), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1203), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84176] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2019), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1184), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84218] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2021), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1215), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84260] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1999), 1, + anon_sym_fun, + ACTIONS(2023), 1, + sym_type_never, + STATE(801), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(802), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84302] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2025), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1183), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84344] = 10, + ACTIONS(2003), 1, + sym_name, + ACTIONS(2005), 1, + anon_sym_LBRACE, + ACTIONS(2007), 1, + anon_sym_LPAREN, + ACTIONS(2009), 1, + anon_sym_LBRACK, + ACTIONS(2011), 1, + anon_sym_fun, + ACTIONS(2015), 1, + anon_sym__, + ACTIONS(2027), 1, + sym_type_never, + STATE(436), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(434), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84386] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2029), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1295), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84428] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2031), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1292), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84470] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2033), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1212), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84512] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1999), 1, + anon_sym_fun, + ACTIONS(2035), 1, + sym_type_never, + STATE(801), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(787), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84554] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2037), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1221), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84596] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1999), 1, + anon_sym_fun, + ACTIONS(2039), 1, + sym_type_never, + STATE(801), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(788), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84638] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2041), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1226), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84680] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2043), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1216), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84722] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2045), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1175), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84764] = 10, + ACTIONS(2003), 1, + sym_name, + ACTIONS(2005), 1, + anon_sym_LBRACE, + ACTIONS(2007), 1, + anon_sym_LPAREN, + ACTIONS(2009), 1, + anon_sym_LBRACK, + ACTIONS(2011), 1, + anon_sym_fun, + ACTIONS(2015), 1, + anon_sym__, + ACTIONS(2047), 1, + sym_type_never, + STATE(436), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(435), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84806] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2049), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1142), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84848] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2051), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1158), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84890] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2035), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(787), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84932] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2039), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(788), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [84974] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2053), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1191), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85016] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2055), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1325), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85058] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2057), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1162), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85100] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2059), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1156), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85142] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2061), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1166), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85184] = 10, + ACTIONS(2003), 1, + sym_name, + ACTIONS(2005), 1, + anon_sym_LBRACE, + ACTIONS(2007), 1, + anon_sym_LPAREN, + ACTIONS(2009), 1, + anon_sym_LBRACK, + ACTIONS(2011), 1, + anon_sym_fun, + ACTIONS(2015), 1, + anon_sym__, + ACTIONS(2063), 1, + sym_type_never, + STATE(436), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(430), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85226] = 10, + ACTIONS(2003), 1, + sym_name, + ACTIONS(2005), 1, + anon_sym_LBRACE, + ACTIONS(2007), 1, + anon_sym_LPAREN, + ACTIONS(2009), 1, + anon_sym_LBRACK, + ACTIONS(2011), 1, + anon_sym_fun, + ACTIONS(2015), 1, + anon_sym__, + ACTIONS(2065), 1, + sym_type_never, + STATE(436), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(429), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85268] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(1999), 1, + anon_sym_fun, + ACTIONS(2067), 1, + sym_type_never, + STATE(801), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(820), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85310] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2069), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1228), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85352] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2071), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1170), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85394] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2073), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1132), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85436] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2075), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1187), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85478] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2077), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1130), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85520] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2079), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1193), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85562] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2081), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1154), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85604] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2083), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1188), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85646] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2085), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1279), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85688] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2087), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1222), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85730] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2089), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1207), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85772] = 10, + ACTIONS(1943), 1, + sym_name, + ACTIONS(1945), 1, + anon_sym_LBRACE, + ACTIONS(1947), 1, + anon_sym_LPAREN, + ACTIONS(1951), 1, + anon_sym_LBRACK, + ACTIONS(1953), 1, + anon_sym_fun, + ACTIONS(1957), 1, + anon_sym__, + ACTIONS(2091), 1, + sym_type_never, + STATE(1129), 1, + sym_type_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + STATE(1161), 11, + sym__type, + sym_type_fun, + sym_type_record_concat, + sym_type_array_concat, + sym_type_paren, + sym_type_nominal, + sym_type_tuple, + sym_type_record, + sym_type_array, + sym_type_unit, + sym_type_wild, + [85814] = 4, + ACTIONS(906), 1, + anon_sym_EQ, + ACTIONS(2093), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(904), 12, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [85839] = 5, + ACTIONS(902), 1, + anon_sym_EQ, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(900), 10, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [85865] = 4, + ACTIONS(2103), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2099), 2, + anon_sym_LBRACE, + anon_sym_LPAREN, + ACTIONS(2101), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [85889] = 5, + ACTIONS(910), 1, + anon_sym_EQ, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(908), 10, + anon_sym_LBRACE, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_SEMI, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [85915] = 8, + ACTIONS(17), 1, + sym_string_quote, + ACTIONS(19), 1, + anon_sym_SQUOTE, + ACTIONS(2105), 1, + sym_constant_int, + ACTIONS(2107), 1, + sym_constant_float, + ACTIONS(2111), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2109), 2, + anon_sym_true, + anon_sym_false, + STATE(1369), 5, + sym__constant, + sym_constant_string, + sym_constant_char, + sym_constant_bool, + sym_constant_unit, + [85946] = 3, + ACTIONS(2115), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2113), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [85966] = 3, + ACTIONS(2119), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2117), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [85986] = 3, + ACTIONS(2123), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2121), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86006] = 3, + ACTIONS(2127), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2125), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86026] = 3, + ACTIONS(2131), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2129), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86046] = 3, + ACTIONS(2135), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2133), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86066] = 3, + ACTIONS(2139), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2137), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86086] = 3, + ACTIONS(2143), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2141), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86106] = 5, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2147), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2145), 8, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86130] = 3, + ACTIONS(2151), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2149), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86150] = 3, + ACTIONS(2155), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2153), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86170] = 3, + ACTIONS(2159), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2157), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86190] = 3, + ACTIONS(2163), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2161), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86210] = 3, + ACTIONS(2167), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2165), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86230] = 3, + ACTIONS(2171), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2169), 10, + anon_sym_RBRACE, + anon_sym_COMMA, + anon_sym_COLON, + anon_sym_RPAREN, + anon_sym_RBRACK, + anon_sym_AMP, + anon_sym_PLUS_PLUS, + anon_sym_or, + anon_sym_in, + anon_sym_EQ_GT, + [86250] = 8, + ACTIONS(2173), 1, + anon_sym_COMMA, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + STATE(1251), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2177), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [86277] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2185), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [86299] = 7, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2187), 1, + anon_sym_COMMA, + ACTIONS(2189), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86322] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2191), 1, + anon_sym_COMMA, + STATE(1267), 1, + aux_sym__types_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2193), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [86343] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2195), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [86364] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2197), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86384] = 5, + ACTIONS(2201), 1, + anon_sym_LBRACE, + ACTIONS(2203), 1, + anon_sym_RBRACE, + ACTIONS(2205), 1, + aux_sym__rust_token1, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1223), 2, + sym__rust, + aux_sym__rust_repeat1, + [86402] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2209), 1, + anon_sym_EQ, + STATE(840), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86422] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2211), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86442] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2213), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86462] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2215), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86482] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2217), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86502] = 6, + ACTIONS(1827), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2219), 1, + anon_sym_EQ, + STATE(886), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86522] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2221), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86542] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2223), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86562] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2225), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86582] = 5, + ACTIONS(2227), 1, + sym_string_quote, + ACTIONS(2229), 1, + sym_string_content, + ACTIONS(2231), 1, + anon_sym_DOLLAR, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1197), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [86600] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2233), 1, + anon_sym_EQ, + STATE(845), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86620] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2235), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86640] = 5, + ACTIONS(2201), 1, + anon_sym_LBRACE, + ACTIONS(2237), 1, + anon_sym_RBRACE, + ACTIONS(2239), 1, + aux_sym__rust_token1, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1227), 2, + sym__rust, + aux_sym__rust_repeat1, + [86658] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2241), 1, + anon_sym_EQ, + STATE(819), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86678] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2243), 3, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_RBRACK, + [86694] = 5, + ACTIONS(2245), 1, + sym_string_quote, + ACTIONS(2247), 1, + sym_string_content, + ACTIONS(2250), 1, + anon_sym_DOLLAR, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1171), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [86712] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2253), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86732] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2255), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86752] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2257), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86772] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2259), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86792] = 5, + ACTIONS(2201), 1, + anon_sym_LBRACE, + ACTIONS(2261), 1, + anon_sym_RBRACE, + ACTIONS(2263), 1, + aux_sym__rust_token1, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1192), 2, + sym__rust, + aux_sym__rust_repeat1, + [86810] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2265), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86830] = 5, + ACTIONS(2231), 1, + anon_sym_DOLLAR, + ACTIONS(2267), 1, + sym_string_quote, + ACTIONS(2269), 1, + sym_string_content, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1171), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [86848] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2271), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86868] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2273), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86888] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2275), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86908] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2277), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86928] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2279), 1, + anon_sym_EQ, + STATE(822), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86948] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2281), 1, + anon_sym_EQ, + STATE(832), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86968] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2283), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [86988] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2285), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87008] = 6, + ACTIONS(1827), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2287), 1, + anon_sym_EQ, + STATE(886), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87028] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2289), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87048] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2291), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87068] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2293), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87088] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2295), 1, + anon_sym_EQ, + STATE(833), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87108] = 5, + ACTIONS(2297), 1, + anon_sym_LBRACE, + ACTIONS(2300), 1, + anon_sym_RBRACE, + ACTIONS(2302), 1, + aux_sym__rust_token1, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1192), 2, + sym__rust, + aux_sym__rust_repeat1, + [87126] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2305), 1, + anon_sym_EQ, + STATE(835), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87146] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2307), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87166] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2309), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87186] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2311), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87206] = 5, + ACTIONS(2231), 1, + anon_sym_DOLLAR, + ACTIONS(2269), 1, + sym_string_content, + ACTIONS(2313), 1, + sym_string_quote, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1171), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [87224] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2315), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87244] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2317), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87264] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2319), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87284] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2321), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87304] = 5, + ACTIONS(2201), 1, + anon_sym_LBRACE, + ACTIONS(2323), 1, + anon_sym_RBRACE, + ACTIONS(2325), 1, + aux_sym__rust_token1, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1176), 2, + sym__rust, + aux_sym__rust_repeat1, + [87322] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2327), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87342] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2329), 1, + anon_sym_EQ_GT, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87362] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2331), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87382] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2333), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87402] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2335), 1, + anon_sym_EQ, + STATE(839), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87422] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2337), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87442] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2339), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87462] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2341), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87482] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2343), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87502] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2345), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87522] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2347), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87542] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2349), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87562] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2351), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87582] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2353), 1, + anon_sym_EQ, + STATE(810), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87602] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2355), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87622] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2357), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87642] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2359), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87662] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2361), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87682] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2363), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87702] = 6, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2365), 1, + anon_sym_EQ, + STATE(485), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87722] = 5, + ACTIONS(2201), 1, + anon_sym_LBRACE, + ACTIONS(2263), 1, + aux_sym__rust_token1, + ACTIONS(2367), 1, + anon_sym_RBRACE, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1192), 2, + sym__rust, + aux_sym__rust_repeat1, + [87740] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2369), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87760] = 5, + ACTIONS(2231), 1, + anon_sym_DOLLAR, + ACTIONS(2371), 1, + sym_string_quote, + ACTIONS(2373), 1, + sym_string_content, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1178), 2, + sym_string_interpolation, + aux_sym_constant_string_repeat1, + [87778] = 6, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2375), 1, + anon_sym_EQ, + STATE(827), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87798] = 5, + ACTIONS(2201), 1, + anon_sym_LBRACE, + ACTIONS(2263), 1, + aux_sym__rust_token1, + ACTIONS(2377), 1, + anon_sym_RBRACE, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + STATE(1192), 2, + sym__rust, + aux_sym__rust_repeat1, + [87816] = 6, + ACTIONS(1827), 1, + anon_sym_LBRACE, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2379), 1, + anon_sym_EQ, + STATE(886), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87836] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2381), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87856] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2383), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87876] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2385), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87896] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2387), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87916] = 6, + ACTIONS(2175), 1, + anon_sym_COLON, + ACTIONS(2179), 1, + anon_sym_AMP, + ACTIONS(2181), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2183), 1, + anon_sym_or, + ACTIONS(2389), 1, + anon_sym_in, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87936] = 5, + ACTIONS(2391), 1, + anon_sym_DASH_DASH_DASH, + ACTIONS(2393), 1, + aux_sym_code_token1, + STATE(1322), 1, + aux_sym_code_repeat1, + STATE(1480), 1, + sym_code, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [87953] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2295), 1, + anon_sym_EQ, + ACTIONS(2395), 1, + anon_sym_COLON, + STATE(833), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [87970] = 4, + ACTIONS(1744), 1, + anon_sym_COMMA, + STATE(1275), 1, + aux_sym__exprs_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2397), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [87985] = 5, + ACTIONS(2399), 1, + sym_name, + ACTIONS(2401), 1, + anon_sym_RBRACK, + STATE(1328), 1, + sym_generic, + STATE(1441), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88002] = 5, + ACTIONS(2399), 1, + sym_name, + ACTIONS(2403), 1, + anon_sym_RBRACK, + STATE(1328), 1, + sym_generic, + STATE(1391), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88019] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2405), 1, + anon_sym_COLON, + ACTIONS(2407), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88036] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2375), 1, + anon_sym_EQ, + ACTIONS(2409), 1, + anon_sym_COLON, + STATE(827), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88053] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2411), 1, + anon_sym_COLON, + ACTIONS(2413), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88070] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2281), 1, + anon_sym_EQ, + ACTIONS(2415), 1, + anon_sym_COLON, + STATE(832), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88087] = 5, + ACTIONS(1827), 1, + anon_sym_LBRACE, + ACTIONS(2417), 1, + anon_sym_COLON, + ACTIONS(2419), 1, + anon_sym_EQ, + STATE(851), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88104] = 4, + ACTIONS(2421), 1, + anon_sym_COMMA, + STATE(1244), 1, + aux_sym__types_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2243), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [88119] = 4, + ACTIONS(2424), 1, + anon_sym_COMMA, + STATE(1245), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2185), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [88134] = 5, + ACTIONS(1827), 1, + anon_sym_LBRACE, + ACTIONS(2427), 1, + anon_sym_COLON, + ACTIONS(2429), 1, + anon_sym_EQ, + STATE(851), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88151] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2279), 1, + anon_sym_EQ, + ACTIONS(2431), 1, + anon_sym_COLON, + STATE(822), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88168] = 5, + ACTIONS(1726), 1, + anon_sym_RBRACE, + ACTIONS(2433), 1, + sym_name, + STATE(1290), 1, + sym_pattern_field, + STATE(1494), 1, + sym__pattern_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88185] = 5, + ACTIONS(2435), 1, + sym_name, + ACTIONS(2437), 1, + anon_sym_RBRACE, + STATE(1310), 1, + sym_attribute, + STATE(1505), 1, + sym__attributes, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88202] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2439), 1, + anon_sym_COLON, + ACTIONS(2441), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88219] = 4, + ACTIONS(2173), 1, + anon_sym_COMMA, + STATE(1245), 1, + aux_sym__patterns_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2443), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [88234] = 5, + ACTIONS(1827), 1, + anon_sym_LBRACE, + ACTIONS(2445), 1, + anon_sym_COLON, + ACTIONS(2447), 1, + anon_sym_EQ, + STATE(851), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88251] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2353), 1, + anon_sym_EQ, + ACTIONS(2449), 1, + anon_sym_COLON, + STATE(810), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88268] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2451), 1, + anon_sym_COLON, + ACTIONS(2453), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88285] = 5, + ACTIONS(2433), 1, + sym_name, + ACTIONS(2455), 1, + anon_sym_RBRACE, + STATE(1290), 1, + sym_pattern_field, + STATE(1420), 1, + sym__pattern_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88302] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2457), 1, + anon_sym_COLON, + ACTIONS(2459), 1, + anon_sym_EQ, + STATE(808), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88319] = 5, + ACTIONS(1963), 1, + anon_sym_RBRACE, + ACTIONS(2461), 1, + sym_name, + STATE(1313), 1, + sym_type_field, + STATE(1393), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88336] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2463), 1, + anon_sym_COLON, + ACTIONS(2465), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88353] = 5, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2467), 1, + anon_sym_COMMA, + ACTIONS(2469), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88370] = 5, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2471), 1, + anon_sym_COMMA, + ACTIONS(2473), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88387] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2475), 1, + anon_sym_COLON, + ACTIONS(2477), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88404] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2479), 1, + anon_sym_COLON, + ACTIONS(2481), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88421] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2483), 1, + anon_sym_COLON, + ACTIONS(2485), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88438] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2487), 1, + anon_sym_COLON, + ACTIONS(2489), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88455] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2491), 1, + anon_sym_COLON, + ACTIONS(2493), 1, + anon_sym_EQ, + STATE(809), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88472] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2495), 1, + anon_sym_COLON, + ACTIONS(2497), 1, + anon_sym_EQ, + STATE(817), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88489] = 4, + ACTIONS(2191), 1, + anon_sym_COMMA, + STATE(1244), 1, + aux_sym__types_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2499), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [88504] = 5, + ACTIONS(2399), 1, + sym_name, + ACTIONS(2501), 1, + anon_sym_RBRACK, + STATE(1328), 1, + sym_generic, + STATE(1459), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88521] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2503), 1, + anon_sym_COLON, + ACTIONS(2505), 1, + anon_sym_EQ, + STATE(797), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88538] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2507), 1, + anon_sym_COLON, + ACTIONS(2509), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88555] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2511), 1, + anon_sym_COLON, + ACTIONS(2513), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88572] = 5, + ACTIONS(2399), 1, + sym_name, + ACTIONS(2515), 1, + anon_sym_RBRACK, + STATE(1328), 1, + sym_generic, + STATE(1413), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88589] = 5, + ACTIONS(2399), 1, + sym_name, + ACTIONS(2517), 1, + anon_sym_RBRACK, + STATE(1328), 1, + sym_generic, + STATE(1431), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88606] = 5, + ACTIONS(2399), 1, + sym_name, + ACTIONS(2519), 1, + anon_sym_RBRACK, + STATE(1328), 1, + sym_generic, + STATE(1415), 1, + sym__generics, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88623] = 4, + ACTIONS(2521), 1, + anon_sym_COMMA, + STATE(1275), 1, + aux_sym__exprs_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(1811), 2, + anon_sym_RPAREN, + anon_sym_RBRACK, + [88638] = 4, + ACTIONS(2526), 1, + anon_sym_LBRACE, + ACTIONS(2528), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2524), 2, + sym_name, + anon_sym_RBRACE, + [88653] = 5, + ACTIONS(1849), 1, + anon_sym_LBRACE, + ACTIONS(2530), 1, + anon_sym_COLON, + ACTIONS(2532), 1, + anon_sym_EQ, + STATE(493), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88670] = 5, + ACTIONS(2207), 1, + anon_sym_LBRACE, + ACTIONS(2209), 1, + anon_sym_EQ, + ACTIONS(2534), 1, + anon_sym_COLON, + STATE(840), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88687] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2536), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [88702] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2540), 1, + anon_sym_RBRACE, + STATE(1329), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88716] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2542), 1, + anon_sym_RBRACE, + STATE(1329), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88730] = 4, + ACTIONS(2461), 1, + sym_name, + STATE(1313), 1, + sym_type_field, + STATE(1493), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88744] = 3, + ACTIONS(1038), 1, + aux_sym__rust_token1, + ACTIONS(1036), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [88756] = 3, + ACTIONS(968), 1, + sym_string_content, + ACTIONS(966), 2, + sym_string_quote, + anon_sym_DOLLAR, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [88768] = 4, + ACTIONS(2544), 1, + anon_sym_RBRACE, + ACTIONS(2546), 1, + anon_sym_COMMA, + STATE(1285), 1, + aux_sym__expr_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88782] = 4, + ACTIONS(2549), 1, + anon_sym_LBRACE, + STATE(494), 1, + sym__rust, + STATE(496), 1, + sym_rust, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88796] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2551), 1, + anon_sym_RBRACE, + STATE(1307), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88810] = 4, + ACTIONS(2553), 1, + anon_sym_RBRACE, + ACTIONS(2555), 1, + anon_sym_COMMA, + STATE(1288), 1, + aux_sym__attributes_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88824] = 4, + ACTIONS(2558), 1, + anon_sym_RBRACE, + ACTIONS(2560), 1, + anon_sym_COMMA, + STATE(1300), 1, + aux_sym__arms_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88838] = 4, + ACTIONS(2562), 1, + anon_sym_RBRACE, + ACTIONS(2564), 1, + anon_sym_COMMA, + STATE(1298), 1, + aux_sym__pattern_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88852] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2566), 1, + anon_sym_RBRACE, + STATE(1280), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88866] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2568), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88880] = 4, + ACTIONS(2570), 1, + anon_sym_RBRACE, + ACTIONS(2572), 1, + anon_sym_COMMA, + STATE(1311), 1, + aux_sym__type_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88894] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2574), 1, + anon_sym_RBRACE, + STATE(1329), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88908] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2576), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88922] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2578), 1, + anon_sym_RBRACE, + STATE(1329), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88936] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2580), 1, + anon_sym_RBRACE, + STATE(1294), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88950] = 4, + ACTIONS(2564), 1, + anon_sym_COMMA, + ACTIONS(2582), 1, + anon_sym_RBRACE, + STATE(1330), 1, + aux_sym__pattern_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88964] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2584), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88978] = 4, + ACTIONS(2560), 1, + anon_sym_COMMA, + ACTIONS(2586), 1, + anon_sym_RBRACE, + STATE(1303), 1, + aux_sym__arms_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [88992] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2588), 3, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + [89002] = 3, + ACTIONS(2592), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2590), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89014] = 4, + ACTIONS(2594), 1, + anon_sym_RBRACE, + ACTIONS(2596), 1, + anon_sym_COMMA, + STATE(1303), 1, + aux_sym__arms_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89028] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2599), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89042] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2601), 3, + anon_sym_def, + anon_sym_type, + anon_sym_enum, + [89052] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2603), 1, + anon_sym_RBRACE, + STATE(1326), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89066] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2605), 1, + anon_sym_RBRACE, + STATE(1329), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89080] = 4, + ACTIONS(2461), 1, + sym_name, + STATE(1313), 1, + sym_type_field, + STATE(1507), 1, + sym__type_fields, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89094] = 4, + ACTIONS(2607), 1, + anon_sym_RBRACE, + ACTIONS(2609), 1, + anon_sym_COMMA, + STATE(1288), 1, + aux_sym__attributes_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89108] = 4, + ACTIONS(2609), 1, + anon_sym_COMMA, + ACTIONS(2611), 1, + anon_sym_RBRACE, + STATE(1309), 1, + aux_sym__attributes_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89122] = 4, + ACTIONS(2613), 1, + anon_sym_RBRACE, + ACTIONS(2615), 1, + anon_sym_COMMA, + STATE(1311), 1, + aux_sym__type_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89136] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2618), 1, + anon_sym_RBRACE, + STATE(1281), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89150] = 4, + ACTIONS(2572), 1, + anon_sym_COMMA, + ACTIONS(2620), 1, + anon_sym_RBRACE, + STATE(1293), 1, + aux_sym__type_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89164] = 4, + ACTIONS(2622), 1, + anon_sym_RBRACE, + ACTIONS(2624), 1, + anon_sym_COMMA, + STATE(1285), 1, + aux_sym__expr_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89178] = 4, + ACTIONS(2626), 1, + anon_sym_LBRACE, + STATE(877), 1, + sym__rust, + STATE(878), 1, + sym_rust, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89192] = 3, + ACTIONS(2630), 1, + sym_string_content, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2628), 2, + sym_string_quote, + anon_sym_DOLLAR, + [89204] = 4, + ACTIONS(2632), 1, + anon_sym_COMMA, + ACTIONS(2634), 1, + anon_sym_RBRACK, + STATE(1319), 1, + aux_sym__generics_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89218] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2636), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89232] = 4, + ACTIONS(2638), 1, + anon_sym_COMMA, + ACTIONS(2641), 1, + anon_sym_RBRACK, + STATE(1319), 1, + aux_sym__generics_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89246] = 4, + ACTIONS(2643), 1, + anon_sym_DASH_DASH_DASH, + ACTIONS(2645), 1, + aux_sym_code_token1, + STATE(1320), 1, + aux_sym_code_repeat1, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [89260] = 3, + ACTIONS(1084), 1, + aux_sym__rust_token1, + ACTIONS(1082), 2, + anon_sym_LBRACE, + anon_sym_RBRACE, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [89272] = 4, + ACTIONS(2648), 1, + anon_sym_DASH_DASH_DASH, + ACTIONS(2650), 1, + aux_sym_code_token1, + STATE(1320), 1, + aux_sym_code_repeat1, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [89286] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2652), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89300] = 3, + ACTIONS(2656), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2654), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89312] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2658), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89326] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2660), 1, + anon_sym_RBRACE, + STATE(1329), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89340] = 3, + ACTIONS(976), 1, + sym_string_content, + ACTIONS(974), 2, + sym_string_quote, + anon_sym_DOLLAR, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [89352] = 4, + ACTIONS(2632), 1, + anon_sym_COMMA, + ACTIONS(2662), 1, + anon_sym_RBRACK, + STATE(1317), 1, + aux_sym__generics_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89366] = 4, + ACTIONS(2664), 1, + sym_name, + ACTIONS(2667), 1, + anon_sym_RBRACE, + STATE(1329), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89380] = 4, + ACTIONS(2669), 1, + anon_sym_RBRACE, + ACTIONS(2671), 1, + anon_sym_COMMA, + STATE(1330), 1, + aux_sym__pattern_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89394] = 4, + ACTIONS(2624), 1, + anon_sym_COMMA, + ACTIONS(2674), 1, + anon_sym_RBRACE, + STATE(1314), 1, + aux_sym__expr_fields_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89408] = 4, + ACTIONS(2538), 1, + sym_name, + ACTIONS(2676), 1, + anon_sym_RBRACE, + STATE(1296), 1, + aux_sym_stmt_enum_repeat1, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89422] = 4, + ACTIONS(2095), 1, + anon_sym_AMP, + ACTIONS(2097), 1, + anon_sym_PLUS_PLUS, + ACTIONS(2678), 1, + anon_sym_SEMI, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89436] = 3, + ACTIONS(980), 1, + sym_string_content, + ACTIONS(978), 2, + sym_string_quote, + anon_sym_DOLLAR, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [89448] = 4, + ACTIONS(2680), 1, + sym_name, + ACTIONS(2682), 1, + anon_sym_LBRACE, + STATE(1316), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89462] = 4, + ACTIONS(2684), 1, + anon_sym_def, + ACTIONS(2686), 1, + anon_sym_type, + ACTIONS(2688), 1, + anon_sym_enum, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89476] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2690), 2, + anon_sym_rust, + anon_sym_python, + [89485] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2544), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89494] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2692), 2, + sym_name, + anon_sym_RBRACE, + [89503] = 3, + ACTIONS(2694), 1, + sym_name, + ACTIONS(2696), 1, + sym_index, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89514] = 3, + ACTIONS(2435), 1, + sym_name, + STATE(1368), 1, + sym_attribute, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89525] = 3, + ACTIONS(1827), 1, + anon_sym_LBRACE, + STATE(1477), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89536] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2641), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [89545] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2594), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89554] = 3, + ACTIONS(2698), 1, + sym_name, + ACTIONS(2700), 1, + sym_index, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89565] = 3, + ACTIONS(1827), 1, + anon_sym_LBRACE, + STATE(852), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89576] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2702), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [89585] = 3, + ACTIONS(1827), 1, + anon_sym_LBRACE, + STATE(885), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89596] = 3, + ACTIONS(2700), 1, + sym_index, + ACTIONS(2704), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89607] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2706), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89616] = 3, + ACTIONS(2461), 1, + sym_name, + STATE(1363), 1, + sym_type_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89627] = 3, + ACTIONS(1849), 1, + anon_sym_LBRACE, + STATE(467), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89638] = 3, + ACTIONS(1849), 1, + anon_sym_LBRACE, + STATE(488), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89649] = 3, + ACTIONS(1849), 1, + anon_sym_LBRACE, + STATE(489), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89660] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2669), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89669] = 3, + ACTIONS(2708), 1, + anon_sym_LPAREN, + ACTIONS(2710), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89680] = 3, + ACTIONS(2712), 1, + anon_sym_LBRACK, + ACTIONS(2714), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89691] = 3, + ACTIONS(2716), 1, + anon_sym_LBRACE, + ACTIONS(2718), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89702] = 3, + ACTIONS(2720), 1, + anon_sym_LBRACK, + ACTIONS(2722), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89713] = 3, + ACTIONS(1827), 1, + anon_sym_LBRACE, + STATE(1444), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89724] = 3, + ACTIONS(1827), 1, + anon_sym_LBRACE, + STATE(870), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89735] = 3, + ACTIONS(1849), 1, + anon_sym_LBRACE, + STATE(492), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89746] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2613), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89755] = 3, + ACTIONS(1849), 1, + anon_sym_LBRACE, + STATE(469), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89766] = 3, + ACTIONS(2724), 1, + anon_sym_LBRACE, + ACTIONS(2726), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89777] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2728), 2, + sym_name, + anon_sym_RBRACE, + [89786] = 3, + ACTIONS(1827), 1, + anon_sym_LBRACE, + STATE(873), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89797] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2553), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89806] = 2, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + ACTIONS(2730), 2, + anon_sym_RBRACE, + anon_sym_COMMA, + [89815] = 3, + ACTIONS(1827), 1, + anon_sym_LBRACE, + STATE(893), 1, + sym_block, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89826] = 3, + ACTIONS(2732), 1, + anon_sym_LPAREN, + ACTIONS(2734), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89837] = 3, + ACTIONS(2736), 1, + anon_sym_LBRACE, + ACTIONS(2738), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89848] = 3, + ACTIONS(2433), 1, + sym_name, + STATE(1355), 1, + sym_pattern_field, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89859] = 3, + ACTIONS(2399), 1, + sym_name, + STATE(1343), 1, + sym_generic, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89870] = 2, + ACTIONS(2740), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89878] = 2, + ACTIONS(2742), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89886] = 2, + ACTIONS(2744), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89894] = 2, + ACTIONS(2746), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89902] = 2, + ACTIONS(2748), 1, + ts_builtin_sym_end, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89910] = 2, + ACTIONS(2750), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89918] = 2, + ACTIONS(2752), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89926] = 2, + ACTIONS(2754), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89934] = 2, + ACTIONS(2756), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89942] = 2, + ACTIONS(2758), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89950] = 2, + ACTIONS(2760), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89958] = 2, + ACTIONS(2762), 1, + anon_sym_SQUOTE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89966] = 2, + ACTIONS(2764), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89974] = 2, + ACTIONS(2766), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89982] = 2, + ACTIONS(2768), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89990] = 2, + ACTIONS(2770), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [89998] = 2, + ACTIONS(2772), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90006] = 2, + ACTIONS(2774), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90014] = 2, + ACTIONS(2776), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90022] = 2, + ACTIONS(2778), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90030] = 2, + ACTIONS(2780), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90038] = 2, + ACTIONS(2782), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90046] = 2, + ACTIONS(2784), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90054] = 2, + ACTIONS(2786), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90062] = 2, + ACTIONS(2788), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90070] = 2, + ACTIONS(2790), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90078] = 2, + ACTIONS(2792), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90086] = 2, + ACTIONS(2794), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90094] = 2, + ACTIONS(2796), 1, + anon_sym_finally, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90102] = 2, + ACTIONS(2798), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90110] = 2, + ACTIONS(2800), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90118] = 2, + ACTIONS(2802), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90126] = 2, + ACTIONS(2804), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90134] = 2, + ACTIONS(2806), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90142] = 2, + ACTIONS(2808), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90150] = 2, + ACTIONS(2810), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90158] = 2, + ACTIONS(2812), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90166] = 2, + ACTIONS(2814), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90174] = 2, + ACTIONS(2816), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90182] = 2, + ACTIONS(2818), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90190] = 2, + ACTIONS(2820), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90198] = 2, + ACTIONS(2822), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90206] = 2, + ACTIONS(2824), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90214] = 2, + ACTIONS(2826), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90222] = 2, + ACTIONS(2828), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90230] = 2, + ACTIONS(2830), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90238] = 2, + ACTIONS(2832), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90246] = 2, + ACTIONS(2834), 1, + anon_sym_finally, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90254] = 2, + ACTIONS(2836), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90262] = 2, + ACTIONS(2838), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90270] = 2, + ACTIONS(380), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90278] = 2, + ACTIONS(2840), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90286] = 2, + ACTIONS(2842), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90294] = 2, + ACTIONS(2844), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90302] = 2, + ACTIONS(2846), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90310] = 2, + ACTIONS(2848), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90318] = 2, + ACTIONS(2850), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90326] = 2, + ACTIONS(2852), 1, + anon_sym_finally, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90334] = 2, + ACTIONS(2854), 1, + anon_sym_SQUOTE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90342] = 2, + ACTIONS(2856), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90350] = 2, + ACTIONS(2858), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90358] = 2, + ACTIONS(2860), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90366] = 2, + ACTIONS(2862), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90374] = 2, + ACTIONS(2864), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90382] = 2, + ACTIONS(2866), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90390] = 2, + ACTIONS(2868), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90398] = 2, + ACTIONS(2870), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90406] = 2, + ACTIONS(2872), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90414] = 2, + ACTIONS(2874), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90422] = 2, + ACTIONS(2876), 1, + anon_sym_catch, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90430] = 2, + ACTIONS(2878), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90438] = 2, + ACTIONS(2880), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90446] = 2, + ACTIONS(2882), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90454] = 2, + ACTIONS(2884), 1, + aux_sym_constant_char_token1, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [90462] = 2, + ACTIONS(2886), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90470] = 2, + ACTIONS(2888), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90478] = 2, + ACTIONS(2890), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90486] = 2, + ACTIONS(2892), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90494] = 2, + ACTIONS(2894), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90502] = 2, + ACTIONS(2896), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90510] = 2, + ACTIONS(2898), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90518] = 2, + ACTIONS(2900), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90526] = 2, + ACTIONS(2902), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90534] = 2, + ACTIONS(2904), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90542] = 2, + ACTIONS(2906), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90550] = 2, + ACTIONS(2908), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90558] = 2, + ACTIONS(2910), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90566] = 2, + ACTIONS(2912), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90574] = 2, + ACTIONS(2914), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90582] = 2, + ACTIONS(2916), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90590] = 2, + ACTIONS(2918), 1, + anon_sym_COLON, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90598] = 2, + ACTIONS(2920), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90606] = 2, + ACTIONS(2922), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90614] = 2, + ACTIONS(2924), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90622] = 2, + ACTIONS(2926), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90630] = 2, + ACTIONS(2928), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90638] = 2, + ACTIONS(2930), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90646] = 2, + ACTIONS(2932), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90654] = 2, + ACTIONS(2934), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90662] = 2, + ACTIONS(2936), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90670] = 2, + ACTIONS(2938), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90678] = 2, + ACTIONS(2940), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90686] = 2, + ACTIONS(2942), 1, + anon_sym_catch, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90694] = 2, + ACTIONS(2944), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90702] = 2, + ACTIONS(2946), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90710] = 2, + ACTIONS(2948), 1, + anon_sym_DASH_DASH_DASH, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90718] = 2, + ACTIONS(2950), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90726] = 2, + ACTIONS(2952), 1, + sym_name, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90734] = 2, + ACTIONS(1720), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90742] = 2, + ACTIONS(2954), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90750] = 2, + ACTIONS(2956), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90758] = 2, + ACTIONS(2958), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90766] = 2, + ACTIONS(2960), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90774] = 2, + ACTIONS(2962), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90782] = 2, + ACTIONS(2964), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90790] = 2, + ACTIONS(2966), 1, + aux_sym_constant_char_token1, + ACTIONS(2199), 2, + sym__whitespace, + sym_line_comment, + [90798] = 2, + ACTIONS(2968), 1, + anon_sym_finally, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90806] = 2, + ACTIONS(2970), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90814] = 2, + ACTIONS(2972), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90822] = 2, + ACTIONS(2974), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90830] = 2, + ACTIONS(2976), 1, + anon_sym_LBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90838] = 2, + ACTIONS(2978), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90846] = 2, + ACTIONS(2980), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90854] = 2, + ACTIONS(2982), 1, + anon_sym_LBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90862] = 2, + ACTIONS(2776), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90870] = 2, + ACTIONS(2984), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90878] = 2, + ACTIONS(2986), 1, + anon_sym_RBRACK, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90886] = 2, + ACTIONS(2988), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90894] = 2, + ACTIONS(2990), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90902] = 2, + ACTIONS(2992), 1, + anon_sym_EQ, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90910] = 2, + ACTIONS(2994), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90918] = 2, + ACTIONS(2996), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90926] = 2, + ACTIONS(2998), 1, + anon_sym_RBRACE, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90934] = 2, + ACTIONS(3000), 1, + anon_sym_LPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90942] = 2, + ACTIONS(1702), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, + [90950] = 2, + ACTIONS(2974), 1, + anon_sym_RPAREN, + ACTIONS(3), 2, + sym__whitespace, + sym_line_comment, +}; + +static const uint32_t ts_small_parse_table_map[] = { + [SMALL_STATE(44)] = 0, + [SMALL_STATE(45)] = 122, + [SMALL_STATE(46)] = 243, + [SMALL_STATE(47)] = 364, + [SMALL_STATE(48)] = 485, + [SMALL_STATE(49)] = 606, + [SMALL_STATE(50)] = 727, + [SMALL_STATE(51)] = 848, + [SMALL_STATE(52)] = 969, + [SMALL_STATE(53)] = 1090, + [SMALL_STATE(54)] = 1211, + [SMALL_STATE(55)] = 1332, + [SMALL_STATE(56)] = 1453, + [SMALL_STATE(57)] = 1574, + [SMALL_STATE(58)] = 1692, + [SMALL_STATE(59)] = 1810, + [SMALL_STATE(60)] = 1880, + [SMALL_STATE(61)] = 1950, + [SMALL_STATE(62)] = 2044, + [SMALL_STATE(63)] = 2159, + [SMALL_STATE(64)] = 2274, + [SMALL_STATE(65)] = 2389, + [SMALL_STATE(66)] = 2504, + [SMALL_STATE(67)] = 2619, + [SMALL_STATE(68)] = 2734, + [SMALL_STATE(69)] = 2849, + [SMALL_STATE(70)] = 2964, + [SMALL_STATE(71)] = 3079, + [SMALL_STATE(72)] = 3194, + [SMALL_STATE(73)] = 3309, + [SMALL_STATE(74)] = 3424, + [SMALL_STATE(75)] = 3539, + [SMALL_STATE(76)] = 3654, + [SMALL_STATE(77)] = 3769, + [SMALL_STATE(78)] = 3884, + [SMALL_STATE(79)] = 3999, + [SMALL_STATE(80)] = 4114, + [SMALL_STATE(81)] = 4229, + [SMALL_STATE(82)] = 4344, + [SMALL_STATE(83)] = 4459, + [SMALL_STATE(84)] = 4574, + [SMALL_STATE(85)] = 4689, + [SMALL_STATE(86)] = 4804, + [SMALL_STATE(87)] = 4919, + [SMALL_STATE(88)] = 5034, + [SMALL_STATE(89)] = 5149, + [SMALL_STATE(90)] = 5264, + [SMALL_STATE(91)] = 5379, + [SMALL_STATE(92)] = 5494, + [SMALL_STATE(93)] = 5609, + [SMALL_STATE(94)] = 5724, + [SMALL_STATE(95)] = 5839, + [SMALL_STATE(96)] = 5954, + [SMALL_STATE(97)] = 6069, + [SMALL_STATE(98)] = 6184, + [SMALL_STATE(99)] = 6299, + [SMALL_STATE(100)] = 6414, + [SMALL_STATE(101)] = 6529, + [SMALL_STATE(102)] = 6644, + [SMALL_STATE(103)] = 6759, + [SMALL_STATE(104)] = 6874, + [SMALL_STATE(105)] = 6989, + [SMALL_STATE(106)] = 7104, + [SMALL_STATE(107)] = 7219, + [SMALL_STATE(108)] = 7334, + [SMALL_STATE(109)] = 7449, + [SMALL_STATE(110)] = 7564, + [SMALL_STATE(111)] = 7679, + [SMALL_STATE(112)] = 7794, + [SMALL_STATE(113)] = 7909, + [SMALL_STATE(114)] = 8024, + [SMALL_STATE(115)] = 8139, + [SMALL_STATE(116)] = 8254, + [SMALL_STATE(117)] = 8369, + [SMALL_STATE(118)] = 8484, + [SMALL_STATE(119)] = 8599, + [SMALL_STATE(120)] = 8714, + [SMALL_STATE(121)] = 8829, + [SMALL_STATE(122)] = 8944, + [SMALL_STATE(123)] = 9059, + [SMALL_STATE(124)] = 9174, + [SMALL_STATE(125)] = 9289, + [SMALL_STATE(126)] = 9404, + [SMALL_STATE(127)] = 9519, + [SMALL_STATE(128)] = 9634, + [SMALL_STATE(129)] = 9749, + [SMALL_STATE(130)] = 9864, + [SMALL_STATE(131)] = 9979, + [SMALL_STATE(132)] = 10094, + [SMALL_STATE(133)] = 10209, + [SMALL_STATE(134)] = 10324, + [SMALL_STATE(135)] = 10439, + [SMALL_STATE(136)] = 10554, + [SMALL_STATE(137)] = 10669, + [SMALL_STATE(138)] = 10784, + [SMALL_STATE(139)] = 10899, + [SMALL_STATE(140)] = 11014, + [SMALL_STATE(141)] = 11129, + [SMALL_STATE(142)] = 11244, + [SMALL_STATE(143)] = 11359, + [SMALL_STATE(144)] = 11474, + [SMALL_STATE(145)] = 11589, + [SMALL_STATE(146)] = 11704, + [SMALL_STATE(147)] = 11819, + [SMALL_STATE(148)] = 11934, + [SMALL_STATE(149)] = 12049, + [SMALL_STATE(150)] = 12164, + [SMALL_STATE(151)] = 12279, + [SMALL_STATE(152)] = 12394, + [SMALL_STATE(153)] = 12509, + [SMALL_STATE(154)] = 12624, + [SMALL_STATE(155)] = 12739, + [SMALL_STATE(156)] = 12854, + [SMALL_STATE(157)] = 12969, + [SMALL_STATE(158)] = 13084, + [SMALL_STATE(159)] = 13199, + [SMALL_STATE(160)] = 13314, + [SMALL_STATE(161)] = 13429, + [SMALL_STATE(162)] = 13544, + [SMALL_STATE(163)] = 13659, + [SMALL_STATE(164)] = 13774, + [SMALL_STATE(165)] = 13889, + [SMALL_STATE(166)] = 14004, + [SMALL_STATE(167)] = 14119, + [SMALL_STATE(168)] = 14234, + [SMALL_STATE(169)] = 14349, + [SMALL_STATE(170)] = 14464, + [SMALL_STATE(171)] = 14579, + [SMALL_STATE(172)] = 14694, + [SMALL_STATE(173)] = 14809, + [SMALL_STATE(174)] = 14924, + [SMALL_STATE(175)] = 15039, + [SMALL_STATE(176)] = 15154, + [SMALL_STATE(177)] = 15269, + [SMALL_STATE(178)] = 15384, + [SMALL_STATE(179)] = 15499, + [SMALL_STATE(180)] = 15614, + [SMALL_STATE(181)] = 15729, + [SMALL_STATE(182)] = 15844, + [SMALL_STATE(183)] = 15959, + [SMALL_STATE(184)] = 16074, + [SMALL_STATE(185)] = 16189, + [SMALL_STATE(186)] = 16304, + [SMALL_STATE(187)] = 16419, + [SMALL_STATE(188)] = 16534, + [SMALL_STATE(189)] = 16649, + [SMALL_STATE(190)] = 16764, + [SMALL_STATE(191)] = 16879, + [SMALL_STATE(192)] = 16994, + [SMALL_STATE(193)] = 17109, + [SMALL_STATE(194)] = 17224, + [SMALL_STATE(195)] = 17339, + [SMALL_STATE(196)] = 17454, + [SMALL_STATE(197)] = 17569, + [SMALL_STATE(198)] = 17684, + [SMALL_STATE(199)] = 17799, + [SMALL_STATE(200)] = 17914, + [SMALL_STATE(201)] = 18029, + [SMALL_STATE(202)] = 18144, + [SMALL_STATE(203)] = 18259, + [SMALL_STATE(204)] = 18374, + [SMALL_STATE(205)] = 18489, + [SMALL_STATE(206)] = 18604, + [SMALL_STATE(207)] = 18719, + [SMALL_STATE(208)] = 18834, + [SMALL_STATE(209)] = 18949, + [SMALL_STATE(210)] = 19064, + [SMALL_STATE(211)] = 19179, + [SMALL_STATE(212)] = 19294, + [SMALL_STATE(213)] = 19409, + [SMALL_STATE(214)] = 19524, + [SMALL_STATE(215)] = 19639, + [SMALL_STATE(216)] = 19754, + [SMALL_STATE(217)] = 19869, + [SMALL_STATE(218)] = 19984, + [SMALL_STATE(219)] = 20099, + [SMALL_STATE(220)] = 20214, + [SMALL_STATE(221)] = 20329, + [SMALL_STATE(222)] = 20444, + [SMALL_STATE(223)] = 20559, + [SMALL_STATE(224)] = 20674, + [SMALL_STATE(225)] = 20789, + [SMALL_STATE(226)] = 20904, + [SMALL_STATE(227)] = 21019, + [SMALL_STATE(228)] = 21134, + [SMALL_STATE(229)] = 21249, + [SMALL_STATE(230)] = 21364, + [SMALL_STATE(231)] = 21479, + [SMALL_STATE(232)] = 21594, + [SMALL_STATE(233)] = 21709, + [SMALL_STATE(234)] = 21824, + [SMALL_STATE(235)] = 21939, + [SMALL_STATE(236)] = 22054, + [SMALL_STATE(237)] = 22169, + [SMALL_STATE(238)] = 22284, + [SMALL_STATE(239)] = 22399, + [SMALL_STATE(240)] = 22514, + [SMALL_STATE(241)] = 22629, + [SMALL_STATE(242)] = 22744, + [SMALL_STATE(243)] = 22859, + [SMALL_STATE(244)] = 22974, + [SMALL_STATE(245)] = 23089, + [SMALL_STATE(246)] = 23204, + [SMALL_STATE(247)] = 23319, + [SMALL_STATE(248)] = 23434, + [SMALL_STATE(249)] = 23549, + [SMALL_STATE(250)] = 23664, + [SMALL_STATE(251)] = 23779, + [SMALL_STATE(252)] = 23894, + [SMALL_STATE(253)] = 24009, + [SMALL_STATE(254)] = 24124, + [SMALL_STATE(255)] = 24239, + [SMALL_STATE(256)] = 24354, + [SMALL_STATE(257)] = 24469, + [SMALL_STATE(258)] = 24538, + [SMALL_STATE(259)] = 24653, + [SMALL_STATE(260)] = 24768, + [SMALL_STATE(261)] = 24837, + [SMALL_STATE(262)] = 24952, + [SMALL_STATE(263)] = 25067, + [SMALL_STATE(264)] = 25182, + [SMALL_STATE(265)] = 25297, + [SMALL_STATE(266)] = 25412, + [SMALL_STATE(267)] = 25527, + [SMALL_STATE(268)] = 25642, + [SMALL_STATE(269)] = 25757, + [SMALL_STATE(270)] = 25872, + [SMALL_STATE(271)] = 25987, + [SMALL_STATE(272)] = 26102, + [SMALL_STATE(273)] = 26217, + [SMALL_STATE(274)] = 26332, + [SMALL_STATE(275)] = 26447, + [SMALL_STATE(276)] = 26562, + [SMALL_STATE(277)] = 26677, + [SMALL_STATE(278)] = 26792, + [SMALL_STATE(279)] = 26907, + [SMALL_STATE(280)] = 27022, + [SMALL_STATE(281)] = 27137, + [SMALL_STATE(282)] = 27252, + [SMALL_STATE(283)] = 27367, + [SMALL_STATE(284)] = 27482, + [SMALL_STATE(285)] = 27597, + [SMALL_STATE(286)] = 27712, + [SMALL_STATE(287)] = 27827, + [SMALL_STATE(288)] = 27942, + [SMALL_STATE(289)] = 28057, + [SMALL_STATE(290)] = 28172, + [SMALL_STATE(291)] = 28287, + [SMALL_STATE(292)] = 28402, + [SMALL_STATE(293)] = 28517, + [SMALL_STATE(294)] = 28632, + [SMALL_STATE(295)] = 28747, + [SMALL_STATE(296)] = 28862, + [SMALL_STATE(297)] = 28977, + [SMALL_STATE(298)] = 29092, + [SMALL_STATE(299)] = 29207, + [SMALL_STATE(300)] = 29322, + [SMALL_STATE(301)] = 29437, + [SMALL_STATE(302)] = 29552, + [SMALL_STATE(303)] = 29667, + [SMALL_STATE(304)] = 29782, + [SMALL_STATE(305)] = 29897, + [SMALL_STATE(306)] = 30012, + [SMALL_STATE(307)] = 30127, + [SMALL_STATE(308)] = 30242, + [SMALL_STATE(309)] = 30357, + [SMALL_STATE(310)] = 30472, + [SMALL_STATE(311)] = 30587, + [SMALL_STATE(312)] = 30702, + [SMALL_STATE(313)] = 30817, + [SMALL_STATE(314)] = 30932, + [SMALL_STATE(315)] = 31047, + [SMALL_STATE(316)] = 31162, + [SMALL_STATE(317)] = 31277, + [SMALL_STATE(318)] = 31392, + [SMALL_STATE(319)] = 31507, + [SMALL_STATE(320)] = 31622, + [SMALL_STATE(321)] = 31737, + [SMALL_STATE(322)] = 31852, + [SMALL_STATE(323)] = 31967, + [SMALL_STATE(324)] = 32082, + [SMALL_STATE(325)] = 32197, + [SMALL_STATE(326)] = 32312, + [SMALL_STATE(327)] = 32427, + [SMALL_STATE(328)] = 32542, + [SMALL_STATE(329)] = 32657, + [SMALL_STATE(330)] = 32772, + [SMALL_STATE(331)] = 32887, + [SMALL_STATE(332)] = 33002, + [SMALL_STATE(333)] = 33117, + [SMALL_STATE(334)] = 33232, + [SMALL_STATE(335)] = 33347, + [SMALL_STATE(336)] = 33462, + [SMALL_STATE(337)] = 33577, + [SMALL_STATE(338)] = 33692, + [SMALL_STATE(339)] = 33807, + [SMALL_STATE(340)] = 33922, + [SMALL_STATE(341)] = 34037, + [SMALL_STATE(342)] = 34152, + [SMALL_STATE(343)] = 34267, + [SMALL_STATE(344)] = 34382, + [SMALL_STATE(345)] = 34497, + [SMALL_STATE(346)] = 34566, + [SMALL_STATE(347)] = 34681, + [SMALL_STATE(348)] = 34796, + [SMALL_STATE(349)] = 34911, + [SMALL_STATE(350)] = 35026, + [SMALL_STATE(351)] = 35141, + [SMALL_STATE(352)] = 35256, + [SMALL_STATE(353)] = 35349, + [SMALL_STATE(354)] = 35464, + [SMALL_STATE(355)] = 35579, + [SMALL_STATE(356)] = 35694, + [SMALL_STATE(357)] = 35809, + [SMALL_STATE(358)] = 35924, + [SMALL_STATE(359)] = 36039, + [SMALL_STATE(360)] = 36154, + [SMALL_STATE(361)] = 36269, + [SMALL_STATE(362)] = 36384, + [SMALL_STATE(363)] = 36499, + [SMALL_STATE(364)] = 36614, + [SMALL_STATE(365)] = 36729, + [SMALL_STATE(366)] = 36844, + [SMALL_STATE(367)] = 36959, + [SMALL_STATE(368)] = 37052, + [SMALL_STATE(369)] = 37167, + [SMALL_STATE(370)] = 37282, + [SMALL_STATE(371)] = 37397, + [SMALL_STATE(372)] = 37512, + [SMALL_STATE(373)] = 37627, + [SMALL_STATE(374)] = 37742, + [SMALL_STATE(375)] = 37857, + [SMALL_STATE(376)] = 37972, + [SMALL_STATE(377)] = 38087, + [SMALL_STATE(378)] = 38202, + [SMALL_STATE(379)] = 38317, + [SMALL_STATE(380)] = 38432, + [SMALL_STATE(381)] = 38547, + [SMALL_STATE(382)] = 38662, + [SMALL_STATE(383)] = 38777, + [SMALL_STATE(384)] = 38892, + [SMALL_STATE(385)] = 39007, + [SMALL_STATE(386)] = 39122, + [SMALL_STATE(387)] = 39237, + [SMALL_STATE(388)] = 39352, + [SMALL_STATE(389)] = 39467, + [SMALL_STATE(390)] = 39582, + [SMALL_STATE(391)] = 39697, + [SMALL_STATE(392)] = 39766, + [SMALL_STATE(393)] = 39834, + [SMALL_STATE(394)] = 39902, + [SMALL_STATE(395)] = 39970, + [SMALL_STATE(396)] = 40038, + [SMALL_STATE(397)] = 40130, + [SMALL_STATE(398)] = 40222, + [SMALL_STATE(399)] = 40313, + [SMALL_STATE(400)] = 40380, + [SMALL_STATE(401)] = 40471, + [SMALL_STATE(402)] = 40562, + [SMALL_STATE(403)] = 40629, + [SMALL_STATE(404)] = 40694, + [SMALL_STATE(405)] = 40783, + [SMALL_STATE(406)] = 40848, + [SMALL_STATE(407)] = 40912, + [SMALL_STATE(408)] = 40976, + [SMALL_STATE(409)] = 41040, + [SMALL_STATE(410)] = 41104, + [SMALL_STATE(411)] = 41192, + [SMALL_STATE(412)] = 41280, + [SMALL_STATE(413)] = 41343, + [SMALL_STATE(414)] = 41406, + [SMALL_STATE(415)] = 41493, + [SMALL_STATE(416)] = 41580, + [SMALL_STATE(417)] = 41643, + [SMALL_STATE(418)] = 41706, + [SMALL_STATE(419)] = 41793, + [SMALL_STATE(420)] = 41880, + [SMALL_STATE(421)] = 41966, + [SMALL_STATE(422)] = 42052, + [SMALL_STATE(423)] = 42114, + [SMALL_STATE(424)] = 42176, + [SMALL_STATE(425)] = 42262, + [SMALL_STATE(426)] = 42319, + [SMALL_STATE(427)] = 42376, + [SMALL_STATE(428)] = 42433, + [SMALL_STATE(429)] = 42490, + [SMALL_STATE(430)] = 42547, + [SMALL_STATE(431)] = 42604, + [SMALL_STATE(432)] = 42661, + [SMALL_STATE(433)] = 42718, + [SMALL_STATE(434)] = 42775, + [SMALL_STATE(435)] = 42836, + [SMALL_STATE(436)] = 42897, + [SMALL_STATE(437)] = 42954, + [SMALL_STATE(438)] = 43015, + [SMALL_STATE(439)] = 43072, + [SMALL_STATE(440)] = 43129, + [SMALL_STATE(441)] = 43186, + [SMALL_STATE(442)] = 43243, + [SMALL_STATE(443)] = 43329, + [SMALL_STATE(444)] = 43387, + [SMALL_STATE(445)] = 43445, + [SMALL_STATE(446)] = 43501, + [SMALL_STATE(447)] = 43585, + [SMALL_STATE(448)] = 43641, + [SMALL_STATE(449)] = 43725, + [SMALL_STATE(450)] = 43781, + [SMALL_STATE(451)] = 43839, + [SMALL_STATE(452)] = 43897, + [SMALL_STATE(453)] = 43955, + [SMALL_STATE(454)] = 44013, + [SMALL_STATE(455)] = 44071, + [SMALL_STATE(456)] = 44129, + [SMALL_STATE(457)] = 44217, + [SMALL_STATE(458)] = 44305, + [SMALL_STATE(459)] = 44391, + [SMALL_STATE(460)] = 44450, + [SMALL_STATE(461)] = 44505, + [SMALL_STATE(462)] = 44588, + [SMALL_STATE(463)] = 44643, + [SMALL_STATE(464)] = 44698, + [SMALL_STATE(465)] = 44753, + [SMALL_STATE(466)] = 44808, + [SMALL_STATE(467)] = 44863, + [SMALL_STATE(468)] = 44918, + [SMALL_STATE(469)] = 44973, + [SMALL_STATE(470)] = 45028, + [SMALL_STATE(471)] = 45087, + [SMALL_STATE(472)] = 45142, + [SMALL_STATE(473)] = 45227, + [SMALL_STATE(474)] = 45282, + [SMALL_STATE(475)] = 45337, + [SMALL_STATE(476)] = 45396, + [SMALL_STATE(477)] = 45451, + [SMALL_STATE(478)] = 45506, + [SMALL_STATE(479)] = 45561, + [SMALL_STATE(480)] = 45616, + [SMALL_STATE(481)] = 45671, + [SMALL_STATE(482)] = 45730, + [SMALL_STATE(483)] = 45785, + [SMALL_STATE(484)] = 45840, + [SMALL_STATE(485)] = 45895, + [SMALL_STATE(486)] = 45950, + [SMALL_STATE(487)] = 46005, + [SMALL_STATE(488)] = 46060, + [SMALL_STATE(489)] = 46115, + [SMALL_STATE(490)] = 46170, + [SMALL_STATE(491)] = 46225, + [SMALL_STATE(492)] = 46280, + [SMALL_STATE(493)] = 46335, + [SMALL_STATE(494)] = 46390, + [SMALL_STATE(495)] = 46445, + [SMALL_STATE(496)] = 46500, + [SMALL_STATE(497)] = 46555, + [SMALL_STATE(498)] = 46610, + [SMALL_STATE(499)] = 46665, + [SMALL_STATE(500)] = 46720, + [SMALL_STATE(501)] = 46779, + [SMALL_STATE(502)] = 46834, + [SMALL_STATE(503)] = 46889, + [SMALL_STATE(504)] = 46948, + [SMALL_STATE(505)] = 47031, + [SMALL_STATE(506)] = 47086, + [SMALL_STATE(507)] = 47151, + [SMALL_STATE(508)] = 47206, + [SMALL_STATE(509)] = 47291, + [SMALL_STATE(510)] = 47346, + [SMALL_STATE(511)] = 47401, + [SMALL_STATE(512)] = 47456, + [SMALL_STATE(513)] = 47515, + [SMALL_STATE(514)] = 47570, + [SMALL_STATE(515)] = 47657, + [SMALL_STATE(516)] = 47744, + [SMALL_STATE(517)] = 47825, + [SMALL_STATE(518)] = 47880, + [SMALL_STATE(519)] = 47939, + [SMALL_STATE(520)] = 47994, + [SMALL_STATE(521)] = 48049, + [SMALL_STATE(522)] = 48104, + [SMALL_STATE(523)] = 48159, + [SMALL_STATE(524)] = 48214, + [SMALL_STATE(525)] = 48269, + [SMALL_STATE(526)] = 48324, + [SMALL_STATE(527)] = 48408, + [SMALL_STATE(528)] = 48474, + [SMALL_STATE(529)] = 48554, + [SMALL_STATE(530)] = 48638, + [SMALL_STATE(531)] = 48718, + [SMALL_STATE(532)] = 48800, + [SMALL_STATE(533)] = 48874, + [SMALL_STATE(534)] = 48952, + [SMALL_STATE(535)] = 49024, + [SMALL_STATE(536)] = 49108, + [SMALL_STATE(537)] = 49188, + [SMALL_STATE(538)] = 49272, + [SMALL_STATE(539)] = 49356, + [SMALL_STATE(540)] = 49438, + [SMALL_STATE(541)] = 49520, + [SMALL_STATE(542)] = 49602, + [SMALL_STATE(543)] = 49670, + [SMALL_STATE(544)] = 49748, + [SMALL_STATE(545)] = 49826, + [SMALL_STATE(546)] = 49904, + [SMALL_STATE(547)] = 49982, + [SMALL_STATE(548)] = 50064, + [SMALL_STATE(549)] = 50148, + [SMALL_STATE(550)] = 50225, + [SMALL_STATE(551)] = 50306, + [SMALL_STATE(552)] = 50389, + [SMALL_STATE(553)] = 50466, + [SMALL_STATE(554)] = 50545, + [SMALL_STATE(555)] = 50622, + [SMALL_STATE(556)] = 50699, + [SMALL_STATE(557)] = 50764, + [SMALL_STATE(558)] = 50831, + [SMALL_STATE(559)] = 50902, + [SMALL_STATE(560)] = 50975, + [SMALL_STATE(561)] = 51056, + [SMALL_STATE(562)] = 51137, + [SMALL_STATE(563)] = 51216, + [SMALL_STATE(564)] = 51297, + [SMALL_STATE(565)] = 51378, + [SMALL_STATE(566)] = 51451, + [SMALL_STATE(567)] = 51528, + [SMALL_STATE(568)] = 51599, + [SMALL_STATE(569)] = 51666, + [SMALL_STATE(570)] = 51747, + [SMALL_STATE(571)] = 51812, + [SMALL_STATE(572)] = 51893, + [SMALL_STATE(573)] = 51976, + [SMALL_STATE(574)] = 52053, + [SMALL_STATE(575)] = 52130, + [SMALL_STATE(576)] = 52207, + [SMALL_STATE(577)] = 52290, + [SMALL_STATE(578)] = 52373, + [SMALL_STATE(579)] = 52456, + [SMALL_STATE(580)] = 52539, + [SMALL_STATE(581)] = 52622, + [SMALL_STATE(582)] = 52705, + [SMALL_STATE(583)] = 52782, + [SMALL_STATE(584)] = 52865, + [SMALL_STATE(585)] = 52948, + [SMALL_STATE(586)] = 53031, + [SMALL_STATE(587)] = 53114, + [SMALL_STATE(588)] = 53195, + [SMALL_STATE(589)] = 53276, + [SMALL_STATE(590)] = 53358, + [SMALL_STATE(591)] = 53438, + [SMALL_STATE(592)] = 53514, + [SMALL_STATE(593)] = 53596, + [SMALL_STATE(594)] = 53678, + [SMALL_STATE(595)] = 53760, + [SMALL_STATE(596)] = 53842, + [SMALL_STATE(597)] = 53924, + [SMALL_STATE(598)] = 54006, + [SMALL_STATE(599)] = 54082, + [SMALL_STATE(600)] = 54162, + [SMALL_STATE(601)] = 54242, + [SMALL_STATE(602)] = 54322, + [SMALL_STATE(603)] = 54402, + [SMALL_STATE(604)] = 54482, + [SMALL_STATE(605)] = 54560, + [SMALL_STATE(606)] = 54636, + [SMALL_STATE(607)] = 54712, + [SMALL_STATE(608)] = 54794, + [SMALL_STATE(609)] = 54870, + [SMALL_STATE(610)] = 54952, + [SMALL_STATE(611)] = 55034, + [SMALL_STATE(612)] = 55116, + [SMALL_STATE(613)] = 55196, + [SMALL_STATE(614)] = 55268, + [SMALL_STATE(615)] = 55348, + [SMALL_STATE(616)] = 55420, + [SMALL_STATE(617)] = 55496, + [SMALL_STATE(618)] = 55566, + [SMALL_STATE(619)] = 55632, + [SMALL_STATE(620)] = 55696, + [SMALL_STATE(621)] = 55772, + [SMALL_STATE(622)] = 55848, + [SMALL_STATE(623)] = 55924, + [SMALL_STATE(624)] = 55994, + [SMALL_STATE(625)] = 56058, + [SMALL_STATE(626)] = 56124, + [SMALL_STATE(627)] = 56203, + [SMALL_STATE(628)] = 56284, + [SMALL_STATE(629)] = 56359, + [SMALL_STATE(630)] = 56440, + [SMALL_STATE(631)] = 56503, + [SMALL_STATE(632)] = 56584, + [SMALL_STATE(633)] = 56655, + [SMALL_STATE(634)] = 56720, + [SMALL_STATE(635)] = 56789, + [SMALL_STATE(636)] = 56864, + [SMALL_STATE(637)] = 56947, + [SMALL_STATE(638)] = 57022, + [SMALL_STATE(639)] = 57101, + [SMALL_STATE(640)] = 57182, + [SMALL_STATE(641)] = 57261, + [SMALL_STATE(642)] = 57340, + [SMALL_STATE(643)] = 57421, + [SMALL_STATE(644)] = 57496, + [SMALL_STATE(645)] = 57577, + [SMALL_STATE(646)] = 57658, + [SMALL_STATE(647)] = 57737, + [SMALL_STATE(648)] = 57816, + [SMALL_STATE(649)] = 57899, + [SMALL_STATE(650)] = 57977, + [SMALL_STATE(651)] = 58055, + [SMALL_STATE(652)] = 58137, + [SMALL_STATE(653)] = 58225, + [SMALL_STATE(654)] = 58301, + [SMALL_STATE(655)] = 58389, + [SMALL_STATE(656)] = 58469, + [SMALL_STATE(657)] = 58551, + [SMALL_STATE(658)] = 58631, + [SMALL_STATE(659)] = 58706, + [SMALL_STATE(660)] = 58785, + [SMALL_STATE(661)] = 58864, + [SMALL_STATE(662)] = 58943, + [SMALL_STATE(663)] = 59022, + [SMALL_STATE(664)] = 59095, + [SMALL_STATE(665)] = 59172, + [SMALL_STATE(666)] = 59247, + [SMALL_STATE(667)] = 59324, + [SMALL_STATE(668)] = 59393, + [SMALL_STATE(669)] = 59466, + [SMALL_STATE(670)] = 59545, + [SMALL_STATE(671)] = 59612, + [SMALL_STATE(672)] = 59675, + [SMALL_STATE(673)] = 59736, + [SMALL_STATE(674)] = 59809, + [SMALL_STATE(675)] = 59882, + [SMALL_STATE(676)] = 59955, + [SMALL_STATE(677)] = 60032, + [SMALL_STATE(678)] = 60109, + [SMALL_STATE(679)] = 60186, + [SMALL_STATE(680)] = 60261, + [SMALL_STATE(681)] = 60340, + [SMALL_STATE(682)] = 60406, + [SMALL_STATE(683)] = 60480, + [SMALL_STATE(684)] = 60558, + [SMALL_STATE(685)] = 60630, + [SMALL_STATE(686)] = 60708, + [SMALL_STATE(687)] = 60786, + [SMALL_STATE(688)] = 60864, + [SMALL_STATE(689)] = 60942, + [SMALL_STATE(690)] = 61020, + [SMALL_STATE(691)] = 61092, + [SMALL_STATE(692)] = 61170, + [SMALL_STATE(693)] = 61244, + [SMALL_STATE(694)] = 61320, + [SMALL_STATE(695)] = 61396, + [SMALL_STATE(696)] = 61472, + [SMALL_STATE(697)] = 61544, + [SMALL_STATE(698)] = 61616, + [SMALL_STATE(699)] = 61676, + [SMALL_STATE(700)] = 61738, + [SMALL_STATE(701)] = 61820, + [SMALL_STATE(702)] = 61886, + [SMALL_STATE(703)] = 61958, + [SMALL_STATE(704)] = 62036, + [SMALL_STATE(705)] = 62114, + [SMALL_STATE(706)] = 62182, + [SMALL_STATE(707)] = 62260, + [SMALL_STATE(708)] = 62336, + [SMALL_STATE(709)] = 62414, + [SMALL_STATE(710)] = 62486, + [SMALL_STATE(711)] = 62564, + [SMALL_STATE(712)] = 62640, + [SMALL_STATE(713)] = 62716, + [SMALL_STATE(714)] = 62784, + [SMALL_STATE(715)] = 62856, + [SMALL_STATE(716)] = 62918, + [SMALL_STATE(717)] = 62978, + [SMALL_STATE(718)] = 63050, + [SMALL_STATE(719)] = 63122, + [SMALL_STATE(720)] = 63198, + [SMALL_STATE(721)] = 63274, + [SMALL_STATE(722)] = 63350, + [SMALL_STATE(723)] = 63421, + [SMALL_STATE(724)] = 63498, + [SMALL_STATE(725)] = 63569, + [SMALL_STATE(726)] = 63646, + [SMALL_STATE(727)] = 63723, + [SMALL_STATE(728)] = 63800, + [SMALL_STATE(729)] = 63877, + [SMALL_STATE(730)] = 63948, + [SMALL_STATE(731)] = 64015, + [SMALL_STATE(732)] = 64090, + [SMALL_STATE(733)] = 64165, + [SMALL_STATE(734)] = 64236, + [SMALL_STATE(735)] = 64297, + [SMALL_STATE(736)] = 64372, + [SMALL_STATE(737)] = 64447, + [SMALL_STATE(738)] = 64512, + [SMALL_STATE(739)] = 64573, + [SMALL_STATE(740)] = 64632, + [SMALL_STATE(741)] = 64703, + [SMALL_STATE(742)] = 64774, + [SMALL_STATE(743)] = 64849, + [SMALL_STATE(744)] = 64926, + [SMALL_STATE(745)] = 65003, + [SMALL_STATE(746)] = 65078, + [SMALL_STATE(747)] = 65153, + [SMALL_STATE(748)] = 65224, + [SMALL_STATE(749)] = 65303, + [SMALL_STATE(750)] = 65376, + [SMALL_STATE(751)] = 65453, + [SMALL_STATE(752)] = 65530, + [SMALL_STATE(753)] = 65607, + [SMALL_STATE(754)] = 65672, + [SMALL_STATE(755)] = 65743, + [SMALL_STATE(756)] = 65814, + [SMALL_STATE(757)] = 65873, + [SMALL_STATE(758)] = 65948, + [SMALL_STATE(759)] = 66015, + [SMALL_STATE(760)] = 66092, + [SMALL_STATE(761)] = 66166, + [SMALL_STATE(762)] = 66240, + [SMALL_STATE(763)] = 66314, + [SMALL_STATE(764)] = 66384, + [SMALL_STATE(765)] = 66454, + [SMALL_STATE(766)] = 66512, + [SMALL_STATE(767)] = 66588, + [SMALL_STATE(768)] = 66664, + [SMALL_STATE(769)] = 66724, + [SMALL_STATE(770)] = 66788, + [SMALL_STATE(771)] = 66858, + [SMALL_STATE(772)] = 66934, + [SMALL_STATE(773)] = 67010, + [SMALL_STATE(774)] = 67076, + [SMALL_STATE(775)] = 67152, + [SMALL_STATE(776)] = 67228, + [SMALL_STATE(777)] = 67298, + [SMALL_STATE(778)] = 67372, + [SMALL_STATE(779)] = 67417, + [SMALL_STATE(780)] = 67462, + [SMALL_STATE(781)] = 67507, + [SMALL_STATE(782)] = 67552, + [SMALL_STATE(783)] = 67597, + [SMALL_STATE(784)] = 67642, + [SMALL_STATE(785)] = 67687, + [SMALL_STATE(786)] = 67732, + [SMALL_STATE(787)] = 67777, + [SMALL_STATE(788)] = 67822, + [SMALL_STATE(789)] = 67867, + [SMALL_STATE(790)] = 67912, + [SMALL_STATE(791)] = 67957, + [SMALL_STATE(792)] = 68002, + [SMALL_STATE(793)] = 68047, + [SMALL_STATE(794)] = 68092, + [SMALL_STATE(795)] = 68137, + [SMALL_STATE(796)] = 68182, + [SMALL_STATE(797)] = 68225, + [SMALL_STATE(798)] = 68268, + [SMALL_STATE(799)] = 68311, + [SMALL_STATE(800)] = 68354, + [SMALL_STATE(801)] = 68397, + [SMALL_STATE(802)] = 68440, + [SMALL_STATE(803)] = 68487, + [SMALL_STATE(804)] = 68530, + [SMALL_STATE(805)] = 68573, + [SMALL_STATE(806)] = 68616, + [SMALL_STATE(807)] = 68659, + [SMALL_STATE(808)] = 68702, + [SMALL_STATE(809)] = 68745, + [SMALL_STATE(810)] = 68788, + [SMALL_STATE(811)] = 68831, + [SMALL_STATE(812)] = 68874, + [SMALL_STATE(813)] = 68917, + [SMALL_STATE(814)] = 68960, + [SMALL_STATE(815)] = 69003, + [SMALL_STATE(816)] = 69046, + [SMALL_STATE(817)] = 69089, + [SMALL_STATE(818)] = 69132, + [SMALL_STATE(819)] = 69175, + [SMALL_STATE(820)] = 69218, + [SMALL_STATE(821)] = 69265, + [SMALL_STATE(822)] = 69308, + [SMALL_STATE(823)] = 69351, + [SMALL_STATE(824)] = 69394, + [SMALL_STATE(825)] = 69437, + [SMALL_STATE(826)] = 69480, + [SMALL_STATE(827)] = 69523, + [SMALL_STATE(828)] = 69566, + [SMALL_STATE(829)] = 69609, + [SMALL_STATE(830)] = 69656, + [SMALL_STATE(831)] = 69699, + [SMALL_STATE(832)] = 69742, + [SMALL_STATE(833)] = 69785, + [SMALL_STATE(834)] = 69828, + [SMALL_STATE(835)] = 69871, + [SMALL_STATE(836)] = 69914, + [SMALL_STATE(837)] = 69957, + [SMALL_STATE(838)] = 70000, + [SMALL_STATE(839)] = 70043, + [SMALL_STATE(840)] = 70086, + [SMALL_STATE(841)] = 70129, + [SMALL_STATE(842)] = 70172, + [SMALL_STATE(843)] = 70215, + [SMALL_STATE(844)] = 70258, + [SMALL_STATE(845)] = 70301, + [SMALL_STATE(846)] = 70344, + [SMALL_STATE(847)] = 70387, + [SMALL_STATE(848)] = 70431, + [SMALL_STATE(849)] = 70501, + [SMALL_STATE(850)] = 70571, + [SMALL_STATE(851)] = 70638, + [SMALL_STATE(852)] = 70679, + [SMALL_STATE(853)] = 70720, + [SMALL_STATE(854)] = 70787, + [SMALL_STATE(855)] = 70828, + [SMALL_STATE(856)] = 70895, + [SMALL_STATE(857)] = 70962, + [SMALL_STATE(858)] = 71007, + [SMALL_STATE(859)] = 71048, + [SMALL_STATE(860)] = 71089, + [SMALL_STATE(861)] = 71130, + [SMALL_STATE(862)] = 71171, + [SMALL_STATE(863)] = 71212, + [SMALL_STATE(864)] = 71253, + [SMALL_STATE(865)] = 71304, + [SMALL_STATE(866)] = 71345, + [SMALL_STATE(867)] = 71412, + [SMALL_STATE(868)] = 71453, + [SMALL_STATE(869)] = 71494, + [SMALL_STATE(870)] = 71535, + [SMALL_STATE(871)] = 71576, + [SMALL_STATE(872)] = 71643, + [SMALL_STATE(873)] = 71684, + [SMALL_STATE(874)] = 71725, + [SMALL_STATE(875)] = 71766, + [SMALL_STATE(876)] = 71807, + [SMALL_STATE(877)] = 71848, + [SMALL_STATE(878)] = 71889, + [SMALL_STATE(879)] = 71930, + [SMALL_STATE(880)] = 71997, + [SMALL_STATE(881)] = 72064, + [SMALL_STATE(882)] = 72131, + [SMALL_STATE(883)] = 72172, + [SMALL_STATE(884)] = 72213, + [SMALL_STATE(885)] = 72280, + [SMALL_STATE(886)] = 72321, + [SMALL_STATE(887)] = 72362, + [SMALL_STATE(888)] = 72403, + [SMALL_STATE(889)] = 72444, + [SMALL_STATE(890)] = 72511, + [SMALL_STATE(891)] = 72552, + [SMALL_STATE(892)] = 72593, + [SMALL_STATE(893)] = 72634, + [SMALL_STATE(894)] = 72675, + [SMALL_STATE(895)] = 72716, + [SMALL_STATE(896)] = 72757, + [SMALL_STATE(897)] = 72798, + [SMALL_STATE(898)] = 72862, + [SMALL_STATE(899)] = 72926, + [SMALL_STATE(900)] = 72990, + [SMALL_STATE(901)] = 73054, + [SMALL_STATE(902)] = 73118, + [SMALL_STATE(903)] = 73182, + [SMALL_STATE(904)] = 73246, + [SMALL_STATE(905)] = 73310, + [SMALL_STATE(906)] = 73374, + [SMALL_STATE(907)] = 73438, + [SMALL_STATE(908)] = 73502, + [SMALL_STATE(909)] = 73566, + [SMALL_STATE(910)] = 73630, + [SMALL_STATE(911)] = 73694, + [SMALL_STATE(912)] = 73758, + [SMALL_STATE(913)] = 73822, + [SMALL_STATE(914)] = 73886, + [SMALL_STATE(915)] = 73947, + [SMALL_STATE(916)] = 74008, + [SMALL_STATE(917)] = 74069, + [SMALL_STATE(918)] = 74130, + [SMALL_STATE(919)] = 74191, + [SMALL_STATE(920)] = 74252, + [SMALL_STATE(921)] = 74313, + [SMALL_STATE(922)] = 74374, + [SMALL_STATE(923)] = 74435, + [SMALL_STATE(924)] = 74496, + [SMALL_STATE(925)] = 74557, + [SMALL_STATE(926)] = 74618, + [SMALL_STATE(927)] = 74679, + [SMALL_STATE(928)] = 74740, + [SMALL_STATE(929)] = 74801, + [SMALL_STATE(930)] = 74862, + [SMALL_STATE(931)] = 74915, + [SMALL_STATE(932)] = 74976, + [SMALL_STATE(933)] = 75037, + [SMALL_STATE(934)] = 75098, + [SMALL_STATE(935)] = 75159, + [SMALL_STATE(936)] = 75220, + [SMALL_STATE(937)] = 75281, + [SMALL_STATE(938)] = 75342, + [SMALL_STATE(939)] = 75403, + [SMALL_STATE(940)] = 75464, + [SMALL_STATE(941)] = 75525, + [SMALL_STATE(942)] = 75586, + [SMALL_STATE(943)] = 75651, + [SMALL_STATE(944)] = 75712, + [SMALL_STATE(945)] = 75773, + [SMALL_STATE(946)] = 75834, + [SMALL_STATE(947)] = 75895, + [SMALL_STATE(948)] = 75960, + [SMALL_STATE(949)] = 76025, + [SMALL_STATE(950)] = 76090, + [SMALL_STATE(951)] = 76151, + [SMALL_STATE(952)] = 76212, + [SMALL_STATE(953)] = 76273, + [SMALL_STATE(954)] = 76334, + [SMALL_STATE(955)] = 76395, + [SMALL_STATE(956)] = 76456, + [SMALL_STATE(957)] = 76517, + [SMALL_STATE(958)] = 76578, + [SMALL_STATE(959)] = 76637, + [SMALL_STATE(960)] = 76698, + [SMALL_STATE(961)] = 76759, + [SMALL_STATE(962)] = 76820, + [SMALL_STATE(963)] = 76881, + [SMALL_STATE(964)] = 76942, + [SMALL_STATE(965)] = 77003, + [SMALL_STATE(966)] = 77060, + [SMALL_STATE(967)] = 77121, + [SMALL_STATE(968)] = 77172, + [SMALL_STATE(969)] = 77233, + [SMALL_STATE(970)] = 77294, + [SMALL_STATE(971)] = 77355, + [SMALL_STATE(972)] = 77424, + [SMALL_STATE(973)] = 77492, + [SMALL_STATE(974)] = 77552, + [SMALL_STATE(975)] = 77620, + [SMALL_STATE(976)] = 77680, + [SMALL_STATE(977)] = 77740, + [SMALL_STATE(978)] = 77800, + [SMALL_STATE(979)] = 77860, + [SMALL_STATE(980)] = 77920, + [SMALL_STATE(981)] = 77984, + [SMALL_STATE(982)] = 78044, + [SMALL_STATE(983)] = 78104, + [SMALL_STATE(984)] = 78164, + [SMALL_STATE(985)] = 78224, + [SMALL_STATE(986)] = 78284, + [SMALL_STATE(987)] = 78344, + [SMALL_STATE(988)] = 78404, + [SMALL_STATE(989)] = 78467, + [SMALL_STATE(990)] = 78532, + [SMALL_STATE(991)] = 78597, + [SMALL_STATE(992)] = 78662, + [SMALL_STATE(993)] = 78727, + [SMALL_STATE(994)] = 78790, + [SMALL_STATE(995)] = 78831, + [SMALL_STATE(996)] = 78896, + [SMALL_STATE(997)] = 78957, + [SMALL_STATE(998)] = 79018, + [SMALL_STATE(999)] = 79079, + [SMALL_STATE(1000)] = 79144, + [SMALL_STATE(1001)] = 79209, + [SMALL_STATE(1002)] = 79266, + [SMALL_STATE(1003)] = 79323, + [SMALL_STATE(1004)] = 79388, + [SMALL_STATE(1005)] = 79435, + [SMALL_STATE(1006)] = 79500, + [SMALL_STATE(1007)] = 79549, + [SMALL_STATE(1008)] = 79602, + [SMALL_STATE(1009)] = 79667, + [SMALL_STATE(1010)] = 79732, + [SMALL_STATE(1011)] = 79789, + [SMALL_STATE(1012)] = 79844, + [SMALL_STATE(1013)] = 79905, + [SMALL_STATE(1014)] = 79970, + [SMALL_STATE(1015)] = 80035, + [SMALL_STATE(1016)] = 80100, + [SMALL_STATE(1017)] = 80165, + [SMALL_STATE(1018)] = 80230, + [SMALL_STATE(1019)] = 80292, + [SMALL_STATE(1020)] = 80354, + [SMALL_STATE(1021)] = 80416, + [SMALL_STATE(1022)] = 80478, + [SMALL_STATE(1023)] = 80540, + [SMALL_STATE(1024)] = 80602, + [SMALL_STATE(1025)] = 80664, + [SMALL_STATE(1026)] = 80726, + [SMALL_STATE(1027)] = 80788, + [SMALL_STATE(1028)] = 80834, + [SMALL_STATE(1029)] = 80882, + [SMALL_STATE(1030)] = 80944, + [SMALL_STATE(1031)] = 81006, + [SMALL_STATE(1032)] = 81068, + [SMALL_STATE(1033)] = 81124, + [SMALL_STATE(1034)] = 81186, + [SMALL_STATE(1035)] = 81248, + [SMALL_STATE(1036)] = 81310, + [SMALL_STATE(1037)] = 81372, + [SMALL_STATE(1038)] = 81434, + [SMALL_STATE(1039)] = 81496, + [SMALL_STATE(1040)] = 81558, + [SMALL_STATE(1041)] = 81618, + [SMALL_STATE(1042)] = 81680, + [SMALL_STATE(1043)] = 81740, + [SMALL_STATE(1044)] = 81802, + [SMALL_STATE(1045)] = 81862, + [SMALL_STATE(1046)] = 81918, + [SMALL_STATE(1047)] = 81970, + [SMALL_STATE(1048)] = 82026, + [SMALL_STATE(1049)] = 82088, + [SMALL_STATE(1050)] = 82150, + [SMALL_STATE(1051)] = 82212, + [SMALL_STATE(1052)] = 82274, + [SMALL_STATE(1053)] = 82328, + [SMALL_STATE(1054)] = 82390, + [SMALL_STATE(1055)] = 82450, + [SMALL_STATE(1056)] = 82512, + [SMALL_STATE(1057)] = 82574, + [SMALL_STATE(1058)] = 82636, + [SMALL_STATE(1059)] = 82698, + [SMALL_STATE(1060)] = 82760, + [SMALL_STATE(1061)] = 82822, + [SMALL_STATE(1062)] = 82884, + [SMALL_STATE(1063)] = 82946, + [SMALL_STATE(1064)] = 83008, + [SMALL_STATE(1065)] = 83043, + [SMALL_STATE(1066)] = 83102, + [SMALL_STATE(1067)] = 83150, + [SMALL_STATE(1068)] = 83198, + [SMALL_STATE(1069)] = 83246, + [SMALL_STATE(1070)] = 83294, + [SMALL_STATE(1071)] = 83342, + [SMALL_STATE(1072)] = 83390, + [SMALL_STATE(1073)] = 83438, + [SMALL_STATE(1074)] = 83483, + [SMALL_STATE(1075)] = 83528, + [SMALL_STATE(1076)] = 83573, + [SMALL_STATE(1077)] = 83618, + [SMALL_STATE(1078)] = 83663, + [SMALL_STATE(1079)] = 83708, + [SMALL_STATE(1080)] = 83753, + [SMALL_STATE(1081)] = 83798, + [SMALL_STATE(1082)] = 83840, + [SMALL_STATE(1083)] = 83882, + [SMALL_STATE(1084)] = 83924, + [SMALL_STATE(1085)] = 83966, + [SMALL_STATE(1086)] = 84008, + [SMALL_STATE(1087)] = 84050, + [SMALL_STATE(1088)] = 84092, + [SMALL_STATE(1089)] = 84134, + [SMALL_STATE(1090)] = 84176, + [SMALL_STATE(1091)] = 84218, + [SMALL_STATE(1092)] = 84260, + [SMALL_STATE(1093)] = 84302, + [SMALL_STATE(1094)] = 84344, + [SMALL_STATE(1095)] = 84386, + [SMALL_STATE(1096)] = 84428, + [SMALL_STATE(1097)] = 84470, + [SMALL_STATE(1098)] = 84512, + [SMALL_STATE(1099)] = 84554, + [SMALL_STATE(1100)] = 84596, + [SMALL_STATE(1101)] = 84638, + [SMALL_STATE(1102)] = 84680, + [SMALL_STATE(1103)] = 84722, + [SMALL_STATE(1104)] = 84764, + [SMALL_STATE(1105)] = 84806, + [SMALL_STATE(1106)] = 84848, + [SMALL_STATE(1107)] = 84890, + [SMALL_STATE(1108)] = 84932, + [SMALL_STATE(1109)] = 84974, + [SMALL_STATE(1110)] = 85016, + [SMALL_STATE(1111)] = 85058, + [SMALL_STATE(1112)] = 85100, + [SMALL_STATE(1113)] = 85142, + [SMALL_STATE(1114)] = 85184, + [SMALL_STATE(1115)] = 85226, + [SMALL_STATE(1116)] = 85268, + [SMALL_STATE(1117)] = 85310, + [SMALL_STATE(1118)] = 85352, + [SMALL_STATE(1119)] = 85394, + [SMALL_STATE(1120)] = 85436, + [SMALL_STATE(1121)] = 85478, + [SMALL_STATE(1122)] = 85520, + [SMALL_STATE(1123)] = 85562, + [SMALL_STATE(1124)] = 85604, + [SMALL_STATE(1125)] = 85646, + [SMALL_STATE(1126)] = 85688, + [SMALL_STATE(1127)] = 85730, + [SMALL_STATE(1128)] = 85772, + [SMALL_STATE(1129)] = 85814, + [SMALL_STATE(1130)] = 85839, + [SMALL_STATE(1131)] = 85865, + [SMALL_STATE(1132)] = 85889, + [SMALL_STATE(1133)] = 85915, + [SMALL_STATE(1134)] = 85946, + [SMALL_STATE(1135)] = 85966, + [SMALL_STATE(1136)] = 85986, + [SMALL_STATE(1137)] = 86006, + [SMALL_STATE(1138)] = 86026, + [SMALL_STATE(1139)] = 86046, + [SMALL_STATE(1140)] = 86066, + [SMALL_STATE(1141)] = 86086, + [SMALL_STATE(1142)] = 86106, + [SMALL_STATE(1143)] = 86130, + [SMALL_STATE(1144)] = 86150, + [SMALL_STATE(1145)] = 86170, + [SMALL_STATE(1146)] = 86190, + [SMALL_STATE(1147)] = 86210, + [SMALL_STATE(1148)] = 86230, + [SMALL_STATE(1149)] = 86250, + [SMALL_STATE(1150)] = 86277, + [SMALL_STATE(1151)] = 86299, + [SMALL_STATE(1152)] = 86322, + [SMALL_STATE(1153)] = 86343, + [SMALL_STATE(1154)] = 86364, + [SMALL_STATE(1155)] = 86384, + [SMALL_STATE(1156)] = 86402, + [SMALL_STATE(1157)] = 86422, + [SMALL_STATE(1158)] = 86442, + [SMALL_STATE(1159)] = 86462, + [SMALL_STATE(1160)] = 86482, + [SMALL_STATE(1161)] = 86502, + [SMALL_STATE(1162)] = 86522, + [SMALL_STATE(1163)] = 86542, + [SMALL_STATE(1164)] = 86562, + [SMALL_STATE(1165)] = 86582, + [SMALL_STATE(1166)] = 86600, + [SMALL_STATE(1167)] = 86620, + [SMALL_STATE(1168)] = 86640, + [SMALL_STATE(1169)] = 86658, + [SMALL_STATE(1170)] = 86678, + [SMALL_STATE(1171)] = 86694, + [SMALL_STATE(1172)] = 86712, + [SMALL_STATE(1173)] = 86732, + [SMALL_STATE(1174)] = 86752, + [SMALL_STATE(1175)] = 86772, + [SMALL_STATE(1176)] = 86792, + [SMALL_STATE(1177)] = 86810, + [SMALL_STATE(1178)] = 86830, + [SMALL_STATE(1179)] = 86848, + [SMALL_STATE(1180)] = 86868, + [SMALL_STATE(1181)] = 86888, + [SMALL_STATE(1182)] = 86908, + [SMALL_STATE(1183)] = 86928, + [SMALL_STATE(1184)] = 86948, + [SMALL_STATE(1185)] = 86968, + [SMALL_STATE(1186)] = 86988, + [SMALL_STATE(1187)] = 87008, + [SMALL_STATE(1188)] = 87028, + [SMALL_STATE(1189)] = 87048, + [SMALL_STATE(1190)] = 87068, + [SMALL_STATE(1191)] = 87088, + [SMALL_STATE(1192)] = 87108, + [SMALL_STATE(1193)] = 87126, + [SMALL_STATE(1194)] = 87146, + [SMALL_STATE(1195)] = 87166, + [SMALL_STATE(1196)] = 87186, + [SMALL_STATE(1197)] = 87206, + [SMALL_STATE(1198)] = 87224, + [SMALL_STATE(1199)] = 87244, + [SMALL_STATE(1200)] = 87264, + [SMALL_STATE(1201)] = 87284, + [SMALL_STATE(1202)] = 87304, + [SMALL_STATE(1203)] = 87322, + [SMALL_STATE(1204)] = 87342, + [SMALL_STATE(1205)] = 87362, + [SMALL_STATE(1206)] = 87382, + [SMALL_STATE(1207)] = 87402, + [SMALL_STATE(1208)] = 87422, + [SMALL_STATE(1209)] = 87442, + [SMALL_STATE(1210)] = 87462, + [SMALL_STATE(1211)] = 87482, + [SMALL_STATE(1212)] = 87502, + [SMALL_STATE(1213)] = 87522, + [SMALL_STATE(1214)] = 87542, + [SMALL_STATE(1215)] = 87562, + [SMALL_STATE(1216)] = 87582, + [SMALL_STATE(1217)] = 87602, + [SMALL_STATE(1218)] = 87622, + [SMALL_STATE(1219)] = 87642, + [SMALL_STATE(1220)] = 87662, + [SMALL_STATE(1221)] = 87682, + [SMALL_STATE(1222)] = 87702, + [SMALL_STATE(1223)] = 87722, + [SMALL_STATE(1224)] = 87740, + [SMALL_STATE(1225)] = 87760, + [SMALL_STATE(1226)] = 87778, + [SMALL_STATE(1227)] = 87798, + [SMALL_STATE(1228)] = 87816, + [SMALL_STATE(1229)] = 87836, + [SMALL_STATE(1230)] = 87856, + [SMALL_STATE(1231)] = 87876, + [SMALL_STATE(1232)] = 87896, + [SMALL_STATE(1233)] = 87916, + [SMALL_STATE(1234)] = 87936, + [SMALL_STATE(1235)] = 87953, + [SMALL_STATE(1236)] = 87970, + [SMALL_STATE(1237)] = 87985, + [SMALL_STATE(1238)] = 88002, + [SMALL_STATE(1239)] = 88019, + [SMALL_STATE(1240)] = 88036, + [SMALL_STATE(1241)] = 88053, + [SMALL_STATE(1242)] = 88070, + [SMALL_STATE(1243)] = 88087, + [SMALL_STATE(1244)] = 88104, + [SMALL_STATE(1245)] = 88119, + [SMALL_STATE(1246)] = 88134, + [SMALL_STATE(1247)] = 88151, + [SMALL_STATE(1248)] = 88168, + [SMALL_STATE(1249)] = 88185, + [SMALL_STATE(1250)] = 88202, + [SMALL_STATE(1251)] = 88219, + [SMALL_STATE(1252)] = 88234, + [SMALL_STATE(1253)] = 88251, + [SMALL_STATE(1254)] = 88268, + [SMALL_STATE(1255)] = 88285, + [SMALL_STATE(1256)] = 88302, + [SMALL_STATE(1257)] = 88319, + [SMALL_STATE(1258)] = 88336, + [SMALL_STATE(1259)] = 88353, + [SMALL_STATE(1260)] = 88370, + [SMALL_STATE(1261)] = 88387, + [SMALL_STATE(1262)] = 88404, + [SMALL_STATE(1263)] = 88421, + [SMALL_STATE(1264)] = 88438, + [SMALL_STATE(1265)] = 88455, + [SMALL_STATE(1266)] = 88472, + [SMALL_STATE(1267)] = 88489, + [SMALL_STATE(1268)] = 88504, + [SMALL_STATE(1269)] = 88521, + [SMALL_STATE(1270)] = 88538, + [SMALL_STATE(1271)] = 88555, + [SMALL_STATE(1272)] = 88572, + [SMALL_STATE(1273)] = 88589, + [SMALL_STATE(1274)] = 88606, + [SMALL_STATE(1275)] = 88623, + [SMALL_STATE(1276)] = 88638, + [SMALL_STATE(1277)] = 88653, + [SMALL_STATE(1278)] = 88670, + [SMALL_STATE(1279)] = 88687, + [SMALL_STATE(1280)] = 88702, + [SMALL_STATE(1281)] = 88716, + [SMALL_STATE(1282)] = 88730, + [SMALL_STATE(1283)] = 88744, + [SMALL_STATE(1284)] = 88756, + [SMALL_STATE(1285)] = 88768, + [SMALL_STATE(1286)] = 88782, + [SMALL_STATE(1287)] = 88796, + [SMALL_STATE(1288)] = 88810, + [SMALL_STATE(1289)] = 88824, + [SMALL_STATE(1290)] = 88838, + [SMALL_STATE(1291)] = 88852, + [SMALL_STATE(1292)] = 88866, + [SMALL_STATE(1293)] = 88880, + [SMALL_STATE(1294)] = 88894, + [SMALL_STATE(1295)] = 88908, + [SMALL_STATE(1296)] = 88922, + [SMALL_STATE(1297)] = 88936, + [SMALL_STATE(1298)] = 88950, + [SMALL_STATE(1299)] = 88964, + [SMALL_STATE(1300)] = 88978, + [SMALL_STATE(1301)] = 88992, + [SMALL_STATE(1302)] = 89002, + [SMALL_STATE(1303)] = 89014, + [SMALL_STATE(1304)] = 89028, + [SMALL_STATE(1305)] = 89042, + [SMALL_STATE(1306)] = 89052, + [SMALL_STATE(1307)] = 89066, + [SMALL_STATE(1308)] = 89080, + [SMALL_STATE(1309)] = 89094, + [SMALL_STATE(1310)] = 89108, + [SMALL_STATE(1311)] = 89122, + [SMALL_STATE(1312)] = 89136, + [SMALL_STATE(1313)] = 89150, + [SMALL_STATE(1314)] = 89164, + [SMALL_STATE(1315)] = 89178, + [SMALL_STATE(1316)] = 89192, + [SMALL_STATE(1317)] = 89204, + [SMALL_STATE(1318)] = 89218, + [SMALL_STATE(1319)] = 89232, + [SMALL_STATE(1320)] = 89246, + [SMALL_STATE(1321)] = 89260, + [SMALL_STATE(1322)] = 89272, + [SMALL_STATE(1323)] = 89286, + [SMALL_STATE(1324)] = 89300, + [SMALL_STATE(1325)] = 89312, + [SMALL_STATE(1326)] = 89326, + [SMALL_STATE(1327)] = 89340, + [SMALL_STATE(1328)] = 89352, + [SMALL_STATE(1329)] = 89366, + [SMALL_STATE(1330)] = 89380, + [SMALL_STATE(1331)] = 89394, + [SMALL_STATE(1332)] = 89408, + [SMALL_STATE(1333)] = 89422, + [SMALL_STATE(1334)] = 89436, + [SMALL_STATE(1335)] = 89448, + [SMALL_STATE(1336)] = 89462, + [SMALL_STATE(1337)] = 89476, + [SMALL_STATE(1338)] = 89485, + [SMALL_STATE(1339)] = 89494, + [SMALL_STATE(1340)] = 89503, + [SMALL_STATE(1341)] = 89514, + [SMALL_STATE(1342)] = 89525, + [SMALL_STATE(1343)] = 89536, + [SMALL_STATE(1344)] = 89545, + [SMALL_STATE(1345)] = 89554, + [SMALL_STATE(1346)] = 89565, + [SMALL_STATE(1347)] = 89576, + [SMALL_STATE(1348)] = 89585, + [SMALL_STATE(1349)] = 89596, + [SMALL_STATE(1350)] = 89607, + [SMALL_STATE(1351)] = 89616, + [SMALL_STATE(1352)] = 89627, + [SMALL_STATE(1353)] = 89638, + [SMALL_STATE(1354)] = 89649, + [SMALL_STATE(1355)] = 89660, + [SMALL_STATE(1356)] = 89669, + [SMALL_STATE(1357)] = 89680, + [SMALL_STATE(1358)] = 89691, + [SMALL_STATE(1359)] = 89702, + [SMALL_STATE(1360)] = 89713, + [SMALL_STATE(1361)] = 89724, + [SMALL_STATE(1362)] = 89735, + [SMALL_STATE(1363)] = 89746, + [SMALL_STATE(1364)] = 89755, + [SMALL_STATE(1365)] = 89766, + [SMALL_STATE(1366)] = 89777, + [SMALL_STATE(1367)] = 89786, + [SMALL_STATE(1368)] = 89797, + [SMALL_STATE(1369)] = 89806, + [SMALL_STATE(1370)] = 89815, + [SMALL_STATE(1371)] = 89826, + [SMALL_STATE(1372)] = 89837, + [SMALL_STATE(1373)] = 89848, + [SMALL_STATE(1374)] = 89859, + [SMALL_STATE(1375)] = 89870, + [SMALL_STATE(1376)] = 89878, + [SMALL_STATE(1377)] = 89886, + [SMALL_STATE(1378)] = 89894, + [SMALL_STATE(1379)] = 89902, + [SMALL_STATE(1380)] = 89910, + [SMALL_STATE(1381)] = 89918, + [SMALL_STATE(1382)] = 89926, + [SMALL_STATE(1383)] = 89934, + [SMALL_STATE(1384)] = 89942, + [SMALL_STATE(1385)] = 89950, + [SMALL_STATE(1386)] = 89958, + [SMALL_STATE(1387)] = 89966, + [SMALL_STATE(1388)] = 89974, + [SMALL_STATE(1389)] = 89982, + [SMALL_STATE(1390)] = 89990, + [SMALL_STATE(1391)] = 89998, + [SMALL_STATE(1392)] = 90006, + [SMALL_STATE(1393)] = 90014, + [SMALL_STATE(1394)] = 90022, + [SMALL_STATE(1395)] = 90030, + [SMALL_STATE(1396)] = 90038, + [SMALL_STATE(1397)] = 90046, + [SMALL_STATE(1398)] = 90054, + [SMALL_STATE(1399)] = 90062, + [SMALL_STATE(1400)] = 90070, + [SMALL_STATE(1401)] = 90078, + [SMALL_STATE(1402)] = 90086, + [SMALL_STATE(1403)] = 90094, + [SMALL_STATE(1404)] = 90102, + [SMALL_STATE(1405)] = 90110, + [SMALL_STATE(1406)] = 90118, + [SMALL_STATE(1407)] = 90126, + [SMALL_STATE(1408)] = 90134, + [SMALL_STATE(1409)] = 90142, + [SMALL_STATE(1410)] = 90150, + [SMALL_STATE(1411)] = 90158, + [SMALL_STATE(1412)] = 90166, + [SMALL_STATE(1413)] = 90174, + [SMALL_STATE(1414)] = 90182, + [SMALL_STATE(1415)] = 90190, + [SMALL_STATE(1416)] = 90198, + [SMALL_STATE(1417)] = 90206, + [SMALL_STATE(1418)] = 90214, + [SMALL_STATE(1419)] = 90222, + [SMALL_STATE(1420)] = 90230, + [SMALL_STATE(1421)] = 90238, + [SMALL_STATE(1422)] = 90246, + [SMALL_STATE(1423)] = 90254, + [SMALL_STATE(1424)] = 90262, + [SMALL_STATE(1425)] = 90270, + [SMALL_STATE(1426)] = 90278, + [SMALL_STATE(1427)] = 90286, + [SMALL_STATE(1428)] = 90294, + [SMALL_STATE(1429)] = 90302, + [SMALL_STATE(1430)] = 90310, + [SMALL_STATE(1431)] = 90318, + [SMALL_STATE(1432)] = 90326, + [SMALL_STATE(1433)] = 90334, + [SMALL_STATE(1434)] = 90342, + [SMALL_STATE(1435)] = 90350, + [SMALL_STATE(1436)] = 90358, + [SMALL_STATE(1437)] = 90366, + [SMALL_STATE(1438)] = 90374, + [SMALL_STATE(1439)] = 90382, + [SMALL_STATE(1440)] = 90390, + [SMALL_STATE(1441)] = 90398, + [SMALL_STATE(1442)] = 90406, + [SMALL_STATE(1443)] = 90414, + [SMALL_STATE(1444)] = 90422, + [SMALL_STATE(1445)] = 90430, + [SMALL_STATE(1446)] = 90438, + [SMALL_STATE(1447)] = 90446, + [SMALL_STATE(1448)] = 90454, + [SMALL_STATE(1449)] = 90462, + [SMALL_STATE(1450)] = 90470, + [SMALL_STATE(1451)] = 90478, + [SMALL_STATE(1452)] = 90486, + [SMALL_STATE(1453)] = 90494, + [SMALL_STATE(1454)] = 90502, + [SMALL_STATE(1455)] = 90510, + [SMALL_STATE(1456)] = 90518, + [SMALL_STATE(1457)] = 90526, + [SMALL_STATE(1458)] = 90534, + [SMALL_STATE(1459)] = 90542, + [SMALL_STATE(1460)] = 90550, + [SMALL_STATE(1461)] = 90558, + [SMALL_STATE(1462)] = 90566, + [SMALL_STATE(1463)] = 90574, + [SMALL_STATE(1464)] = 90582, + [SMALL_STATE(1465)] = 90590, + [SMALL_STATE(1466)] = 90598, + [SMALL_STATE(1467)] = 90606, + [SMALL_STATE(1468)] = 90614, + [SMALL_STATE(1469)] = 90622, + [SMALL_STATE(1470)] = 90630, + [SMALL_STATE(1471)] = 90638, + [SMALL_STATE(1472)] = 90646, + [SMALL_STATE(1473)] = 90654, + [SMALL_STATE(1474)] = 90662, + [SMALL_STATE(1475)] = 90670, + [SMALL_STATE(1476)] = 90678, + [SMALL_STATE(1477)] = 90686, + [SMALL_STATE(1478)] = 90694, + [SMALL_STATE(1479)] = 90702, + [SMALL_STATE(1480)] = 90710, + [SMALL_STATE(1481)] = 90718, + [SMALL_STATE(1482)] = 90726, + [SMALL_STATE(1483)] = 90734, + [SMALL_STATE(1484)] = 90742, + [SMALL_STATE(1485)] = 90750, + [SMALL_STATE(1486)] = 90758, + [SMALL_STATE(1487)] = 90766, + [SMALL_STATE(1488)] = 90774, + [SMALL_STATE(1489)] = 90782, + [SMALL_STATE(1490)] = 90790, + [SMALL_STATE(1491)] = 90798, + [SMALL_STATE(1492)] = 90806, + [SMALL_STATE(1493)] = 90814, + [SMALL_STATE(1494)] = 90822, + [SMALL_STATE(1495)] = 90830, + [SMALL_STATE(1496)] = 90838, + [SMALL_STATE(1497)] = 90846, + [SMALL_STATE(1498)] = 90854, + [SMALL_STATE(1499)] = 90862, + [SMALL_STATE(1500)] = 90870, + [SMALL_STATE(1501)] = 90878, + [SMALL_STATE(1502)] = 90886, + [SMALL_STATE(1503)] = 90894, + [SMALL_STATE(1504)] = 90902, + [SMALL_STATE(1505)] = 90910, + [SMALL_STATE(1506)] = 90918, + [SMALL_STATE(1507)] = 90926, + [SMALL_STATE(1508)] = 90934, + [SMALL_STATE(1509)] = 90942, + [SMALL_STATE(1510)] = 90950, +}; + +static const TSParseActionEntry ts_parse_actions[] = { + [0] = {.entry = {.count = 0, .reusable = false}}, + [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), + [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT_EXTRA(), + [5] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 0), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(891), + [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1498), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(896), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(896), + [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1225), + [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1490), + [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(793), + [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [25] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1482), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1406), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1399), + [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(917), + [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(918), + [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1337), + [41] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1315), + [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1388), + [45] = {.entry = {.count = 1, .reusable = false}}, SHIFT(26), + [47] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27), + [49] = {.entry = {.count = 1, .reusable = false}}, SHIFT(861), + [51] = {.entry = {.count = 1, .reusable = false}}, SHIFT(370), + [53] = {.entry = {.count = 1, .reusable = false}}, SHIFT(919), + [55] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1367), + [57] = {.entry = {.count = 1, .reusable = false}}, SHIFT(279), + [59] = {.entry = {.count = 1, .reusable = false}}, SHIFT(390), + [61] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1361), + [63] = {.entry = {.count = 1, .reusable = false}}, SHIFT(382), + [65] = {.entry = {.count = 1, .reusable = false}}, SHIFT(920), + [67] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1360), + [69] = {.entry = {.count = 1, .reusable = false}}, SHIFT(519), + [71] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [73] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_return, 1), + [75] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_return, 1), + [77] = {.entry = {.count = 1, .reusable = false}}, SHIFT(525), + [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(525), + [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1165), + [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1448), + [85] = {.entry = {.count = 1, .reusable = false}}, SHIFT(520), + [87] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1286), + [89] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1473), + [91] = {.entry = {.count = 1, .reusable = false}}, SHIFT(2), + [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(3), + [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(523), + [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(296), + [99] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1354), + [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(350), + [103] = {.entry = {.count = 1, .reusable = false}}, SHIFT(245), + [105] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1353), + [107] = {.entry = {.count = 1, .reusable = false}}, SHIFT(349), + [109] = {.entry = {.count = 1, .reusable = false}}, SHIFT(933), + [111] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1342), + [113] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_break, 1), + [115] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_break, 1), + [117] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1474), + [119] = {.entry = {.count = 1, .reusable = false}}, SHIFT(4), + [121] = {.entry = {.count = 1, .reusable = false}}, SHIFT(7), + [123] = {.entry = {.count = 1, .reusable = false}}, SHIFT(182), + [125] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1456), + [127] = {.entry = {.count = 1, .reusable = false}}, SHIFT(6), + [129] = {.entry = {.count = 1, .reusable = false}}, SHIFT(5), + [131] = {.entry = {.count = 1, .reusable = false}}, SHIFT(342), + [133] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1461), + [135] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), + [137] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), + [139] = {.entry = {.count = 1, .reusable = false}}, SHIFT(325), + [141] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1466), + [143] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), + [145] = {.entry = {.count = 1, .reusable = false}}, SHIFT(11), + [147] = {.entry = {.count = 1, .reusable = false}}, SHIFT(311), + [149] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1428), + [151] = {.entry = {.count = 1, .reusable = false}}, SHIFT(13), + [153] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), + [155] = {.entry = {.count = 1, .reusable = false}}, SHIFT(256), + [157] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1475), + [159] = {.entry = {.count = 1, .reusable = false}}, SHIFT(14), + [161] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), + [163] = {.entry = {.count = 1, .reusable = false}}, SHIFT(327), + [165] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1469), + [167] = {.entry = {.count = 1, .reusable = false}}, SHIFT(17), + [169] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), + [171] = {.entry = {.count = 1, .reusable = false}}, SHIFT(221), + [173] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1472), + [175] = {.entry = {.count = 1, .reusable = false}}, SHIFT(18), + [177] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), + [179] = {.entry = {.count = 1, .reusable = false}}, SHIFT(69), + [181] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1470), + [183] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20), + [185] = {.entry = {.count = 1, .reusable = false}}, SHIFT(21), + [187] = {.entry = {.count = 1, .reusable = false}}, SHIFT(159), + [189] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1471), + [191] = {.entry = {.count = 1, .reusable = false}}, SHIFT(23), + [193] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), + [195] = {.entry = {.count = 1, .reusable = false}}, SHIFT(123), + [197] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1468), + [199] = {.entry = {.count = 1, .reusable = false}}, SHIFT(25), + [201] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24), + [203] = {.entry = {.count = 1, .reusable = false}}, SHIFT(278), + [205] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1443), + [207] = {.entry = {.count = 1, .reusable = false}}, SHIFT(28), + [209] = {.entry = {.count = 1, .reusable = false}}, SHIFT(29), + [211] = {.entry = {.count = 1, .reusable = false}}, SHIFT(236), + [213] = {.entry = {.count = 1, .reusable = false}}, SHIFT(943), + [215] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1405), + [217] = {.entry = {.count = 1, .reusable = false}}, SHIFT(30), + [219] = {.entry = {.count = 1, .reusable = false}}, SHIFT(31), + [221] = {.entry = {.count = 1, .reusable = false}}, SHIFT(80), + [223] = {.entry = {.count = 1, .reusable = false}}, SHIFT(923), + [225] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__stmts, 2), + [227] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(891), + [230] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1498), + [233] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(42), + [236] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(896), + [239] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(896), + [242] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1225), + [245] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1490), + [248] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(793), + [251] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(58), + [254] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1482), + [257] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(49), + [260] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(32), + [263] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1406), + [266] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1399), + [269] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(917), + [272] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(918), + [275] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1337), + [278] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1315), + [281] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1388), + [284] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(26), + [287] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(27), + [290] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(861), + [293] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(370), + [296] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(919), + [299] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1367), + [302] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(279), + [305] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(390), + [308] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1361), + [311] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(382), + [314] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(920), + [317] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__stmts, 2), SHIFT_REPEAT(1360), + [320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(814), + [322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1284), + [326] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(449), + [330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(445), + [332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [334] = {.entry = {.count = 1, .reusable = true}}, SHIFT(807), + [336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [338] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1334), + [340] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_program, 1), + [342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(804), + [344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(805), + [346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [348] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1064), + [350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(895), + [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(522), + [354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(460), + [356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(510), + [358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(505), + [360] = {.entry = {.count = 1, .reusable = true}}, SHIFT(465), + [362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(883), + [364] = {.entry = {.count = 1, .reusable = true}}, SHIFT(863), + [366] = {.entry = {.count = 1, .reusable = true}}, SHIFT(872), + [368] = {.entry = {.count = 1, .reusable = true}}, SHIFT(859), + [370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(892), + [372] = {.entry = {.count = 1, .reusable = true}}, SHIFT(876), + [374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(482), + [376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(468), + [378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(517), + [380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(795), + [382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_query, 1), + [384] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_query, 1), + [386] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_query, 2), + [388] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_query, 2), + [390] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), + [392] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__query_stmts, 2), + [394] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(931), + [397] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(85), + [400] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(962), + [403] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(84), + [406] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(253), + [409] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(252), + [412] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(192), + [415] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(191), + [418] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(134), + [421] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(928), + [424] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(83), + [427] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(193), + [430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [432] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [434] = {.entry = {.count = 1, .reusable = false}}, SHIFT(924), + [436] = {.entry = {.count = 1, .reusable = false}}, SHIFT(927), + [438] = {.entry = {.count = 1, .reusable = false}}, SHIFT(931), + [440] = {.entry = {.count = 1, .reusable = false}}, SHIFT(938), + [442] = {.entry = {.count = 1, .reusable = false}}, SHIFT(960), + [444] = {.entry = {.count = 1, .reusable = false}}, SHIFT(955), + [446] = {.entry = {.count = 1, .reusable = false}}, SHIFT(914), + [448] = {.entry = {.count = 1, .reusable = false}}, SHIFT(968), + [450] = {.entry = {.count = 1, .reusable = false}}, SHIFT(937), + [452] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(924), + [455] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(259), + [458] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(944), + [461] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(262), + [464] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(188), + [467] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(187), + [470] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(86), + [473] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(951), + [476] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(158), + [479] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(135), + [482] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(955), + [485] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(255), + [488] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(945), + [491] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(254), + [494] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(375), + [497] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(373), + [500] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(371), + [503] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(921), + [506] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(248), + [509] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(247), + [512] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(914), + [515] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(171), + [518] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(915), + [521] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(170), + [524] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(366), + [527] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(365), + [530] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(190), + [533] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(940), + [536] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(169), + [539] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(168), + [542] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(968), + [545] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(132), + [548] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(961), + [551] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(131), + [554] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(105), + [557] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(106), + [560] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(251), + [563] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(250), + [566] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(249), + [569] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(963), + [572] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(130), + [575] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(385), + [578] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(919), + [581] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(102), + [584] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(969), + [587] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(104), + [590] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(107), + [593] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(108), + [596] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(109), + [599] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(970), + [602] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(111), + [605] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(112), + [608] = {.entry = {.count = 1, .reusable = true}}, SHIFT(919), + [610] = {.entry = {.count = 1, .reusable = true}}, SHIFT(102), + [612] = {.entry = {.count = 1, .reusable = true}}, SHIFT(969), + [614] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [616] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), + [620] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [622] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), + [626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(970), + [628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [632] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(938), + [635] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(330), + [638] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(959), + [641] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(329), + [644] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(186), + [647] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(185), + [650] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(87), + [653] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(946), + [656] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(326), + [659] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(133), + [662] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(937), + [665] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(146), + [668] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(966), + [671] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(145), + [674] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(361), + [677] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(360), + [680] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(196), + [683] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(954), + [686] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(144), + [689] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(142), + [692] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(927), + [695] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(183), + [698] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(916), + [701] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(184), + [704] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(198), + [707] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(197), + [710] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(136), + [713] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(922), + [716] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(222), + [719] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(189), + [722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(943), + [724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(211), + [726] = {.entry = {.count = 1, .reusable = true}}, SHIFT(932), + [728] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), + [730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), + [732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), + [734] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), + [736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(387), + [738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), + [740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(925), + [742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), + [744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), + [746] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(960), + [749] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(103), + [752] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(929), + [755] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(101), + [758] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(209), + [761] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(208), + [764] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(207), + [767] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(957), + [770] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(95), + [773] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(369), + [776] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(943), + [779] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(211), + [782] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(932), + [785] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(210), + [788] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(388), + [791] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(387), + [794] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(386), + [797] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(925), + [800] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(206), + [803] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(205), + [806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(923), + [808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(348), + [810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(935), + [812] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), + [816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(354), + [818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(355), + [820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(956), + [822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(359), + [824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(362), + [826] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(923), + [829] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(348), + [832] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(935), + [835] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(62), + [838] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(351), + [841] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(354), + [844] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(355), + [847] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(956), + [850] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(359), + [853] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(362), + [856] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_nominal, 3), + [858] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_nominal, 3), + [860] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_record, 3), + [862] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_record, 3), + [864] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_paren, 3), + [866] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_paren, 3), + [868] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_array, 3), + [870] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_array, 3), + [872] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_record_concat, 3), + [874] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_record_concat, 3), + [876] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_array_concat, 3), + [878] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_array_concat, 3), + [880] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_unit, 2), + [882] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_unit, 2), + [884] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_tuple, 4), + [886] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_tuple, 4), + [888] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_nominal, 4), + [890] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_nominal, 4), + [892] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_annot, 3), + [894] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_annot, 3), + [896] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1115), + [898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1114), + [900] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_fun, 5), + [902] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_fun, 5), + [904] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_nominal, 1), + [906] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_nominal, 1), + [908] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_fun, 6), + [910] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_fun, 6), + [912] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_wild, 1), + [914] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_wild, 1), + [916] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_name, 1), + [918] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_name, 1), + [920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_array, 2), + [922] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_array, 2), + [924] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_tuple, 5), + [926] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_type_tuple, 5), + [928] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_roll, 2), + [930] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1094), + [932] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(347), + [936] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_roll, 2), + [938] = {.entry = {.count = 1, .reusable = false}}, SHIFT(286), + [940] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1340), + [942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), + [944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286), + [946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), + [948] = {.entry = {.count = 1, .reusable = false}}, SHIFT(283), + [950] = {.entry = {.count = 1, .reusable = true}}, SHIFT(283), + [952] = {.entry = {.count = 1, .reusable = false}}, SHIFT(281), + [954] = {.entry = {.count = 1, .reusable = false}}, SHIFT(280), + [956] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1478), + [958] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_group, 4), + [960] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_group, 4), + [962] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_over, 4), + [964] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_over, 4), + [966] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 2), + [968] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 2), + [970] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_compute, 2), + [972] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_compute, 2), + [974] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 4), + [976] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 4), + [978] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3), + [980] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 3), + [982] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_group, 5), + [984] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_group, 5), + [986] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_compute, 3), + [988] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_compute, 3), + [990] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_if, 3), + [992] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_if, 3), + [994] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1362), + [996] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_roll, 3), + [998] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_roll, 3), + [1000] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_group, 6), + [1002] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_group, 6), + [1004] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_over, 5), + [1006] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_over, 5), + [1008] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1437), + [1010] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_record_access, 3), + [1012] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_record_access, 3), + [1014] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [1016] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1481), + [1018] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_tuple, 4), + [1020] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_tuple, 4), + [1022] = {.entry = {.count = 1, .reusable = false}}, SHIFT(340), + [1024] = {.entry = {.count = 1, .reusable = true}}, SHIFT(340), + [1026] = {.entry = {.count = 1, .reusable = true}}, SHIFT(338), + [1028] = {.entry = {.count = 1, .reusable = false}}, SHIFT(337), + [1030] = {.entry = {.count = 1, .reusable = true}}, SHIFT(337), + [1032] = {.entry = {.count = 1, .reusable = false}}, SHIFT(336), + [1034] = {.entry = {.count = 1, .reusable = false}}, SHIFT(335), + [1036] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__rust, 2), + [1038] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__rust, 2), + [1040] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_array, 3), + [1042] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_array, 3), + [1044] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_method_call, 10, .production_id = 10), + [1046] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_method_call, 10, .production_id = 10), + [1048] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_method_call, 9, .production_id = 10), + [1050] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_method_call, 9, .production_id = 10), + [1052] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_call, 8, .production_id = 2), + [1054] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_call, 8, .production_id = 2), + [1056] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_try, 8), + [1058] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_try, 8), + [1060] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_call, 7, .production_id = 2), + [1062] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_call, 7, .production_id = 2), + [1064] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_try, 7), + [1066] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_try, 7), + [1068] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_select, 3), + [1070] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_select, 3), + [1072] = {.entry = {.count = 1, .reusable = true}}, SHIFT(287), + [1074] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_method_call, 6, .production_id = 10), + [1076] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_method_call, 6, .production_id = 10), + [1078] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_over, 6), + [1080] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_over, 6), + [1082] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__rust, 3), + [1084] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__rust, 3), + [1086] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_paren, 3), + [1088] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_paren, 3), + [1090] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_char, 3), + [1092] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_char, 3), + [1094] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_string, 3), + [1096] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_string, 3), + [1098] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_method_call, 5, .production_id = 10), + [1100] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_method_call, 5, .production_id = 10), + [1102] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_record, 3), + [1104] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_record, 3), + [1106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_fun, 7), + [1108] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_fun, 7), + [1110] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_compute, 4), + [1112] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_compute, 4), + [1114] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_loop, 2), + [1116] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_loop, 2), + [1118] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_do, 2), + [1120] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_do, 2), + [1122] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_for, 5), + [1124] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_for, 5), + [1126] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_match, 5), + [1128] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_match, 5), + [1130] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_if, 5), + [1132] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_if, 5), + [1134] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_fun, 5), + [1136] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_fun, 5), + [1138] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_rust, 1), + [1140] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_rust, 1), + [1142] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_tuple, 5), + [1144] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_tuple, 5), + [1146] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_rust, 2), + [1148] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_rust, 2), + [1150] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_array_access, 4), + [1152] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_array_access, 4), + [1154] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_call, 4, .production_id = 2), + [1156] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_call, 4, .production_id = 2), + [1158] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_group, 7), + [1160] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_group, 7), + [1162] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_array, 2), + [1164] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_array, 2), + [1166] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_binary, 3), + [1168] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_binary, 3), + [1170] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_tuple_access, 3), + [1172] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_tuple_access, 3), + [1174] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_order, 3), + [1176] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_order, 3), + [1178] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_call, 3, .production_id = 2), + [1180] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_call, 3, .production_id = 2), + [1182] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_while, 3), + [1184] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_while, 3), + [1186] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__as, 2), + [1188] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__as, 2), + [1190] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_select, 2), + [1192] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_select, 2), + [1194] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_unit, 2), + [1196] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_unit, 2), + [1198] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_name, 1), + [1200] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_name, 1), + [1202] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_bool, 1), + [1204] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_bool, 1), + [1206] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_constant_string, 2), + [1208] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_constant_string, 2), + [1210] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_record, 2), + [1212] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_record, 2), + [1214] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_continue, 1), + [1216] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_continue, 1), + [1218] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_roll, 4), + [1220] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_roll, 4), + [1222] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_constant, 1), + [1224] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_constant, 1), + [1226] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_from, 4), + [1228] = {.entry = {.count = 1, .reusable = false}}, SHIFT(295), + [1230] = {.entry = {.count = 1, .reusable = true}}, SHIFT(295), + [1232] = {.entry = {.count = 1, .reusable = false}}, SHIFT(285), + [1234] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), + [1236] = {.entry = {.count = 1, .reusable = false}}, SHIFT(180), + [1238] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), + [1240] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178), + [1242] = {.entry = {.count = 1, .reusable = false}}, SHIFT(177), + [1244] = {.entry = {.count = 1, .reusable = true}}, SHIFT(177), + [1246] = {.entry = {.count = 1, .reusable = false}}, SHIFT(176), + [1248] = {.entry = {.count = 1, .reusable = false}}, SHIFT(175), + [1250] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__of, 2), + [1252] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_order, 2), + [1254] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_order, 2), + [1256] = {.entry = {.count = 1, .reusable = true}}, SHIFT(509), + [1258] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_into, 2), + [1260] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_join, 6), + [1262] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_where, 2), + [1264] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_return, 2), + [1266] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_return, 2), + [1268] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_break, 2), + [1270] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_break, 2), + [1272] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_throw, 2), + [1274] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_throw, 2), + [1276] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_val, 4), + [1278] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_query_val, 4), + [1280] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_fun, 6), + [1282] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_fun, 6), + [1284] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_fun, 8), + [1286] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr_fun, 8), + [1288] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_query_union, 2), + [1290] = {.entry = {.count = 1, .reusable = false}}, SHIFT(179), + [1292] = {.entry = {.count = 1, .reusable = true}}, SHIFT(179), + [1294] = {.entry = {.count = 1, .reusable = false}}, SHIFT(181), + [1296] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), + [1298] = {.entry = {.count = 1, .reusable = false}}, SHIFT(323), + [1300] = {.entry = {.count = 1, .reusable = true}}, SHIFT(323), + [1302] = {.entry = {.count = 1, .reusable = true}}, SHIFT(321), + [1304] = {.entry = {.count = 1, .reusable = false}}, SHIFT(306), + [1306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(306), + [1308] = {.entry = {.count = 1, .reusable = false}}, SHIFT(319), + [1310] = {.entry = {.count = 1, .reusable = false}}, SHIFT(318), + [1312] = {.entry = {.count = 1, .reusable = false}}, SHIFT(339), + [1314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(339), + [1316] = {.entry = {.count = 1, .reusable = false}}, SHIFT(341), + [1318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(341), + [1320] = {.entry = {.count = 1, .reusable = false}}, SHIFT(310), + [1322] = {.entry = {.count = 1, .reusable = false}}, SHIFT(309), + [1324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), + [1326] = {.entry = {.count = 1, .reusable = false}}, SHIFT(308), + [1328] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), + [1330] = {.entry = {.count = 1, .reusable = true}}, SHIFT(309), + [1332] = {.entry = {.count = 1, .reusable = true}}, SHIFT(307), + [1334] = {.entry = {.count = 1, .reusable = false}}, SHIFT(320), + [1336] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320), + [1338] = {.entry = {.count = 1, .reusable = false}}, SHIFT(173), + [1340] = {.entry = {.count = 1, .reusable = false}}, SHIFT(164), + [1342] = {.entry = {.count = 1, .reusable = false}}, SHIFT(324), + [1344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(324), + [1346] = {.entry = {.count = 1, .reusable = false}}, SHIFT(322), + [1348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(322), + [1350] = {.entry = {.count = 1, .reusable = false}}, SHIFT(261), + [1352] = {.entry = {.count = 1, .reusable = false}}, SHIFT(263), + [1354] = {.entry = {.count = 1, .reusable = true}}, SHIFT(263), + [1356] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), + [1358] = {.entry = {.count = 1, .reusable = true}}, SHIFT(264), + [1360] = {.entry = {.count = 1, .reusable = false}}, SHIFT(266), + [1362] = {.entry = {.count = 1, .reusable = true}}, SHIFT(266), + [1364] = {.entry = {.count = 1, .reusable = false}}, SHIFT(267), + [1366] = {.entry = {.count = 1, .reusable = false}}, SHIFT(268), + [1368] = {.entry = {.count = 1, .reusable = false}}, SHIFT(258), + [1370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), + [1372] = {.entry = {.count = 1, .reusable = false}}, SHIFT(344), + [1374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(140), + [1376] = {.entry = {.count = 1, .reusable = true}}, SHIFT(344), + [1378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), + [1380] = {.entry = {.count = 1, .reusable = false}}, SHIFT(376), + [1382] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), + [1384] = {.entry = {.count = 1, .reusable = false}}, SHIFT(389), + [1386] = {.entry = {.count = 1, .reusable = false}}, SHIFT(377), + [1388] = {.entry = {.count = 1, .reusable = false}}, SHIFT(219), + [1390] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), + [1392] = {.entry = {.count = 1, .reusable = true}}, SHIFT(217), + [1394] = {.entry = {.count = 1, .reusable = false}}, SHIFT(216), + [1396] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), + [1398] = {.entry = {.count = 1, .reusable = false}}, SHIFT(215), + [1400] = {.entry = {.count = 1, .reusable = false}}, SHIFT(214), + [1402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(378), + [1404] = {.entry = {.count = 1, .reusable = false}}, SHIFT(343), + [1406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(343), + [1408] = {.entry = {.count = 1, .reusable = false}}, SHIFT(353), + [1410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(353), + [1412] = {.entry = {.count = 1, .reusable = false}}, SHIFT(67), + [1414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(67), + [1416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), + [1418] = {.entry = {.count = 1, .reusable = false}}, SHIFT(64), + [1420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), + [1422] = {.entry = {.count = 1, .reusable = false}}, SHIFT(305), + [1424] = {.entry = {.count = 1, .reusable = false}}, SHIFT(160), + [1426] = {.entry = {.count = 1, .reusable = false}}, SHIFT(155), + [1428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(155), + [1430] = {.entry = {.count = 1, .reusable = true}}, SHIFT(153), + [1432] = {.entry = {.count = 1, .reusable = false}}, SHIFT(152), + [1434] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), + [1436] = {.entry = {.count = 1, .reusable = false}}, SHIFT(151), + [1438] = {.entry = {.count = 1, .reusable = false}}, SHIFT(150), + [1440] = {.entry = {.count = 1, .reusable = false}}, SHIFT(68), + [1442] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [1444] = {.entry = {.count = 1, .reusable = false}}, SHIFT(66), + [1446] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [1448] = {.entry = {.count = 1, .reusable = false}}, SHIFT(220), + [1450] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), + [1452] = {.entry = {.count = 1, .reusable = false}}, SHIFT(218), + [1454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), + [1456] = {.entry = {.count = 1, .reusable = false}}, SHIFT(121), + [1458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), + [1460] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [1462] = {.entry = {.count = 1, .reusable = false}}, SHIFT(117), + [1464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [1466] = {.entry = {.count = 1, .reusable = false}}, SHIFT(116), + [1468] = {.entry = {.count = 1, .reusable = false}}, SHIFT(115), + [1470] = {.entry = {.count = 1, .reusable = false}}, SHIFT(122), + [1472] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), + [1474] = {.entry = {.count = 1, .reusable = false}}, SHIFT(120), + [1476] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), + [1478] = {.entry = {.count = 1, .reusable = false}}, SHIFT(157), + [1480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [1482] = {.entry = {.count = 1, .reusable = false}}, SHIFT(154), + [1484] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), + [1486] = {.entry = {.count = 1, .reusable = false}}, SHIFT(289), + [1488] = {.entry = {.count = 1, .reusable = false}}, SHIFT(290), + [1490] = {.entry = {.count = 1, .reusable = true}}, SHIFT(290), + [1492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), + [1494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(291), + [1496] = {.entry = {.count = 1, .reusable = false}}, SHIFT(292), + [1498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(292), + [1500] = {.entry = {.count = 1, .reusable = false}}, SHIFT(294), + [1502] = {.entry = {.count = 1, .reusable = false}}, SHIFT(299), + [1504] = {.entry = {.count = 1, .reusable = false}}, SHIFT(288), + [1506] = {.entry = {.count = 1, .reusable = true}}, SHIFT(288), + [1508] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 6, .production_id = 11), + [1510] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 6, .production_id = 11), + [1512] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 5, .production_id = 6), + [1514] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 5, .production_id = 6), + [1516] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 6, .production_id = 15), + [1518] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 6, .production_id = 15), + [1520] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 6, .production_id = 14), + [1522] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 6, .production_id = 14), + [1524] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 4, .production_id = 4), + [1526] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 4, .production_id = 4), + [1528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1098), + [1530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1100), + [1532] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 5, .production_id = 9), + [1534] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 5, .production_id = 9), + [1536] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 6, .production_id = 11), + [1538] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 6, .production_id = 11), + [1540] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 7, .production_id = 19), + [1542] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 7, .production_id = 19), + [1544] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 7, .production_id = 16), + [1546] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 7, .production_id = 16), + [1548] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_code, 4, .production_id = 5), + [1550] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_code, 4, .production_id = 5), + [1552] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_code, 3, .production_id = 1), + [1554] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_code, 3, .production_id = 1), + [1556] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 7, .production_id = 16), + [1558] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 7, .production_id = 16), + [1560] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 7, .production_id = 18), + [1562] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 7, .production_id = 18), + [1564] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 7, .production_id = 16), + [1566] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 7, .production_id = 16), + [1568] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 6, .production_id = 14), + [1570] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 6, .production_id = 14), + [1572] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 7, .production_id = 19), + [1574] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 7, .production_id = 19), + [1576] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 10, .production_id = 27), + [1578] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 10, .production_id = 27), + [1580] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_expr, 2), + [1582] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_expr, 2), + [1584] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 8, .production_id = 20), + [1586] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 8, .production_id = 20), + [1588] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 13, .production_id = 33), + [1590] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 13, .production_id = 33), + [1592] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 8, .production_id = 20), + [1594] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 8, .production_id = 20), + [1596] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 8, .production_id = 21), + [1598] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 8, .production_id = 21), + [1600] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 5, .production_id = 6), + [1602] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 5, .production_id = 6), + [1604] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 8, .production_id = 22), + [1606] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 8, .production_id = 22), + [1608] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 13, .production_id = 34), + [1610] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 13, .production_id = 34), + [1612] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 5, .production_id = 7), + [1614] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 5, .production_id = 7), + [1616] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 14, .production_id = 35), + [1618] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 14, .production_id = 35), + [1620] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 9, .production_id = 25), + [1622] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 9, .production_id = 25), + [1624] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 9, .production_id = 24), + [1626] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 9, .production_id = 24), + [1628] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 11, .production_id = 29), + [1630] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 11, .production_id = 29), + [1632] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 8, .production_id = 22), + [1634] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 8, .production_id = 22), + [1636] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 9, .production_id = 25), + [1638] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 9, .production_id = 25), + [1640] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 8, .production_id = 23), + [1642] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 8, .production_id = 23), + [1644] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 11, .production_id = 30), + [1646] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 11, .production_id = 30), + [1648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 10, .production_id = 28), + [1650] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 10, .production_id = 28), + [1652] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_var, 5), + [1654] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_var, 5), + [1656] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 12, .production_id = 31), + [1658] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 12, .production_id = 31), + [1660] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_enum, 9, .production_id = 26), + [1662] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_enum, 9, .production_id = 26), + [1664] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_type, 8, .production_id = 22), + [1666] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_type, 8, .production_id = 22), + [1668] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_def, 12, .production_id = 32), + [1670] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_def, 12, .production_id = 32), + [1672] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt_val, 5), + [1674] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt_val, 5), + [1676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1370), + [1678] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1131), + [1680] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1255), + [1682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1432), + [1684] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1136), + [1686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1136), + [1688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(913), + [1690] = {.entry = {.count = 1, .reusable = true}}, SHIFT(880), + [1692] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1137), + [1694] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1403), + [1696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1253), + [1698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1266), + [1700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1269), + [1702] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1242), + [1704] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), + [1706] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1445), + [1708] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1092), + [1710] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), + [1712] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), + [1714] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1345), + [1716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1495), + [1718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1240), + [1720] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1247), + [1722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1135), + [1724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1140), + [1726] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1141), + [1728] = {.entry = {.count = 1, .reusable = false}}, SHIFT(99), + [1730] = {.entry = {.count = 1, .reusable = false}}, SHIFT(100), + [1732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [1734] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [1736] = {.entry = {.count = 1, .reusable = false}}, SHIFT(98), + [1738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(98), + [1740] = {.entry = {.count = 1, .reusable = false}}, SHIFT(96), + [1742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), + [1744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), + [1746] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__exprs, 1), + [1748] = {.entry = {.count = 1, .reusable = false}}, SHIFT(92), + [1750] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), + [1752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(977), + [1754] = {.entry = {.count = 1, .reusable = false}}, SHIFT(235), + [1756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), + [1758] = {.entry = {.count = 1, .reusable = true}}, SHIFT(235), + [1760] = {.entry = {.count = 1, .reusable = false}}, SHIFT(233), + [1762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(233), + [1764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(232), + [1766] = {.entry = {.count = 1, .reusable = false}}, SHIFT(231), + [1768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(231), + [1770] = {.entry = {.count = 1, .reusable = false}}, SHIFT(230), + [1772] = {.entry = {.count = 1, .reusable = false}}, SHIFT(229), + [1774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(481), + [1776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), + [1778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(357), + [1780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), + [1782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(926), + [1784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(363), + [1786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(981), + [1788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(454), + [1790] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(358), + [1793] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(357), + [1796] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(364), + [1799] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(926), + [1802] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__query_stmts, 2), SHIFT_REPEAT(363), + [1805] = {.entry = {.count = 1, .reusable = true}}, SHIFT(512), + [1807] = {.entry = {.count = 1, .reusable = true}}, SHIFT(470), + [1809] = {.entry = {.count = 1, .reusable = true}}, SHIFT(518), + [1811] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__exprs_repeat1, 2), + [1813] = {.entry = {.count = 1, .reusable = true}}, SHIFT(443), + [1815] = {.entry = {.count = 1, .reusable = true}}, SHIFT(444), + [1817] = {.entry = {.count = 1, .reusable = true}}, SHIFT(475), + [1819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(450), + [1821] = {.entry = {.count = 1, .reusable = true}}, SHIFT(455), + [1823] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arm, 3, .production_id = 13), + [1825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(821), + [1827] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [1829] = {.entry = {.count = 1, .reusable = false}}, SHIFT(79), + [1831] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [1833] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [1835] = {.entry = {.count = 1, .reusable = false}}, SHIFT(75), + [1837] = {.entry = {.count = 1, .reusable = true}}, SHIFT(75), + [1839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [1841] = {.entry = {.count = 1, .reusable = false}}, SHIFT(72), + [1843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [1845] = {.entry = {.count = 1, .reusable = false}}, SHIFT(71), + [1847] = {.entry = {.count = 1, .reusable = false}}, SHIFT(70), + [1849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [1851] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_field_expr, 3), + [1853] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_field_name, 3), + [1855] = {.entry = {.count = 1, .reusable = true}}, SHIFT(834), + [1857] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [1859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(478), + [1861] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1327), + [1863] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [1865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(860), + [1867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(447), + [1869] = {.entry = {.count = 1, .reusable = true}}, SHIFT(803), + [1871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(841), + [1873] = {.entry = {.count = 1, .reusable = true}}, SHIFT(274), + [1875] = {.entry = {.count = 1, .reusable = true}}, SHIFT(238), + [1877] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [1879] = {.entry = {.count = 1, .reusable = true}}, SHIFT(842), + [1881] = {.entry = {.count = 1, .reusable = true}}, SHIFT(498), + [1883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(845), + [1885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(819), + [1887] = {.entry = {.count = 1, .reusable = true}}, SHIFT(846), + [1889] = {.entry = {.count = 1, .reusable = true}}, SHIFT(124), + [1891] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), + [1893] = {.entry = {.count = 1, .reusable = true}}, SHIFT(823), + [1895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(276), + [1897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(828), + [1899] = {.entry = {.count = 1, .reusable = true}}, SHIFT(831), + [1901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(979), + [1903] = {.entry = {.count = 1, .reusable = true}}, SHIFT(982), + [1905] = {.entry = {.count = 1, .reusable = true}}, SHIFT(239), + [1907] = {.entry = {.count = 1, .reusable = true}}, SHIFT(822), + [1909] = {.entry = {.count = 1, .reusable = true}}, SHIFT(810), + [1911] = {.entry = {.count = 1, .reusable = true}}, SHIFT(889), + [1913] = {.entry = {.count = 1, .reusable = true}}, SHIFT(840), + [1915] = {.entry = {.count = 1, .reusable = true}}, SHIFT(835), + [1917] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [1919] = {.entry = {.count = 1, .reusable = true}}, SHIFT(869), + [1921] = {.entry = {.count = 1, .reusable = true}}, SHIFT(384), + [1923] = {.entry = {.count = 1, .reusable = true}}, SHIFT(832), + [1925] = {.entry = {.count = 1, .reusable = true}}, SHIFT(833), + [1927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(313), + [1929] = {.entry = {.count = 1, .reusable = true}}, SHIFT(839), + [1931] = {.entry = {.count = 1, .reusable = true}}, SHIFT(827), + [1933] = {.entry = {.count = 1, .reusable = true}}, SHIFT(138), + [1935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), + [1937] = {.entry = {.count = 1, .reusable = true}}, SHIFT(866), + [1939] = {.entry = {.count = 1, .reusable = false}}, SHIFT(118), + [1941] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1349), + [1943] = {.entry = {.count = 1, .reusable = false}}, SHIFT(778), + [1945] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1308), + [1947] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1077), + [1949] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1442), + [1951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1070), + [1953] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1408), + [1955] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1152), + [1957] = {.entry = {.count = 1, .reusable = false}}, SHIFT(789), + [1959] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1465), + [1961] = {.entry = {.count = 1, .reusable = true}}, SHIFT(790), + [1963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1339), + [1965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(780), + [1967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1426), + [1969] = {.entry = {.count = 1, .reusable = true}}, SHIFT(440), + [1971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(786), + [1973] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1259), + [1975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(431), + [1977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1260), + [1979] = {.entry = {.count = 1, .reusable = true}}, SHIFT(782), + [1981] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1318), + [1983] = {.entry = {.count = 1, .reusable = true}}, SHIFT(432), + [1985] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1299), + [1987] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1182), + [1989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1169), + [1991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1304), + [1993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1333), + [1995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1205), + [1997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1323), + [1999] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1398), + [2001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(829), + [2003] = {.entry = {.count = 1, .reusable = false}}, SHIFT(439), + [2005] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1282), + [2007] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1078), + [2009] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1072), + [2011] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1385), + [2013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(437), + [2015] = {.entry = {.count = 1, .reusable = false}}, SHIFT(438), + [2017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1203), + [2019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1184), + [2021] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1215), + [2023] = {.entry = {.count = 1, .reusable = true}}, SHIFT(802), + [2025] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1183), + [2027] = {.entry = {.count = 1, .reusable = true}}, SHIFT(434), + [2029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1295), + [2031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1292), + [2033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1212), + [2035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(787), + [2037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1221), + [2039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(788), + [2041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1226), + [2043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1216), + [2045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1175), + [2047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(435), + [2049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1142), + [2051] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1158), + [2053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1191), + [2055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1325), + [2057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1162), + [2059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1156), + [2061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1166), + [2063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(430), + [2065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(429), + [2067] = {.entry = {.count = 1, .reusable = true}}, SHIFT(820), + [2069] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1228), + [2071] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1170), + [2073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1132), + [2075] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1187), + [2077] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1130), + [2079] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1193), + [2081] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1154), + [2083] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1188), + [2085] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1279), + [2087] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1222), + [2089] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1207), + [2091] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1161), + [2093] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1068), + [2095] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1107), + [2097] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1108), + [2099] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_variant_name, 1), + [2101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_name, 1), + [2103] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_name, 1), + [2105] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1369), + [2107] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1369), + [2109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(793), + [2111] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1425), + [2113] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_variant, 4), + [2115] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_variant, 4), + [2117] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_array, 2), + [2119] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_array, 2), + [2121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_constant, 1), + [2123] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_constant, 1), + [2125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_wild, 1), + [2127] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_wild, 1), + [2129] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_or, 3), + [2131] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_or, 3), + [2133] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_record, 3), + [2135] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_record, 3), + [2137] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_tuple, 4), + [2139] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_tuple, 4), + [2141] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_variant, 3), + [2143] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_variant, 3), + [2145] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_annot, 3), + [2147] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_annot, 3), + [2149] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_record, 2), + [2151] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_record, 2), + [2153] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_record_concat, 3), + [2155] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_record_concat, 3), + [2157] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_array_concat, 3), + [2159] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_array_concat, 3), + [2161] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_paren, 3), + [2163] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_paren, 3), + [2165] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_array, 3), + [2167] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_array, 3), + [2169] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_tuple, 5), + [2171] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_pattern_tuple, 5), + [2173] = {.entry = {.count = 1, .reusable = true}}, SHIFT(941), + [2175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1105), + [2177] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 1), + [2179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(953), + [2181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(952), + [2183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(936), + [2185] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2), + [2187] = {.entry = {.count = 1, .reusable = true}}, SHIFT(881), + [2189] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1146), + [2191] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1118), + [2193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__types, 1), + [2195] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_pattern_field, 3), + [2197] = {.entry = {.count = 1, .reusable = true}}, SHIFT(331), + [2199] = {.entry = {.count = 1, .reusable = false}}, SHIFT_EXTRA(), + [2201] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1155), + [2203] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1283), + [2205] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1223), + [2207] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [2209] = {.entry = {.count = 1, .reusable = true}}, SHIFT(194), + [2211] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240), + [2213] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), + [2215] = {.entry = {.count = 1, .reusable = true}}, SHIFT(241), + [2217] = {.entry = {.count = 1, .reusable = true}}, SHIFT(246), + [2219] = {.entry = {.count = 1, .reusable = true}}, SHIFT(242), + [2221] = {.entry = {.count = 1, .reusable = true}}, SHIFT(333), + [2223] = {.entry = {.count = 1, .reusable = true}}, SHIFT(277), + [2225] = {.entry = {.count = 1, .reusable = true}}, SHIFT(315), + [2227] = {.entry = {.count = 1, .reusable = true}}, SHIFT(521), + [2229] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1197), + [2231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1335), + [2233] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), + [2235] = {.entry = {.count = 1, .reusable = true}}, SHIFT(380), + [2237] = {.entry = {.count = 1, .reusable = true}}, SHIFT(462), + [2239] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1227), + [2241] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), + [2243] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__types_repeat1, 2), + [2245] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_constant_string_repeat1, 2), + [2247] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_constant_string_repeat1, 2), SHIFT_REPEAT(1171), + [2250] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_constant_string_repeat1, 2), SHIFT_REPEAT(1335), + [2253] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), + [2255] = {.entry = {.count = 1, .reusable = true}}, SHIFT(82), + [2257] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), + [2259] = {.entry = {.count = 1, .reusable = true}}, SHIFT(316), + [2261] = {.entry = {.count = 1, .reusable = true}}, SHIFT(882), + [2263] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1192), + [2265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), + [2267] = {.entry = {.count = 1, .reusable = true}}, SHIFT(791), + [2269] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1171), + [2271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [2273] = {.entry = {.count = 1, .reusable = true}}, SHIFT(237), + [2275] = {.entry = {.count = 1, .reusable = true}}, SHIFT(223), + [2277] = {.entry = {.count = 1, .reusable = true}}, SHIFT(174), + [2279] = {.entry = {.count = 1, .reusable = true}}, SHIFT(228), + [2281] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), + [2283] = {.entry = {.count = 1, .reusable = true}}, SHIFT(297), + [2285] = {.entry = {.count = 1, .reusable = true}}, SHIFT(298), + [2287] = {.entry = {.count = 1, .reusable = true}}, SHIFT(265), + [2289] = {.entry = {.count = 1, .reusable = true}}, SHIFT(212), + [2291] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), + [2293] = {.entry = {.count = 1, .reusable = true}}, SHIFT(282), + [2295] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), + [2297] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__rust_repeat1, 2), SHIFT_REPEAT(1155), + [2300] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__rust_repeat1, 2), + [2302] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__rust_repeat1, 2), SHIFT_REPEAT(1192), + [2305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137), + [2307] = {.entry = {.count = 1, .reusable = true}}, SHIFT(275), + [2309] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [2311] = {.entry = {.count = 1, .reusable = true}}, SHIFT(167), + [2313] = {.entry = {.count = 1, .reusable = true}}, SHIFT(480), + [2315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), + [2317] = {.entry = {.count = 1, .reusable = true}}, SHIFT(143), + [2319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(149), + [2321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(304), + [2323] = {.entry = {.count = 1, .reusable = true}}, SHIFT(887), + [2325] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1176), + [2327] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), + [2329] = {.entry = {.count = 1, .reusable = true}}, SHIFT(332), + [2331] = {.entry = {.count = 1, .reusable = true}}, SHIFT(270), + [2333] = {.entry = {.count = 1, .reusable = true}}, SHIFT(379), + [2335] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [2337] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), + [2339] = {.entry = {.count = 1, .reusable = true}}, SHIFT(372), + [2341] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), + [2343] = {.entry = {.count = 1, .reusable = true}}, SHIFT(293), + [2345] = {.entry = {.count = 1, .reusable = true}}, SHIFT(147), + [2347] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), + [2349] = {.entry = {.count = 1, .reusable = true}}, SHIFT(139), + [2351] = {.entry = {.count = 1, .reusable = true}}, SHIFT(314), + [2353] = {.entry = {.count = 1, .reusable = true}}, SHIFT(271), + [2355] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), + [2357] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), + [2359] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [2361] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [2363] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [2365] = {.entry = {.count = 1, .reusable = true}}, SHIFT(273), + [2367] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1321), + [2369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), + [2371] = {.entry = {.count = 1, .reusable = true}}, SHIFT(792), + [2373] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1178), + [2375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), + [2377] = {.entry = {.count = 1, .reusable = true}}, SHIFT(477), + [2379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), + [2381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), + [2383] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), + [2385] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), + [2387] = {.entry = {.count = 1, .reusable = true}}, SHIFT(81), + [2389] = {.entry = {.count = 1, .reusable = true}}, SHIFT(381), + [2391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(812), + [2393] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1322), + [2395] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1122), + [2397] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__exprs, 2), + [2399] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1347), + [2401] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1439), + [2403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1486), + [2405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1103), + [2407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(317), + [2409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1112), + [2411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1081), + [2413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), + [2415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1127), + [2417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1128), + [2419] = {.entry = {.count = 1, .reusable = true}}, SHIFT(224), + [2421] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__types_repeat1, 2), SHIFT_REPEAT(1118), + [2424] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__patterns_repeat1, 2), SHIFT_REPEAT(941), + [2427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1117), + [2429] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), + [2431] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1082), + [2433] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1421), + [2435] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1302), + [2437] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1305), + [2439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1123), + [2441] = {.entry = {.count = 1, .reusable = true}}, SHIFT(374), + [2443] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__patterns, 2), + [2445] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1120), + [2447] = {.entry = {.count = 1, .reusable = true}}, SHIFT(328), + [2449] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1109), + [2451] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1111), + [2453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(334), + [2455] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1143), + [2457] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1093), + [2459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), + [2461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1324), + [2463] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1085), + [2465] = {.entry = {.count = 1, .reusable = true}}, SHIFT(272), + [2467] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1079), + [2469] = {.entry = {.count = 1, .reusable = true}}, SHIFT(785), + [2471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1080), + [2473] = {.entry = {.count = 1, .reusable = true}}, SHIFT(427), + [2475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1126), + [2477] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), + [2479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1091), + [2481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(300), + [2483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1097), + [2485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(148), + [2487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1124), + [2489] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), + [2491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1090), + [2493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(244), + [2495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1101), + [2497] = {.entry = {.count = 1, .reusable = true}}, SHIFT(356), + [2499] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__types, 2), + [2501] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1457), + [2503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1102), + [2505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301), + [2507] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1099), + [2509] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), + [2511] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1089), + [2513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(303), + [2515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1412), + [2517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1435), + [2519] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1414), + [2521] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__exprs_repeat1, 2), SHIFT_REPEAT(128), + [2524] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_stmt_enum_repeat1, 1, .production_id = 3), + [2526] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1257), + [2528] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1069), + [2530] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1106), + [2532] = {.entry = {.count = 1, .reusable = true}}, SHIFT(63), + [2534] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1113), + [2536] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_field, 3), + [2538] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1276), + [2540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(830), + [2542] = {.entry = {.count = 1, .reusable = true}}, SHIFT(798), + [2544] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__expr_fields_repeat1, 2), + [2546] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__expr_fields_repeat1, 2), SHIFT_REPEAT(44), + [2549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1168), + [2551] = {.entry = {.count = 1, .reusable = true}}, SHIFT(818), + [2553] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__attributes_repeat1, 2), + [2555] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__attributes_repeat1, 2), SHIFT_REPEAT(1341), + [2558] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__arms, 1), + [2560] = {.entry = {.count = 1, .reusable = true}}, SHIFT(906), + [2562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__pattern_fields, 1), + [2564] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1373), + [2566] = {.entry = {.count = 1, .reusable = true}}, SHIFT(800), + [2568] = {.entry = {.count = 1, .reusable = true}}, SHIFT(799), + [2570] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_fields, 2), + [2572] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1351), + [2574] = {.entry = {.count = 1, .reusable = true}}, SHIFT(825), + [2576] = {.entry = {.count = 1, .reusable = true}}, SHIFT(826), + [2578] = {.entry = {.count = 1, .reusable = true}}, SHIFT(815), + [2580] = {.entry = {.count = 1, .reusable = true}}, SHIFT(816), + [2582] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__pattern_fields, 2), + [2584] = {.entry = {.count = 1, .reusable = true}}, SHIFT(441), + [2586] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__arms, 2), + [2588] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 4), + [2590] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 1), + [2592] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1133), + [2594] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__arms_repeat1, 2), + [2596] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__arms_repeat1, 2), SHIFT_REPEAT(906), + [2599] = {.entry = {.count = 1, .reusable = true}}, SHIFT(824), + [2601] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_meta, 3), + [2603] = {.entry = {.count = 1, .reusable = true}}, SHIFT(836), + [2605] = {.entry = {.count = 1, .reusable = true}}, SHIFT(838), + [2607] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__attributes, 2), + [2609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1341), + [2611] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__attributes, 1), + [2613] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__type_fields_repeat1, 2), + [2615] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__type_fields_repeat1, 2), SHIFT_REPEAT(1351), + [2618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(806), + [2620] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__type_fields, 1), + [2622] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_fields, 2), + [2624] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [2626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1202), + [2628] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_string_interpolation, 2), + [2630] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_string_interpolation, 2), + [2632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1374), + [2634] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__generics, 2), + [2636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(794), + [2638] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__generics_repeat1, 2), SHIFT_REPEAT(1374), + [2641] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__generics_repeat1, 2), + [2643] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_code_repeat1, 2), + [2645] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_code_repeat1, 2), SHIFT_REPEAT(1320), + [2648] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_code, 1), + [2650] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1320), + [2652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(844), + [2654] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_type_field, 1), + [2656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1125), + [2658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(813), + [2660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(843), + [2662] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__generics, 1), + [2664] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_stmt_enum_repeat1, 2, .production_id = 8), SHIFT_REPEAT(1276), + [2667] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_stmt_enum_repeat1, 2, .production_id = 8), + [2669] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__pattern_fields_repeat1, 2), + [2671] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__pattern_fields_repeat1, 2), SHIFT_REPEAT(1373), + [2674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__expr_fields, 1), + [2676] = {.entry = {.count = 1, .reusable = true}}, SHIFT(796), + [2678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(837), + [2680] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1316), + [2682] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [2684] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1455), + [2686] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1460), + [2688] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1462), + [2690] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1234), + [2692] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_stmt_enum_repeat1, 3, .production_id = 12), + [2694] = {.entry = {.count = 1, .reusable = true}}, SHIFT(459), + [2696] = {.entry = {.count = 1, .reusable = true}}, SHIFT(507), + [2698] = {.entry = {.count = 1, .reusable = true}}, SHIFT(857), + [2700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(858), + [2702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_generic, 1), + [2704] = {.entry = {.count = 1, .reusable = true}}, SHIFT(994), + [2706] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr_field, 1), + [2708] = {.entry = {.count = 1, .reusable = true}}, SHIFT(853), + [2710] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1272), + [2712] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1274), + [2714] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1096), + [2716] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1312), + [2718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1237), + [2720] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1268), + [2722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1095), + [2724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1291), + [2726] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1273), + [2728] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_stmt_enum_repeat1, 4, .production_id = 17), + [2730] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3), + [2732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(855), + [2734] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1238), + [2736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1248), + [2738] = {.entry = {.count = 1, .reusable = true}}, SHIFT(884), + [2740] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1401), + [2742] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1488), + [2744] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), + [2746] = {.entry = {.count = 1, .reusable = true}}, SHIFT(473), + [2748] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [2750] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1418), + [2752] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1417), + [2754] = {.entry = {.count = 1, .reusable = true}}, SHIFT(499), + [2756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1087), + [2758] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1148), + [2760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1066), + [2762] = {.entry = {.count = 1, .reusable = true}}, SHIFT(783), + [2764] = {.entry = {.count = 1, .reusable = true}}, SHIFT(879), + [2766] = {.entry = {.count = 1, .reusable = true}}, SHIFT(909), + [2768] = {.entry = {.count = 1, .reusable = true}}, SHIFT(854), + [2770] = {.entry = {.count = 1, .reusable = true}}, SHIFT(849), + [2772] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1387), + [2774] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1306), + [2776] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1366), + [2778] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1250), + [2780] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1258), + [2782] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), + [2784] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1235), + [2786] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1067), + [2788] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1365), + [2790] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1147), + [2792] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1088), + [2794] = {.entry = {.count = 1, .reusable = true}}, SHIFT(491), + [2796] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1346), + [2798] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1491), + [2800] = {.entry = {.count = 1, .reusable = true}}, SHIFT(903), + [2802] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1359), + [2804] = {.entry = {.count = 1, .reusable = true}}, SHIFT(848), + [2806] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1071), + [2808] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1265), + [2810] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1277), + [2812] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1264), + [2814] = {.entry = {.count = 1, .reusable = true}}, SHIFT(871), + [2816] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1508), + [2818] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1086), + [2820] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1504), + [2822] = {.entry = {.count = 1, .reusable = true}}, SHIFT(890), + [2824] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [2826] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1119), + [2828] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1239), + [2830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1139), + [2832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(950), + [2834] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1352), + [2836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [2838] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1083), + [2840] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1121), + [2842] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1261), + [2844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(898), + [2846] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1422), + [2848] = {.entry = {.count = 1, .reusable = true}}, SHIFT(484), + [2850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1451), + [2852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1364), + [2854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(479), + [2856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(986), + [2858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1332), + [2860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(983), + [2862] = {.entry = {.count = 1, .reusable = true}}, SHIFT(513), + [2864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1243), + [2866] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1287), + [2868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(868), + [2870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1392), + [2872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1104), + [2874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(905), + [2876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1390), + [2878] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1073), + [2880] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1263), + [2882] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1252), + [2884] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1433), + [2886] = {.entry = {.count = 1, .reusable = true}}, SHIFT(875), + [2888] = {.entry = {.count = 1, .reusable = true}}, SHIFT(865), + [2890] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1297), + [2892] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1270), + [2894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(862), + [2896] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1256), + [2898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1356), + [2900] = {.entry = {.count = 1, .reusable = true}}, SHIFT(908), + [2902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1110), + [2904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1246), + [2906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1424), + [2908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1357), + [2910] = {.entry = {.count = 1, .reusable = true}}, SHIFT(912), + [2912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1358), + [2914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1278), + [2916] = {.entry = {.count = 1, .reusable = true}}, SHIFT(463), + [2918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1116), + [2920] = {.entry = {.count = 1, .reusable = true}}, SHIFT(907), + [2922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(779), + [2924] = {.entry = {.count = 1, .reusable = true}}, SHIFT(904), + [2926] = {.entry = {.count = 1, .reusable = true}}, SHIFT(902), + [2928] = {.entry = {.count = 1, .reusable = true}}, SHIFT(901), + [2930] = {.entry = {.count = 1, .reusable = true}}, SHIFT(900), + [2932] = {.entry = {.count = 1, .reusable = true}}, SHIFT(899), + [2934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(910), + [2936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(897), + [2938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(911), + [2940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1383), + [2942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1407), + [2944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1075), + [2946] = {.entry = {.count = 1, .reusable = true}}, SHIFT(466), + [2948] = {.entry = {.count = 1, .reusable = true}}, SHIFT(811), + [2950] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1074), + [2952] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1371), + [2954] = {.entry = {.count = 1, .reusable = true}}, SHIFT(781), + [2956] = {.entry = {.count = 1, .reusable = true}}, SHIFT(867), + [2958] = {.entry = {.count = 1, .reusable = true}}, SHIFT(850), + [2960] = {.entry = {.count = 1, .reusable = true}}, SHIFT(874), + [2962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [2964] = {.entry = {.count = 1, .reusable = true}}, SHIFT(464), + [2966] = {.entry = {.count = 1, .reusable = false}}, SHIFT(1386), + [2968] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1348), + [2970] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1254), + [2972] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426), + [2974] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1134), + [2976] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1076), + [2978] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1497), + [2980] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [2982] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1249), + [2984] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1241), + [2986] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1423), + [2988] = {.entry = {.count = 1, .reusable = true}}, SHIFT(495), + [2990] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1271), + [2992] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1084), + [2994] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1301), + [2996] = {.entry = {.count = 1, .reusable = true}}, SHIFT(1262), + [2998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(784), + [3000] = {.entry = {.count = 1, .reusable = true}}, SHIFT(856), +}; + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef _WIN32 +#define extern __declspec(dllexport) +#endif + +extern const TSLanguage *tree_sitter_arc_lang(void) { + static const TSLanguage language = { + .version = LANGUAGE_VERSION, + .symbol_count = SYMBOL_COUNT, + .alias_count = ALIAS_COUNT, + .token_count = TOKEN_COUNT, + .external_token_count = EXTERNAL_TOKEN_COUNT, + .state_count = STATE_COUNT, + .large_state_count = LARGE_STATE_COUNT, + .production_id_count = PRODUCTION_ID_COUNT, + .field_count = FIELD_COUNT, + .max_alias_sequence_length = MAX_ALIAS_SEQUENCE_LENGTH, + .parse_table = &ts_parse_table[0][0], + .small_parse_table = ts_small_parse_table, + .small_parse_table_map = ts_small_parse_table_map, + .parse_actions = ts_parse_actions, + .symbol_names = ts_symbol_names, + .field_names = ts_field_names, + .field_map_slices = ts_field_map_slices, + .field_map_entries = ts_field_map_entries, + .symbol_metadata = ts_symbol_metadata, + .public_symbol_map = ts_symbol_map, + .alias_map = ts_non_terminal_alias_map, + .alias_sequences = &ts_alias_sequences[0][0], + .lex_modes = ts_lex_modes, + .lex_fn = ts_lex, + .keyword_lex_fn = ts_lex_keywords, + .keyword_capture_token = sym_name, + .primary_state_ids = ts_primary_state_ids, + }; + return &language; +} +#ifdef __cplusplus +} +#endif diff --git a/arc-lang/crates/tree-sitter/src/tree_sitter/parser.h b/arc-lang/crates/tree-sitter/src/tree_sitter/parser.h new file mode 100644 index 000000000..2b14ac104 --- /dev/null +++ b/arc-lang/crates/tree-sitter/src/tree_sitter/parser.h @@ -0,0 +1,224 @@ +#ifndef TREE_SITTER_PARSER_H_ +#define TREE_SITTER_PARSER_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define ts_builtin_sym_error ((TSSymbol)-1) +#define ts_builtin_sym_end 0 +#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024 + +typedef uint16_t TSStateId; + +#ifndef TREE_SITTER_API_H_ +typedef uint16_t TSSymbol; +typedef uint16_t TSFieldId; +typedef struct TSLanguage TSLanguage; +#endif + +typedef struct { + TSFieldId field_id; + uint8_t child_index; + bool inherited; +} TSFieldMapEntry; + +typedef struct { + uint16_t index; + uint16_t length; +} TSFieldMapSlice; + +typedef struct { + bool visible; + bool named; + bool supertype; +} TSSymbolMetadata; + +typedef struct TSLexer TSLexer; + +struct TSLexer { + int32_t lookahead; + TSSymbol result_symbol; + void (*advance)(TSLexer *, bool); + void (*mark_end)(TSLexer *); + uint32_t (*get_column)(TSLexer *); + bool (*is_at_included_range_start)(const TSLexer *); + bool (*eof)(const TSLexer *); +}; + +typedef enum { + TSParseActionTypeShift, + TSParseActionTypeReduce, + TSParseActionTypeAccept, + TSParseActionTypeRecover, +} TSParseActionType; + +typedef union { + struct { + uint8_t type; + TSStateId state; + bool extra; + bool repetition; + } shift; + struct { + uint8_t type; + uint8_t child_count; + TSSymbol symbol; + int16_t dynamic_precedence; + uint16_t production_id; + } reduce; + uint8_t type; +} TSParseAction; + +typedef struct { + uint16_t lex_state; + uint16_t external_lex_state; +} TSLexMode; + +typedef union { + TSParseAction action; + struct { + uint8_t count; + bool reusable; + } entry; +} TSParseActionEntry; + +struct TSLanguage { + uint32_t version; + uint32_t symbol_count; + uint32_t alias_count; + uint32_t token_count; + uint32_t external_token_count; + uint32_t state_count; + uint32_t large_state_count; + uint32_t production_id_count; + uint32_t field_count; + uint16_t max_alias_sequence_length; + const uint16_t *parse_table; + const uint16_t *small_parse_table; + const uint32_t *small_parse_table_map; + const TSParseActionEntry *parse_actions; + const char * const *symbol_names; + const char * const *field_names; + const TSFieldMapSlice *field_map_slices; + const TSFieldMapEntry *field_map_entries; + const TSSymbolMetadata *symbol_metadata; + const TSSymbol *public_symbol_map; + const uint16_t *alias_map; + const TSSymbol *alias_sequences; + const TSLexMode *lex_modes; + bool (*lex_fn)(TSLexer *, TSStateId); + bool (*keyword_lex_fn)(TSLexer *, TSStateId); + TSSymbol keyword_capture_token; + struct { + const bool *states; + const TSSymbol *symbol_map; + void *(*create)(void); + void (*destroy)(void *); + bool (*scan)(void *, TSLexer *, const bool *symbol_whitelist); + unsigned (*serialize)(void *, char *); + void (*deserialize)(void *, const char *, unsigned); + } external_scanner; + const TSStateId *primary_state_ids; +}; + +/* + * Lexer Macros + */ + +#define START_LEXER() \ + bool result = false; \ + bool skip = false; \ + bool eof = false; \ + int32_t lookahead; \ + goto start; \ + next_state: \ + lexer->advance(lexer, skip); \ + start: \ + skip = false; \ + lookahead = lexer->lookahead; + +#define ADVANCE(state_value) \ + { \ + state = state_value; \ + goto next_state; \ + } + +#define SKIP(state_value) \ + { \ + skip = true; \ + state = state_value; \ + goto next_state; \ + } + +#define ACCEPT_TOKEN(symbol_value) \ + result = true; \ + lexer->result_symbol = symbol_value; \ + lexer->mark_end(lexer); + +#define END_STATE() return result; + +/* + * Parse Table Macros + */ + +#define SMALL_STATE(id) id - LARGE_STATE_COUNT + +#define STATE(id) id + +#define ACTIONS(id) id + +#define SHIFT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = state_value \ + } \ + }} + +#define SHIFT_REPEAT(state_value) \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .state = state_value, \ + .repetition = true \ + } \ + }} + +#define SHIFT_EXTRA() \ + {{ \ + .shift = { \ + .type = TSParseActionTypeShift, \ + .extra = true \ + } \ + }} + +#define REDUCE(symbol_val, child_count_val, ...) \ + {{ \ + .reduce = { \ + .type = TSParseActionTypeReduce, \ + .symbol = symbol_val, \ + .child_count = child_count_val, \ + __VA_ARGS__ \ + }, \ + }} + +#define RECOVER() \ + {{ \ + .type = TSParseActionTypeRecover \ + }} + +#define ACCEPT_INPUT() \ + {{ \ + .type = TSParseActionTypeAccept \ + }} + +#ifdef __cplusplus +} +#endif + +#endif // TREE_SITTER_PARSER_H_ diff --git a/arc-lang/crates/version/Cargo.toml b/arc-lang/crates/version/Cargo.toml new file mode 100644 index 000000000..c9fd3929d --- /dev/null +++ b/arc-lang/crates/version/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "version" +version.workspace = true +edition.workspace = true +authors.workspace = true +homepage.workspace = true +repository.workspace = true +readme.workspace = true +build = "build.rs" + +[dependencies] + +[build-dependencies] +built.workspace = true diff --git a/arc-lang/crates/version/build.rs b/arc-lang/crates/version/build.rs new file mode 100644 index 000000000..4306bb787 --- /dev/null +++ b/arc-lang/crates/version/build.rs @@ -0,0 +1,3 @@ +fn main() { + built::write_built_file().expect("Failed to acquire build-time information") +} diff --git a/arc-lang/crates/version/src/lib.rs b/arc-lang/crates/version/src/lib.rs new file mode 100644 index 000000000..3989f3072 --- /dev/null +++ b/arc-lang/crates/version/src/lib.rs @@ -0,0 +1,11 @@ +mod data { + include!(concat!(env!("OUT_DIR"), "/built.rs")); +} + +pub fn show() { + println!(" version: {}", data::PKG_VERSION); + println!(" target: {}", data::TARGET); + println!(" profile: {}", data::PROFILE); + println!("compiler: {}", data::RUSTC_VERSION); + println!(" time: {}", data::BUILT_TIME_UTC); +} diff --git a/arc-lang/crates/website/config.toml b/arc-lang/crates/website/config.toml new file mode 100644 index 000000000..87319c419 --- /dev/null +++ b/arc-lang/crates/website/config.toml @@ -0,0 +1,25 @@ +# The URL the site will be built for +base_url = "https://cda-group.github.io/arc/" +theme = "juice" + +# Whether to automatically compile all Sass files in the sass directory +compile_sass = true + +# Whether to build a search index to be used later on by a JavaScript library +build_search_index = false + +[markdown] +# Whether to do syntax highlighting +# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola +highlight_code = false + +[extra] +juice_logo_name = "Arc-Lang" +juice_logo_path = "logo.png" +juice_extra_menu = [ + { title = "Github", link = "https://github.com/cda-group/arc"} +] +juice_exclude_menu = [ + "exclude_from_nav" +] +repository_url = "https://github.com/cda-group/arc" diff --git a/arc-lang/crates/website/content/_index.md b/arc-lang/crates/website/content/_index.md new file mode 100644 index 000000000..bd39969b0 --- /dev/null +++ b/arc-lang/crates/website/content/_index.md @@ -0,0 +1,45 @@ ++++ +title = "Arc-Lang" +sort_by = "weight" ++++ + +**Arc-Lang** is a programming language for processing data streams. + +## Features + +* Consume and produce streams using different connectors (e.g., Kafka, TCP, files). +* Decode and encode events using different data formats (e.g., CSV, JSON, Avro). +* Interactively create dataflows that transform, filter and aggregate data through concise query syntax. +* Transparently execute programs locally or distributed. +* Inject Rust and Python code into programs. + +## Installation + +

+$ git clone https://github.com/cda-group/arc -b klas/v0.1.0 --single-branch
+$ cargo install --path arc/arc-lang
+
+ +## Usage + +

+$ arc-lang
+>> print("Hello world!");
+Hello world!
+
+ +## An example + +

+$ for i in {1..100}; do echo $RANDOM; done > data.csv
+$ arc-lang
+>> from n:i32 in source(file("data.csv"), csv())
+   select {result:n+1}
+   into sink(file("output.csv"), csv());
+
+ +## More + +* Checkout the [examples](https://github.com/cda-group/arc/tree/klas/v1/arc-lang/examples) directory for working examples (more to be added soon). + +* View the specification of Arc-Lang in the [Arc-Lang Research Report](/arc/Arc-Lang-Report.pdf). diff --git a/arc-lang/crates/website/content/about.md b/arc-lang/crates/website/content/about.md new file mode 100644 index 000000000..412498445 --- /dev/null +++ b/arc-lang/crates/website/content/about.md @@ -0,0 +1,25 @@ ++++ +title = "About" +description = "About" +weight = 3 ++++ + +# Juice + +**Juice** is an intuitive, elegant, and responsive Zola theme for product sites. +Built by [Huhu.io](https://huhu.io), adopted by a several product sites. + +# Logo + +![](/juice.svg) + +# Zola + +[Zola](https://www.getzola.org) is a fast static site generator in a single binary with everything built-in. + + +# Huhu.io + +[Huhu.io](https://huhu.io) is a global community of coders dedicated to making cool stuff coders need and want. +We focus on enabling the developer community by curating, incubating, and launching tools based on great ideas, +providing support and funding that allows our engineers to develop what they want, the way they want. diff --git a/arc-lang/crates/website/content/changelog.md b/arc-lang/crates/website/content/changelog.md new file mode 100644 index 000000000..45da74627 --- /dev/null +++ b/arc-lang/crates/website/content/changelog.md @@ -0,0 +1,43 @@ ++++ +title = "Changelog" +description = "Changelog" +weight = 2 ++++ + +# v0.6.0 - 2021-10-05 + +- Add `favicon` block. +- Always align footer bottom. {{ issue(id=4) }} +- Support config favicon. Fixes {{ issue(id=5) }}. +- Table of Content supports auto-scroll if the list is too long. + +# v0.5.0 - 2021-03-02 + +- Add `issue` shortcode. +- Add `sidebar` block. +- Adjust blockquote background color. +- Fix explore-more class left align. + +# v0.4.0 - 2020-11-18 + +- Prevent showcase images be included by downstream Zola project. +- Fix TOC highlight in localhost mode. See {{ issue(id=1) }}. +- Hide TOC for empty markdown content page. + +# v0.3.0 - 2020-07-17 + +- Rename css filename to avoid conflicts. +- Replace sass variables with css variable. +- Add `--toc-highlight-text-color` variable. +- Add normalize.css. + +# v0.2.0 - 2020-06-28 + +- Add extra juice_extra_menu config. +- Add color customization CSS variables. +- Improve docs and blockquote style. +- Support customize logo and name. + +# v0.1.0 - 2020-06-21 + +- First release! \ No newline at end of file diff --git a/arc-lang/crates/website/content/exclude_from_nav.md b/arc-lang/crates/website/content/exclude_from_nav.md new file mode 100644 index 000000000..7e4b445d3 --- /dev/null +++ b/arc-lang/crates/website/content/exclude_from_nav.md @@ -0,0 +1,9 @@ ++++ +title = "exclude_from_nav" +description = "Page without nav link" +weight = 3 ++++ + +# Hidden page + +This page will not be added to the nav links in the header. diff --git a/arc-lang/crates/website/content/favicon.ico b/arc-lang/crates/website/content/favicon.ico new file mode 100644 index 000000000..ca809d66b Binary files /dev/null and b/arc-lang/crates/website/content/favicon.ico differ diff --git a/arc-lang/crates/website/content/hero/_index.md b/arc-lang/crates/website/content/hero/_index.md new file mode 100644 index 000000000..8b20c7772 --- /dev/null +++ b/arc-lang/crates/website/content/hero/_index.md @@ -0,0 +1,23 @@ ++++ ++++ +``` +type Item = {name:String, price:f64, mass:f64}; +type Request = {id:u32, items: Vec[Item], t:Time, src_id:u32, dst_id:u32}; +type Area = {id:u32, lon:f32, lat:f32}; + +val model = model(path("cost_predictor.pb"), tf()): Model[[f32;3],[f32;1]; +val areas = set(path("areas.csv"), csv()): Set[Area]; + +---rust +fn custom_predicate(r: Request) -> bool { /* Rust code */ } +--- + +from r:Request in source(kafka("127.0.0.1:9092", "requests"), json()) +where fun(r) = r.items.len() > 0 +join a0 in areas on a0.id == r.src_id +join a1 in areas on a1.id == r.dst_id +val features = [r.items.sum_by(_.mass), f32(r.t.day()), distance(a0, a1)] +val [shipment_cost] = model.predict(features) +select {request.id, shipment_cost} +into source(kafka("127.0.0.1:9092", "cost_predictions"), json()); +``` diff --git a/arc-lang/crates/website/content/juice.svg b/arc-lang/crates/website/content/juice.svg new file mode 100644 index 000000000..d952b50aa --- /dev/null +++ b/arc-lang/crates/website/content/juice.svg @@ -0,0 +1,48 @@ + \ No newline at end of file diff --git a/arc-lang/crates/website/content/showcases.md b/arc-lang/crates/website/content/showcases.md new file mode 100644 index 000000000..da9ec05df --- /dev/null +++ b/arc-lang/crates/website/content/showcases.md @@ -0,0 +1,127 @@ ++++ +title = "Showcases" +description = "Showcases" +weight = 1 ++++ + +# Pull request + +If you use **Juice** as your theme, feel free to make Pull request. + +Here are some steps to help you get started: + +- Change the [content/showcases.md](https://github.com/huhu/juice/blob/master/content/showcases.md) file, add your product site. Make sure the lexicographical order. +- Add a link to your product site. + +# Gallery + +Here are some product websites which use **Juice** as the theme. +Sort by lexicographical order. For more showcases, please visit [here](https://github.com/search?l=&p=1&q=theme+%3D+%22juice%22+filename%3Aconfig.toml&ref=advsearch&type=Code). + +## Acton Lang + +[https://www.acton-lang.org/](https://www.acton-lang.org/) + +## Arara + +[https://islandoftex.gitlab.io/arara/](https://islandoftex.gitlab.io/arara/) + +## Angular Rust + +[https://angular-rust.github.io/](https://angular-rust.github.io/) + +## Atlas Language + +[https://atlas-language.github.io/](https://atlas-language.github.io/) + +## Avatar CLI + +[https://avatar-cli.dev/](https://avatar-cli.dev/) + +## C/C++ Search Extension + +[https://cpp.extension.sh/](https://cpp.extension.sh/) + +## Crow Translate + +[https://crow-translate.github.io/](https://crow-translate.github.io/) + +## Drogue IOT + +[https://www.drogue.io/](https://www.drogue.io/) + +## El Monitorro + +[https://elmonitorro.badykov.com/](https://elmonitorro.badykov.com/) + +## Erg Lang + +[https://erg-lang.org/](https://erg-lang.org/) + +## Godot-rust + +[https://godot-rust.github.io/](https://godot-rust.github.io/) + +## GoToFix (JP) + +[https://gotofix.kumassy.com/](https://gotofix.kumassy.com/) + +## Go Search Extension + +[https://go.extension.sh/](https://go.extension.sh/) + +## Gradecoin + +[https://gradecoin.xyz/](https://gradecoin.xyz/) + +## Insta.rs + +[https://insta.rs/](https://insta.rs/) + +## Instant markdown + +[https://instant-markdown.github.io/](https://instant-markdown.github.io/) + +## ImpftHessen (DE) + +[https://impft-hessen.de/](https://impft-hessen.de/) + +## JS Search Extension + +[https://js.extension.sh/](https://js.extension.sh/) + +## Fun Notation + +[https://www.notation.fun/](https://www.notation.fun/) + +## PeopleForBike + +[https://peopleforbikes.github.io/](https://peopleforbikes.github.io/) + +## Rust Search Extension + +[https://rust.extension.sh/](https://rust.extension.sh/) + +## Stitcherd + +[https://stitcherd.vhodges.dev/](https://stitcherd.vhodges.dev/) + +## Streamson + +[https://streamson.henek.name/](https://streamson.henek.name/) + +## Tokay lang + +[https://tokay.dev](https://tokay.dev) + +## Trunk + +[https://trunkrs.dev/](https://trunkrs.dev/) + +## Vidar + +[https://calebsacks.me/vidar/](https://calebsacks.me/vidar/) + +## zDevelopers + +[https://dev.zcraft.fr/](https://dev.zcraft.fr/) \ No newline at end of file diff --git a/arc-lang/crates/website/sass/_ultility.scss b/arc-lang/crates/website/sass/_ultility.scss new file mode 100644 index 000000000..d2469c9c2 --- /dev/null +++ b/arc-lang/crates/website/sass/_ultility.scss @@ -0,0 +1,3 @@ +.text-left { + text-align: left; +} diff --git a/arc-lang/crates/website/templates/_variables.html b/arc-lang/crates/website/templates/_variables.html new file mode 100644 index 000000000..5cf302156 --- /dev/null +++ b/arc-lang/crates/website/templates/_variables.html @@ -0,0 +1,24 @@ + diff --git a/arc-lang/crates/website/templates/index.html b/arc-lang/crates/website/templates/index.html new file mode 100644 index 000000000..1e139dfe3 --- /dev/null +++ b/arc-lang/crates/website/templates/index.html @@ -0,0 +1,120 @@ +{% extends "juice/templates/index.html" %} + +{% block hero %} + +
+

+ Arc-Lang +

+

+ A programming language for data stream processing. +

+ +
+ +

+type Item = {name:String, price:f64, mass:f64};
+type Order = {id:u32, items: Vec[Item], t:Time, src_id:u32, dst_id:u32};
+type Location = {id:u32, lon:f64, lat:f64};
+
+val model: Model = open("cost_predictor.onnx").read_bytes().load_model();
+val locations: Set[Location] = open("locations.csv").read_bytes().decode(csv());
+
+---rust
+fn distance(src: Location, dst: Location) -> f64 { /* ... */ }
+---
+
+from o:Order in source(kafka("127.0.0.1:9092", "orders"), json())
+join src in locations on src.id == o.src_id
+join dst in locations on dst.id == o.dst_id
+with features = [
+  o.items.map(_.mass).sum(),
+  o.t.day().to_f64(),
+  distance(src, dst)
+].into_matrix()
+with prediction = model.predict(features)
+select {o.id, shipment_cost: prediction[0]}
+into sink(kafka("127.0.0.1:9092", "cost_predictions"), json());
+
+ + + +
+

+ Get Started ⇩ +

+
+ + + + +{% endblock hero %} + +{% block favicon %} + +{% endblock favicon %} diff --git a/arc-lang/crates/website/themes/juice b/arc-lang/crates/website/themes/juice new file mode 160000 index 000000000..e8a24f54a --- /dev/null +++ b/arc-lang/crates/website/themes/juice @@ -0,0 +1 @@ +Subproject commit e8a24f54aa972aabd5a6002c4ba8542213b388ed diff --git a/arc-lang/dune-project b/arc-lang/dune-project deleted file mode 100644 index 51bac6380..000000000 --- a/arc-lang/dune-project +++ /dev/null @@ -1,4 +0,0 @@ -(lang dune 2.7) -(cram enable) -(name arc_script_prototyping) -(using menhir 2.0) diff --git a/arc-lang/dune-wrapper b/arc-lang/dune-wrapper deleted file mode 100755 index 47ab97a85..000000000 --- a/arc-lang/dune-wrapper +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -eval $(opam env) -exec dune "$@" diff --git a/arc-lang/editor/vim/ftdetect/arc.vim b/arc-lang/editor/vim/ftdetect/arc.vim deleted file mode 100644 index a6ff7efc1..000000000 --- a/arc-lang/editor/vim/ftdetect/arc.vim +++ /dev/null @@ -1 +0,0 @@ -autocmd BufNewFile,BufRead *.arc setfiletype arc diff --git a/arc-lang/editor/vim/ftplugin/arc.vim b/arc-lang/editor/vim/ftplugin/arc.vim deleted file mode 100644 index d7f57d84b..000000000 --- a/arc-lang/editor/vim/ftplugin/arc.vim +++ /dev/null @@ -1,11 +0,0 @@ -if exists("b:did_ftplugin") - finish -endif - -let b:did_ftplugin = 1 -setlocal shiftwidth=4 softtabstop=4 expandtab -setlocal textwidth=99 - -setlocal shiftwidth=4 -setlocal tabstop=4 -setlocal commentstring=#%s diff --git a/arc-lang/editor/vim/syntax/arc.vim b/arc-lang/editor/vim/syntax/arc.vim deleted file mode 100644 index 8e0bdcc60..000000000 --- a/arc-lang/editor/vim/syntax/arc.vim +++ /dev/null @@ -1,92 +0,0 @@ -" Vim syntax file -" Language: arc - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -runtime! syntax/rust.vim syntax/rust/*.vim - -let b:current_syntax = "arc" - -"============================================================================= -" Overrides -"============================================================================= -hi clear rustMacroVariable -syn clear rustMacroVariable -syn match rustSigil /&\s\+[&~@*$][^)= \t\r\n]/me=e-1,he=e-1 display -syn match rustSigil /[&~@*$][^)= \t\r\n]/me=e-1,he=e-1 display -"============================================================================= -" Operators -"============================================================================= -syn keyword arcOperator ** -syn keyword arcOperator and -syn keyword arcOperator or -syn keyword arcOperator xor -syn keyword arcOperator band -syn keyword arcOperator bor -syn keyword arcOperator bxor -syn keyword arcOperator is -syn keyword arcOperator not -syn keyword arcOperator in -syn keyword arcOperator from -syn keyword arcOperator where -syn keyword arcOperator yield -syn keyword arcOperator group -syn keyword arcOperator compute -syn keyword arcOperator window -syn keyword arcOperator sort -syn keyword arcOperator join -syn keyword arcOperator every -syn keyword arcOperator ascending -hi def link arcOperator Operator -"============================================================================= -" Statements -"============================================================================= -syn keyword arcStatement class -syn keyword arcStatement instance -syn keyword arcStatement def -syn keyword arcStatement task -syn keyword arcStatement on -syn keyword arcStatement emit -syn keyword arcStatement val -syn keyword arcStatement var -hi def link arcStatement Statement -"============================================================================= -" Conditionals -"============================================================================= -hi def link arcConditional Conditional -"============================================================================= -" Reserved Keywords -"============================================================================= -syn keyword arcStatement fun -hi def link arcKeyword Keyword -"============================================================================= -" Primitive Types -"============================================================================= -syn keyword arcType fun -syn keyword arcType unit -hi def link arcType Type -"============================================================================= -" Floats -"============================================================================= -hi def link arcFloat Float -"============================================================================= -" Constants -"============================================================================= -syn match arcConstant "[[:digit:]]\+ns" -syn match arcConstant "[[:digit:]]\+us" -syn match arcConstant "[[:digit:]]\+ms" -syn match arcConstant "[[:digit:]]\+s" -syn match arcConstant "[[:digit:]]\+m" -syn match arcConstant "[[:digit:]]\+h" -syn match arcConstant "[[:digit:]]\+d" -syn match arcConstant "[[:digit:]]\+w" -hi def link arcConstant Constant -"============================================================================= -" Comments -"============================================================================= -syn match arcComment "#[^{].*" -hi def link arcComment Comment diff --git a/arc-lang/etc/Cargo.toml.template b/arc-lang/etc/Cargo.toml.template deleted file mode 100644 index 0ff8585a9..000000000 --- a/arc-lang/etc/Cargo.toml.template +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "${CRATE_NAME}" -version = "0.0.0" -edition = "2021" - -[dependencies] -arc-runtime = { version = "=0.0.0", path = "${ARC_RUNTIME_SOURCE_DIR}" } -hexf = { version = "0.2.1" } -serde = { version = "1.0.136" } - -[profile.dev] -opt-level = 0 -split-debuginfo = "unpacked" -debug = false diff --git a/arc-lang/examples/assign.arc b/arc-lang/examples/assign.arc deleted file mode 100644 index 88ee1ded8..000000000 --- a/arc-lang/examples/assign.arc +++ /dev/null @@ -1,10 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -val x = 1; -var y = 2; -y = x + y; -# ANCHOR_END: example -} diff --git a/arc-lang/examples/assign.arc.rust-tests b/arc-lang/examples/assign.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/assign.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/basic.arc b/arc-lang/examples/basic.arc deleted file mode 100644 index cace1b867..000000000 --- a/arc-lang/examples/basic.arc +++ /dev/null @@ -1,10 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def foo() = bar(1) - -def bar(a) = a -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/basic.arc.rust-tests b/arc-lang/examples/basic.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/basic.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/binopref.arc b/arc-lang/examples/binopref.arc deleted file mode 100644 index d9c678f27..000000000 --- a/arc-lang/examples/binopref.arc +++ /dev/null @@ -1,11 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -# Binary operators can be lifted into functions. -def apply(binop, l, r) = binop(l, r) - -def main() = { - assert(apply((+), 1, 3) == 4); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/binopref.arc.rust-tests b/arc-lang/examples/binopref.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/binopref.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/binops.arc b/arc-lang/examples/binops.arc deleted file mode 100644 index 53d6a73cd..000000000 --- a/arc-lang/examples/binops.arc +++ /dev/null @@ -1,34 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -val n = 1; -val b = true; - -# Arithmetic -# - n; -n + n; -n - n; -n * n; -n / n; -# n ** n; -n % n; - -# Equality -n == n; -# n != n; - -# Logical -b and b; -b or b; -# n band n; -# n bor n; -# n bxor n; -# not b; - -# Containers -# n in [n, n, n]; -# n not in []; -# ANCHOR_END: example -} diff --git a/arc-lang/examples/binops.arc.rust-tests b/arc-lang/examples/binops.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/binops.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/blocks.arc b/arc-lang/examples/blocks.arc deleted file mode 100644 index 8ffe884de..000000000 --- a/arc-lang/examples/blocks.arc +++ /dev/null @@ -1,12 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -val a = { { { { { 6 } } } } }; -val b = { 1; 2; 3; 4; 5; 6 }; -val c = { 1; { 2; { 3; { 4; { 5; { 6 } } } } } }; -val d = { { { { { { 1 }; 2 }; 3 }; 4 }; 5 }; 6 }; -val e = a + b + c + d; -# ANCHOR_END: example -} diff --git a/arc-lang/examples/blocks.arc.rust-tests b/arc-lang/examples/blocks.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/blocks.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/body.arc b/arc-lang/examples/body.arc deleted file mode 100644 index fbeb6df22..000000000 --- a/arc-lang/examples/body.arc +++ /dev/null @@ -1,12 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def foo() = 3 - -def bar() { - 3 -} -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/body.arc.rust-tests b/arc-lang/examples/body.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/body.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/comprehensions.arc b/arc-lang/examples/comprehensions.arc deleted file mode 100644 index f76a6a561..000000000 --- a/arc-lang/examples/comprehensions.arc +++ /dev/null @@ -1,11 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def test(stream) { - [event+1; for event in stream; if event != 0] -} -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/comprehensions.arc.rust-tests b/arc-lang/examples/comprehensions.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/comprehensions.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/empty.arc b/arc-lang/examples/empty.arc deleted file mode 100644 index 5fa414ce5..000000000 --- a/arc-lang/examples/empty.arc +++ /dev/null @@ -1,4 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() {} diff --git a/arc-lang/examples/empty.arc.rust-tests b/arc-lang/examples/empty.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/empty.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/enum-patterns.arc b/arc-lang/examples/enum-patterns.arc deleted file mode 100644 index 3e789c9bc..000000000 --- a/arc-lang/examples/enum-patterns.arc +++ /dev/null @@ -1,16 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -# Pattern matching on enums -val a = Option::Some(3); - -match a { - Option::Some(2) => 2, - Option::Some(x) => x, - Option::None(_) => 0 -}; -# ANCHOR_END: example -} diff --git a/arc-lang/examples/enum-patterns.arc.rust-tests b/arc-lang/examples/enum-patterns.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/enum-patterns.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/enum.arc b/arc-lang/examples/enum.arc deleted file mode 100644 index 0da6e3e5b..000000000 --- a/arc-lang/examples/enum.arc +++ /dev/null @@ -1,13 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -enum Foo[T] { - Bar(T) -} - -def main() { - Foo::Bar(1); - Foo::Bar(1.0); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/enum.arc.rust-tests b/arc-lang/examples/enum.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/enum.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/even-odd.arc b/arc-lang/examples/even-odd.arc deleted file mode 100644 index c325cfa6b..000000000 --- a/arc-lang/examples/even-odd.arc +++ /dev/null @@ -1,16 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -# The declaration order of top-level definitions is insignificant. In other words, -# functions can reference other functions declared farther down in the code. - -def is_even(n) = if n == 0 { true } else { is_odd(n-1) } - -def is_odd(n) = if n == 0 { false } else { is_even(n-1) } -# ANCHOR_END: example - -def main() = { - is_even(10); -} diff --git a/arc-lang/examples/even-odd.arc.rust-tests b/arc-lang/examples/even-odd.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/even-odd.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/fail-task-map.arc b/arc-lang/examples/fail-task-map.arc deleted file mode 100644 index cc13cea2e..000000000 --- a/arc-lang/examples/fail-task-map.arc +++ /dev/null @@ -1,15 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task map(i, f): (o) { - loop { - o ! f(receive i); - } -} - -def main() { - val c = map(c, fun(x) = x + 1); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/fail-task-map.arc.rust-tests b/arc-lang/examples/fail-task-map.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/fail-task-map.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/fib-functional.arc b/arc-lang/examples/fib-functional.arc deleted file mode 100644 index 13f3df4a0..000000000 --- a/arc-lang/examples/fib-functional.arc +++ /dev/null @@ -1,17 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -# The following code shows how to define the Fibonacci function functionally. - -def fib(n) = match n { - 0 => 0, - 1 => 1, - n => fib(n-2) + fib(n-1) -} -# ANCHOR_END: example - -def main() = { - fib(10); -} diff --git a/arc-lang/examples/fib-functional.arc.rust-tests b/arc-lang/examples/fib-functional.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/fib-functional.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/fib-imperative.arc b/arc-lang/examples/fib-imperative.arc deleted file mode 100644 index 60596633d..000000000 --- a/arc-lang/examples/fib-imperative.arc +++ /dev/null @@ -1,21 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -# The following code shows how to define the Fibonacci function imperatively. - -def fib(n) { - var a = 0; - var b = 1; - while a < n { - a = b; - b = a + b; - }; - return a; -} -# ANCHOR_END: example - -def main() = { - fib(10); -} diff --git a/arc-lang/examples/fib-imperative.arc.rust-tests b/arc-lang/examples/fib-imperative.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/fib-imperative.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/file-to-file.arc b/arc-lang/examples/file-to-file.arc new file mode 100644 index 000000000..8819334d0 --- /dev/null +++ b/arc-lang/examples/file-to-file.arc @@ -0,0 +1,12 @@ +# Run with: +# Terminal 1: $ cargo run -- file-to-file.arc + +def f(x) = x + 1; + +val i = file_reader(path("input/generated/numbers.csv"), false); +val o = file_writer(path("output/numbers-plus-one.csv")); + +source::[i32](i, csv(','), ingestion(1s)) + .map(f) + .sink(o, csv(',')) + .run(); diff --git a/arc-lang/examples/filter-orders.arc b/arc-lang/examples/filter-orders.arc new file mode 100644 index 000000000..10ad0136c --- /dev/null +++ b/arc-lang/examples/filter-orders.arc @@ -0,0 +1,16 @@ +# Run with: +# Terminal 1: $ cargo run -- filter-orders.arc + +type Order = {name:String, price:i32, time:Time}; + +def f(o: Order) = o.price > 100; +def g(o: Order) = {o.name, o.price}; + +val i = file_reader(path("input/generated/orders.csv"), false); +val o = stdout_writer(); + +source::[Order](i, csv(','), ingestion(1s)) + .filter(f) + .map(g) + .sink(o, csv(',')) + .run(); diff --git a/arc-lang/examples/generic-enum.arc b/arc-lang/examples/generic-enum.arc deleted file mode 100644 index c0d4f7f55..000000000 --- a/arc-lang/examples/generic-enum.arc +++ /dev/null @@ -1,25 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -enum Option[T] { - Some(T), - None -} - -def main() { - - match Option::Some(5) { - Option::Some(x) => assert(x == 5), - Option::None => assert(false), - }; - - match Option::Some(5.0) { - Option::Some(x) => assert(x == 5.0), - Option::None => assert(false), - }; - -} -# ANCHOR_END: example - diff --git a/arc-lang/examples/generic-enum.arc.rust-tests b/arc-lang/examples/generic-enum.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/generic-enum.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/generic-function.arc b/arc-lang/examples/generic-function.arc deleted file mode 100644 index 9649b6d10..000000000 --- a/arc-lang/examples/generic-function.arc +++ /dev/null @@ -1,13 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def id[A](x: A): A = x - -def main() { - id(1); - id(1.0); - id::[i32](1); - id::[f32](1.0); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/generic-function.arc.rust-tests b/arc-lang/examples/generic-function.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/generic-function.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/global.arc b/arc-lang/examples/global.arc deleted file mode 100644 index c9e628018..000000000 --- a/arc-lang/examples/global.arc +++ /dev/null @@ -1,11 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -val pi = 3.14; - -def main() { - val x = pi * 2.0; -} -# ANCHOR_END: example diff --git a/arc-lang/examples/global.arc.rust-tests b/arc-lang/examples/global.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/global.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/identity-function.arc b/arc-lang/examples/identity-function.arc deleted file mode 100644 index 1246be8e9..000000000 --- a/arc-lang/examples/identity-function.arc +++ /dev/null @@ -1,11 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def id[A](x: A): A = x - -def main() { - val x = id(1); - val y = id(1.0); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/identity-function.arc.rust-tests b/arc-lang/examples/identity-function.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/identity-function.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/inferred.arc b/arc-lang/examples/inferred.arc deleted file mode 100644 index c2c30621f..000000000 --- a/arc-lang/examples/inferred.arc +++ /dev/null @@ -1,11 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def id(x) = x - -def main() { - id(1); - id(1.0); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/inferred.arc.rust-tests b/arc-lang/examples/inferred.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/inferred.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/input/generated/numbers.csv b/arc-lang/examples/input/generated/numbers.csv new file mode 100644 index 000000000..c492f21e6 --- /dev/null +++ b/arc-lang/examples/input/generated/numbers.csv @@ -0,0 +1,100 @@ +5067 +238 +8433 +22105 +30354 +30952 +31531 +28474 +30256 +21676 +5452 +28914 +8352 +8662 +27403 +8776 +17527 +541 +26618 +32729 +5392 +24996 +29951 +4443 +36 +24139 +12583 +4704 +1804 +24277 +4758 +30416 +22318 +5371 +27985 +7572 +5520 +14156 +6171 +18352 +3255 +27105 +26352 +10538 +10633 +6872 +25498 +19233 +27460 +20099 +6728 +2847 +13831 +5907 +27416 +1069 +13301 +9083 +5954 +5091 +16642 +6562 +24308 +3199 +7142 +6844 +19659 +17012 +25230 +25765 +8999 +30759 +22204 +30552 +17814 +32456 +11250 +22743 +11353 +17281 +23940 +16653 +17843 +3594 +23774 +6961 +16827 +6360 +7131 +20154 +13526 +30369 +20752 +8644 +19817 +10379 +19292 +9783 +2552 +3248 diff --git a/arc-lang/examples/input/generated/orders.csv b/arc-lang/examples/input/generated/orders.csv new file mode 100644 index 000000000..200b3db3c --- /dev/null +++ b/arc-lang/examples/input/generated/orders.csv @@ -0,0 +1,64800 @@ +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +spaghetti,139,2023-04-18T12:15:00Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z +soup,109,2023-04-18T12:16:10Z +pancakes,99,2023-04-18T12:17:20Z +pizza,129,2023-04-18T12:18:30Z +sandwich,79,2023-04-18T12:19:40Z +tacos,149,2023-04-18T12:20:50Z +burger,109,2023-04-18T12:22:00Z +sushi,179,2023-04-18T12:23:10Z +salad,89,2023-04-18T12:24:20Z +steak,199,2023-04-18T12:25:30Z diff --git a/arc-lang/examples/input/generated/output.csv b/arc-lang/examples/input/generated/output.csv new file mode 100644 index 000000000..4fd875adf --- /dev/null +++ b/arc-lang/examples/input/generated/output.csv @@ -0,0 +1,9 @@ +2 +3 +4 +5 +6 +7 +8 +9 +10 diff --git a/arc-lang/examples/input/generated/prices.csv b/arc-lang/examples/input/generated/prices.csv new file mode 100644 index 000000000..d68e9e3ac --- /dev/null +++ b/arc-lang/examples/input/generated/prices.csv @@ -0,0 +1,6760 @@ +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +spaghetti,139 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +tacos,149 +burger,109 +sushi,179 +steak,199 +soup,109 +pizza,129 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 +steak,199 diff --git a/arc-lang/examples/input/random.sh b/arc-lang/examples/input/random.sh new file mode 100755 index 000000000..e22320097 --- /dev/null +++ b/arc-lang/examples/input/random.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +while :; do echo $RANDOM; sleep 0.01; done diff --git a/arc-lang/examples/interpolate.arc b/arc-lang/examples/interpolate.arc deleted file mode 100644 index c832c340c..000000000 --- a/arc-lang/examples/interpolate.arc +++ /dev/null @@ -1,13 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -# String interpolation is supported using the $ and ${} syntax. - -def main() { - val hello = "hello"; - val world = "world"; - val result = "$hello $world, 1+2 = ${1+2}"; -} -# ANCHOR_END: example diff --git a/arc-lang/examples/interpolate.arc.rust-tests b/arc-lang/examples/interpolate.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/interpolate.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/interpreter.arc b/arc-lang/examples/interpreter.arc deleted file mode 100644 index 9ea9180b4..000000000 --- a/arc-lang/examples/interpreter.arc +++ /dev/null @@ -1,22 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -enum Expr { - Num(i32), - Add(Expr, Expr) -} - -def eval(e) { - match e { - Expr::Num(x) => x, - Expr::Add(a, b) => eval(a) + eval(b), - } -} - -def main() { - let x = eval(Expr::Num(1)); - let y = eval(Expr::Add((1, 2))); - assert(x == 1); - assert(y == 3); -} diff --git a/arc-lang/examples/interpreter.arc.rust-tests b/arc-lang/examples/interpreter.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/interpreter.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/lambda.arc b/arc-lang/examples/lambda.arc deleted file mode 100644 index 8108d13bf..000000000 --- a/arc-lang/examples/lambda.arc +++ /dev/null @@ -1,21 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -# Lambdas can both capture their environment and be passed around as values. - -def main() { - val a = 1; - val b = 2; - val x = fun(c) = a + b + c; - val y = fun(b) = a + b; - run(x); - run(y); -} - -# If a function takes a lambda as parameter, then it is polymorphic over the -# lambda's environment. - -def run(lambda) = lambda(3) -# ANCHOR_END: example diff --git a/arc-lang/examples/lambda.arc.rust-tests b/arc-lang/examples/lambda.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/lambda.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/lvalues.arc b/arc-lang/examples/lvalues.arc deleted file mode 100644 index 08a80d806..000000000 --- a/arc-lang/examples/lvalues.arc +++ /dev/null @@ -1,22 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -var a = 1; -val b = #{x:1, y:2, c:3}; -val c = (1, 2, 3); -val d = [1, 2, 3]; - -a = 4; -b.x = 4; -c.0 = 4; -d[0u32] = 4; -# ANCHOR_END: example - -assert(a == 4); -assert(b.x == 4); -assert(c.0 == 4); -assert(d[0u32] == 4); -} diff --git a/arc-lang/examples/lvalues.arc.rust-tests b/arc-lang/examples/lvalues.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/lvalues.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/manual.rs b/arc-lang/examples/manual.rs new file mode 100644 index 000000000..476252d04 --- /dev/null +++ b/arc-lang/examples/manual.rs @@ -0,0 +1,234 @@ +#![allow(unused)] +use runtime::prelude::*; + +fn main() { + let db = Database::new("snapshots"); + Runner::new(concat!(env!("CARGO_MANIFEST_DIR"), "/examples/log")).spawn(instance(db.clone())); +} + +async fn instance(_db: Database) { + let s0 = Stream::::source( + Reader::file( + Path::new(concat!( + env!("CARGO_MANIFEST_DIR"), + "/examples/data/csv/yellow/yellow_tripdata_2017-01.csv" + )), + false, + ), + Encoding::csv(','), + TimeSource::event( + |r| r.tpep_pickup_datetime, + Duration::from_seconds(10), // Watermark interval + Duration::from_seconds(2), // Slack + ), + ); + + let s1 = s0.filter(|r: Yellow| { + { + r.passenger_count > 0 + && r.passenger_count > 2 + && r.trip_distance > 0.1 + && r.trip_distance < 22.58 + && r.pu_location_id > 0 + && r.do_location_id > 0 + && r.payment_type > 0 + && r.fare_amount > 0.0 + && r.tpep_pickup_datetime.year() >= 2017 + && r.tpep_pickup_datetime.year() < 2018 + } + .into() + }); + + let s2 = s1.map(|r: Yellow| R2 { + passenger_count: r.passenger_count, + pu_location_id: r.pu_location_id, + do_location_id: r.do_location_id, + trip_distance: r.trip_distance, + fare_amount: r.fare_amount, + payment_type: r.payment_type, + }); + + let locations: Vec = File::open(Path::new(concat!( + env!("CARGO_MANIFEST_DIR"), + "taxi+_zone_lookup.csv" + ))) + .read_to_string() + .decode(Encoding::csv(',')); + + let s3 = s2.keyby(|r: R2| r.do_location_id); + + s3.unkey().sink( + Writer::file(Path::new(concat!( + env!("CARGO_MANIFEST_DIR"), + "/examples/output.csv" + ))), + Encoding::csv(','), + ); +} + +use runtime::*; + +#[data] +pub struct Green { + /// A code indicating the TPEP provider that provided the record. + /// 1 => Creative Mobile Technologies, LLC; + /// 2 => VeriFone Inc. + pub vendor_id: u8, + /// The date and time when the meter was engaged. + pub lpep_pickup_datetime: Time, + /// The date and time when the meter was disengaged. + pub lpep_dropoff_datetime: Time, + /// This flag indicates whether the trip record was held in vehicle + /// memory before sending to the vendor, aka “store and forward,” + /// because the vehicle did not have a connection to the server. + /// Y=store and forward trip + /// N=not a store and forward trip + pub store_and_fwd_flag: Flag, + /// The final rate code in effect at the end of the trip. + /// 1 => Standard rate + /// 2 => JFK + /// 3 => Newark + /// 4 => Nassau or Westchester + /// 5 => Negotiated fare + /// 6 => Group ride + pub ratecode_id: u8, + /// TLC Taxi Zone in which the taximeter was engaged. + pub pu_location_id: u64, + /// TLC Taxi Zone in which the taximeter was disengaged. + pub do_location_id: u64, + /// The number of passengers in the vehicle. + pub passenger_count: u64, + /// The elapsed trip distance in miles reported by the taximeter. + pub trip_distance: f64, + /// The time-and-distance fare calculated by the meter. + pub fare_amount: f64, + /// Miscellaneous extras and surcharges. Currently, this only includes + /// the $0.50 and $1 rush hour and overnight charges. + pub extra: f64, + /// $0.50 MTA tax that is automatically triggered based on the metered + /// rate in use. + pub mta_tax: f64, + /// Tip amount – This field is automatically populated for credit card + /// tips. Cash tips are not included. + pub tip_amount: f64, + /// Total amount of all tolls paid in trip. + pub tolls_amount: f64, + pub ehail_fee: f64, + /// $0.30 improvement surcharge assessed trips at the flag drop. The + /// improvement surcharge began being levied in 2015. + pub improvement_surcharge: f64, + /// The total amount charged to passengers. Does not include cash tips. + pub total_amount: f64, + /// A numeric code signifying how the passenger paid for the trip. + /// 1 => Credit card + /// 2 => Cash + /// 3 => No charge + /// 4 => Dispute + /// 5 => Unknown + /// 6 => Voided trip + pub payment_type: u8, + pub trip_type: u8, + pub congestion_surcharge: f64, +} + +#[data] +pub struct Yellow { + /// A code indicating the TPEP provider that provided the record. + /// 1 => Creative Mobile Technologies, LLC; + /// 2 => VeriFone Inc. + pub vendor_id: u8, + /// The date and time when the meter was engaged. + pub tpep_pickup_datetime: Time, + /// The date and time when the meter was disengaged. + pub tpep_dropoff_datetime: Time, + /// The number of passengers in the vehicle. + pub passenger_count: u64, + /// The elapsed trip distance in miles reported by the taximeter. + pub trip_distance: f64, + /// The final rate code in effect at the end of the trip. + /// 1 => Standard rate + /// 2 => JFK + /// 3 => Newark + /// 4 => Nassau or Westchester + /// 5 => Negotiated fare + /// 6 => Group ride + pub ratecode_id: u8, + /// This flag indicates whether the trip record was held in vehicle + /// memory before sending to the vendor, aka “store and forward,” + /// because the vehicle did not have a connection to the server. + /// Y=store and forward trip + /// N=not a store and forward trip + pub store_and_fwd_flag: Flag, + /// TLC Taxi Zone in which the taximeter was engaged. + pub pu_location_id: u64, + /// TLC Taxi Zone in which the taximeter was disengaged. + pub do_location_id: u64, + /// A numeric code signifying how the passenger paid for the trip. + /// 1 => Credit card + /// 2 => Cash + /// 3 => No charge + /// 4 => Dispute + /// 5 => Unknown + /// 6 => Voided trip + pub payment_type: u8, + /// The time-and-distance fare calculated by the meter. + pub fare_amount: f64, + /// Miscellaneous extras and surcharges. Currently, this only includes + /// the $0.50 and $1 rush hour and overnight charges. + pub extra: f64, + /// $0.50 MTA tax that is automatically triggered based on the metered + /// rate in use. + pub mta_tax: f64, + /// Tip amount – This field is automatically populated for credit card + /// tips. Cash tips are not included. + pub tip_amount: f64, + /// Total amount of all tolls paid in trip. + pub tolls_amount: f64, + /// $0.30 improvement surcharge assessed trips at the flag drop. The + /// improvement surcharge began being levied in 2015. + pub improvement_surcharge: f64, + /// The total amount charged to passengers. Does not include cash tips. + pub total_amount: f64, +} + +#[data] +pub struct R2 { + pub passenger_count: u64, + pub trip_distance: f64, + pub pu_location_id: u64, + pub do_location_id: u64, + pub payment_type: u8, + pub fare_amount: f64, +} + +#[data] +pub struct R3 { + pub total: f64, +} + +// 1. Filter out rides which have negative distance +// 2. Map to Record2 +// 3. Aggregate the total number of trips per hour per pickup location. +// 4. Group by number of trips + +#[data] +pub struct Location { + pub location_id: u64, + pub borough: String, + pub zone: String, + pub service_zone: String, +} + +#[data] +pub struct R5 { + #[serde(flatten)] + pub r3: R3, + #[serde(flatten)] + pub r4: Location, +} + +#[data] +pub enum Flag { + Y, + N, +} diff --git a/arc-lang/examples/models/download-imagenet.py b/arc-lang/examples/models/download-imagenet.py new file mode 100644 index 000000000..d1b5114ff --- /dev/null +++ b/arc-lang/examples/models/download-imagenet.py @@ -0,0 +1,18 @@ +import requests +import json + +url = 'https://storage.googleapis.com/download.tensorflow.org' \ + '/data/imagenet_class_index.json' +r = requests.get(url, allow_redirects=True) +data = json.loads(r.content) +result = [] + +for i in range(len(data)): + key = str(i) + if key in data: + result.append(data[key][1]) + else: + print(f"Key {key} does not exist.") + +with open("imagenet_class_index.json", "w") as f: + json.dump(result, f) diff --git a/arc-lang/examples/models/download-resnet18.py b/arc-lang/examples/models/download-resnet18.py new file mode 100644 index 000000000..c5392c808 --- /dev/null +++ b/arc-lang/examples/models/download-resnet18.py @@ -0,0 +1,16 @@ +import torch +import torchvision.models as models +from torchvision.models.resnet import ResNet18_Weights + +model = models.resnet18(weights=ResNet18_Weights.IMAGENET1K_V1) +model.eval() +torch.onnx.export(model, + torch.randn(1, 3, 224, 224), + "resnet18.onnx", + export_params=True, + opset_version=10, + do_constant_folding=True, + input_names=['input'], + output_names=['output'], + dynamic_axes={'input': {0: 'batch_size'}, + 'output': {0: 'batch_size'}}) diff --git a/arc-lang/examples/models/download-yolov8.py b/arc-lang/examples/models/download-yolov8.py new file mode 100644 index 000000000..a27ac0367 --- /dev/null +++ b/arc-lang/examples/models/download-yolov8.py @@ -0,0 +1,4 @@ +from ultralytics import YOLO + +model = YOLO("yolov8m.pt") +model.export(format="onnx") diff --git a/arc-lang/examples/modules.arc b/arc-lang/examples/modules.arc deleted file mode 100644 index 6a1b0a9ea..000000000 --- a/arc-lang/examples/modules.arc +++ /dev/null @@ -1,15 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -mod foo { - mod bar { - mod baz { - def qux() = 3 - } - } -} - -def main() = foo::bar::baz::qux() -# ANCHOR_END: example diff --git a/arc-lang/examples/modules.arc.rust-tests b/arc-lang/examples/modules.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/modules.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/monoid.arc b/arc-lang/examples/monoid.arc deleted file mode 100644 index 23f438043..000000000 --- a/arc-lang/examples/monoid.arc +++ /dev/null @@ -1,15 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -class Monoid { - def identity(): Self; - def merge(Self, Self): Self; -} -impl Monoid for {sum:i32} { - def identity() = #{sum: 0} - def merge(a, b) = #{sum: a.sum + b.sum} -} -def main() = x.merge(y.merge(identity())) -# ANCHOR_END: example diff --git a/arc-lang/examples/monoid.arc.rust-tests b/arc-lang/examples/monoid.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/monoid.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/names.arc b/arc-lang/examples/names.arc deleted file mode 100644 index b053dbe41..000000000 --- a/arc-lang/examples/names.arc +++ /dev/null @@ -1,10 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def this_is_a_name(this_is_also_a_name) { - val this_is_yet_another_name = 1; -} -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/names.arc.rust-tests b/arc-lang/examples/names.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/names.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/open-records.arc b/arc-lang/examples/open-records.arc deleted file mode 100644 index c59588848..000000000 --- a/arc-lang/examples/open-records.arc +++ /dev/null @@ -1,11 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def coerce(x: #{}): #{} { - x -} - -def main() { - coerce(#{y:5}); -} diff --git a/arc-lang/examples/open-records.arc.rust-tests b/arc-lang/examples/open-records.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/open-records.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/output/numbers-plus-one.csv b/arc-lang/examples/output/numbers-plus-one.csv new file mode 100644 index 000000000..c2793b316 --- /dev/null +++ b/arc-lang/examples/output/numbers-plus-one.csv @@ -0,0 +1,100 @@ +5068 +239 +8434 +22106 +30355 +30953 +31532 +28475 +30257 +21677 +5453 +28915 +8353 +8663 +27404 +8777 +17528 +542 +26619 +32730 +5393 +24997 +29952 +4444 +37 +24140 +12584 +4705 +1805 +24278 +4759 +30417 +22319 +5372 +27986 +7573 +5521 +14157 +6172 +18353 +3256 +27106 +26353 +10539 +10634 +6873 +25499 +19234 +27461 +20100 +6729 +2848 +13832 +5908 +27417 +1070 +13302 +9084 +5955 +5092 +16643 +6563 +24309 +3200 +7143 +6845 +19660 +17013 +25231 +25766 +9000 +30760 +22205 +30553 +17815 +32457 +11251 +22744 +11354 +17282 +23941 +16654 +17844 +3595 +23775 +6962 +16828 +6361 +7132 +20155 +13527 +30370 +20753 +8645 +19818 +10380 +19293 +9784 +2553 +3249 diff --git a/arc-lang/examples/overload-plus.arc b/arc-lang/examples/overload-plus.arc deleted file mode 100644 index 5a54ca3b1..000000000 --- a/arc-lang/examples/overload-plus.arc +++ /dev/null @@ -1,10 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def test1() = 1 + 2 -def test2() = 1.0 + 2.0 -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/overload-plus.arc.rust-tests b/arc-lang/examples/overload-plus.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/overload-plus.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/parallelism.arc b/arc-lang/examples/parallelism.arc deleted file mode 100644 index 97751df88..000000000 --- a/arc-lang/examples/parallelism.arc +++ /dev/null @@ -1,39 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -task read_stream(): Stream[i32]; - -def main() {} - -# ANCHOR: pipeline -task map(i, f): (o) { - for x in i { - o ! f(receive x) - } -} - -task filter(i, f): (o) { - for x in i { - if f(x) { - o ! x - } - } -} - -def pipeline_parallel() { - val s0 = read_stream(); - val s1 = map(s0, |x| x * 2); - val s2 = filter(s1, |x| x % 2 == 0); - # ... -} -# ANCHOR_END: pipeline - -# ANCHOR: task -def task_parallel() { - val s0 = source(0..100); - val s1 = map(s0, |x| x * 2); - val s2 = filter(s0, |x| x % 2 == 0); - # ... -} -# ANCHOR_END: task diff --git a/arc-lang/examples/parallelism.arc.rust-tests b/arc-lang/examples/parallelism.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/parallelism.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/params.arc b/arc-lang/examples/params.arc deleted file mode 100644 index b0e098b54..000000000 --- a/arc-lang/examples/params.arc +++ /dev/null @@ -1,8 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def test(typed_param: i32, untyped_param) = typed_param + untyped_param -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/params.arc.rust-tests b/arc-lang/examples/params.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/params.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/paths.arc b/arc-lang/examples/paths.arc deleted file mode 100644 index 2a7b26890..000000000 --- a/arc-lang/examples/paths.arc +++ /dev/null @@ -1,20 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -mod foo { - mod bar { - val baz = 3 - def relative() = baz - def absolute() = ::foo::bar::baz - } - def relative() = bar::baz - def absolute() = ::foo::bar::baz -} - -def relative() = foo::bar::baz -def absolute() = ::foo::bar::baz -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/paths.arc.rust-tests b/arc-lang/examples/paths.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/paths.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/placeholder.arc b/arc-lang/examples/placeholder.arc deleted file mode 100644 index e8a3cba64..000000000 --- a/arc-lang/examples/placeholder.arc +++ /dev/null @@ -1,11 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -# `(_ + _)` desugars into a lambda function `fun(x0, x1): x0 + x1` -def main() = { - apply(_ + _); -} - -def apply(f) = f(1, 2) -# ANCHOR_END: example diff --git a/arc-lang/examples/placeholder.arc.rust-tests b/arc-lang/examples/placeholder.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/placeholder.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/pre-declaration.arc b/arc-lang/examples/pre-declaration.arc deleted file mode 100644 index 206a0d5bd..000000000 --- a/arc-lang/examples/pre-declaration.arc +++ /dev/null @@ -1,11 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def add(a: i32, b: i32): i32; - -def add(a, b) = a + b -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/pre-declaration.arc.rust-tests b/arc-lang/examples/pre-declaration.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/pre-declaration.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/predict.rs b/arc-lang/examples/predict.rs new file mode 100644 index 000000000..6158ac6e9 --- /dev/null +++ b/arc-lang/examples/predict.rs @@ -0,0 +1,29 @@ +use runtime::prelude::*; + +fn main() { + std::env::set_current_dir(concat!(env!("CARGO_MANIFEST_DIR"), "/examples/")).unwrap(); + + let model_file: File = File::open("./model/resnet18.onnx"); + let model_data: Blob = model_file.read_to_bytes(); + let model: Model = Model::new(model_data); + + let img_file: File = File::open("./data/images/cats.txt"); + let img_data: Blob = img_file.read_to_bytes(); + let img: Image = Image::new(img_data); + let img: Image = img.resize_height(256); + let img: Image = img.center_crop(224, 224); + + let x: Matrix = img.into_matrix().insert_axis(0); + let y: Matrix = model.predict(x).remove_axis(0); + + let y = y.into_vec().sort(); + + let labels_file: File = File::open("./models/imagenet_class_index.txt"); + let labels_data: String = labels_file.read_to_string(); + let labels: Vec = labels_data.decode(Encoding::Json); + + for (i, score) in y.iter().enumerate() { + let label = labels[i as usize].clone(); + println!("{}: {}", label, score); + } +} diff --git a/arc-lang/examples/program.arc b/arc-lang/examples/program.arc deleted file mode 100644 index 29824a748..000000000 --- a/arc-lang/examples/program.arc +++ /dev/null @@ -1,8 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def main() { - # ... -} -# ANCHOR_END: example diff --git a/arc-lang/examples/program.arc.rust-tests b/arc-lang/examples/program.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/program.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/query.arc b/arc-lang/examples/query.arc deleted file mode 100644 index 7aa7d2848..000000000 --- a/arc-lang/examples/query.arc +++ /dev/null @@ -1,27 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: implicit -def test0(s) = - from x in s { - where x.k != 1 - group x.k - reduce - sum of x.v, - count - } -# ANCHOR_END: implicit - -# ANCHOR: explicit -def test1(s: Stream[#{k:i32,v:i32}]) = - from x in s { - where x.k != 1 - group k = x.k - reduce - sum = sum of x.v, - count = count - } -# ANCHOR_END: explicit - -def main() {} diff --git a/arc-lang/examples/query.arc.rust-tests b/arc-lang/examples/query.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/query.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/record-patterns.arc b/arc-lang/examples/record-patterns.arc deleted file mode 100644 index 3824c4b86..000000000 --- a/arc-lang/examples/record-patterns.arc +++ /dev/null @@ -1,14 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -# Pattern matching on records -val a = {x0:0, x1:2, x2:3}; -val {x0, x1, x2} = a; # Extract `x0`, `x1`, and `x2` -val {x0} = a; # Extract only `x0` -val {x0, x1, x2:y} = a; # Extract `x0` and `x1`, and alias `x2` to `y` -val {x0, x1|b} = a; # Extract `x0` and `x1`, and bind `{x1}` to `b` -# ANCHOR_END: example -} diff --git a/arc-lang/examples/record-patterns.arc.rust-tests b/arc-lang/examples/record-patterns.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/record-patterns.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/row-polymorphism-shape.arc b/arc-lang/examples/row-polymorphism-shape.arc deleted file mode 100644 index b3e3df119..000000000 --- a/arc-lang/examples/row-polymorphism-shape.arc +++ /dev/null @@ -1,17 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def area(shape) = shape.x * shape.y - -def main() { - val line = #{x:5}; - val rect = #{y:10|line}; - val cube = #{z:20|rect}; - - area(line); # ERROR - area(rect); # OK - area(cube); # OK -} -# ANCHOR_END: example diff --git a/arc-lang/examples/row-polymorphism-shape.arc.rust-tests b/arc-lang/examples/row-polymorphism-shape.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/row-polymorphism-shape.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/row-polymorphism.arc b/arc-lang/examples/row-polymorphism.arc deleted file mode 100644 index bcae0331d..000000000 --- a/arc-lang/examples/row-polymorphism.arc +++ /dev/null @@ -1,14 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def foo[T](x: #{y:i32|T}): i32 = x.y - -def bar(x: #{y:i32, z:i32}): i32 = x.y + x.z - -def main() { - val x = #{y:5, z:5}; - val y = #{y:5, z:5, w:9}; - foo(x); - foo(y); - bar(x); -} diff --git a/arc-lang/examples/row-polymorphism.arc.rust-tests b/arc-lang/examples/row-polymorphism.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/row-polymorphism.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/shapes.arc b/arc-lang/examples/shapes.arc deleted file mode 100644 index 0c6e34664..000000000 --- a/arc-lang/examples/shapes.arc +++ /dev/null @@ -1,20 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -enum Shape[T] { - Rectangle(T, T), - Circle(T), -} - -def area(shape) = match shape { - Shape::Rectangle(width, height) => width * height, - Shape::Circle(radius) => 3.14 * radius ** 2 -} - -def main() { - val a0 = area(Shape::Rectangle(5.0, 3.0)); - val a1 = area(Shape::Circle(3.0)); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/shapes.arc.rust-tests b/arc-lang/examples/shapes.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/shapes.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/socket-to-stdout.arc b/arc-lang/examples/socket-to-stdout.arc new file mode 100644 index 000000000..ad8371830 --- /dev/null +++ b/arc-lang/examples/socket-to-stdout.arc @@ -0,0 +1,13 @@ +# Run with: +# Terminal 1: $ nc -l 9000 +# Terminal 2: $ echo "1\n2\n3" | cargo run -- socket-to-stdout.arc + +def f(x) = x + 1; + +val i = tcp_reader(socket("127.0.0.1:9000")); +val o = stdout_writer(); + +source::[i32](i, csv(','), ingestion(1s)) + .map(f) + .sink(o, csv(',')) + .run(); diff --git a/arc-lang/examples/stdin-to-socket.arc b/arc-lang/examples/stdin-to-socket.arc new file mode 100644 index 000000000..5093d53be --- /dev/null +++ b/arc-lang/examples/stdin-to-socket.arc @@ -0,0 +1,13 @@ +# Run with: +# Terminal 1: $ cargo run -- socket-to-stdout.arc +# Terminal 2: $ nc 127.0.0.1 9000 + +def f(x) = x + 1; + +val i = stdin_reader(); +val o = tcp_writer(socket("127.0.0.1:9000")); + +source::[i32](i, csv(','), ingestion(1s)) + .map(f) + .sink(o, csv(',')) + .run(); diff --git a/arc-lang/examples/stdin-to-stdout.arc b/arc-lang/examples/stdin-to-stdout.arc new file mode 100644 index 000000000..3c019872a --- /dev/null +++ b/arc-lang/examples/stdin-to-stdout.arc @@ -0,0 +1,13 @@ +# Run with: +# Terminal 1: $ cargo run -- socket-to-stdout.arc +# Terminal 2: $ nc 127.0.0.1 9000 + +def f(x) = x + 1; + +val i = stdin_reader(); +val o = stdout_writer(); + +source::[i32](i, csv(','), ingestion(1s)) + .map(f) + .sink(o, csv(',')) + .run(); diff --git a/arc-lang/examples/stdio-stream.arc b/arc-lang/examples/stdio-stream.arc new file mode 100644 index 000000000..2fd78ce08 --- /dev/null +++ b/arc-lang/examples/stdio-stream.arc @@ -0,0 +1,6 @@ +def f(x) = x > 1; + +source::[i32](stdin_reader(), csv(','), ingestion(1s)) + .filter(f) + .sink(file_writer(path("foo.csv")), csv(',')) + .run(); diff --git a/arc-lang/examples/strings.arc b/arc-lang/examples/strings.arc deleted file mode 100644 index 6c75a4249..000000000 --- a/arc-lang/examples/strings.arc +++ /dev/null @@ -1,33 +0,0 @@ -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -val a0 = "hello"; - -assert(a0.str_eq("hello")); -assert(not a0.str_eq("world")); - -val a1 = i32_to_string(1); -assert(a1.str_eq("1")); - -val a2 = "world"; -a2.push_char('!'); -assert(a2.str_eq("world!")); - -a2.insert_char(0u32, '!'); -assert(str_eq(a2, "!world!")); - -val a3 = ""; -assert(not a2.is_empty_str()); -assert(a3.is_empty_str()); - -val a4 = "hey"; -a4.clear_str(); -assert(is_empty_str(a4)); - -val a5 = "((("; -val a6 = ")))"; -assert(a5.concat(a6).str_eq("((()))")); -# ANCHOR_END: example -} diff --git a/arc-lang/examples/strings.arc.rust-tests b/arc-lang/examples/strings.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/strings.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-exception-at-consumer.arc b/arc-lang/examples/task-exception-at-consumer.arc deleted file mode 100644 index 14c696924..000000000 --- a/arc-lang/examples/task-exception-at-consumer.arc +++ /dev/null @@ -1,27 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task producer(xs): (o) { - for x in xs { - o ! x; - } -} - -task consumer(i) { - loop { - try { - print(receive i); - } catch Exception::Receive { - print("Producer has terminated, therefore I will terminate."); - return; - } - } -} - -def main() { - val stream = producer([1,2,3]); - consumer(stream); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/task-exception-at-consumer.arc.rust-tests b/arc-lang/examples/task-exception-at-consumer.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/task-exception-at-consumer.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-exception-at-producer.arc b/arc-lang/examples/task-exception-at-producer.arc deleted file mode 100644 index b0b6d15bf..000000000 --- a/arc-lang/examples/task-exception-at-producer.arc +++ /dev/null @@ -1,30 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task producer(xs): (o) { - for x in xs { - try { - o ! x; - } catch Exception::Emit { - print("Consumer has terminated, therefore I will terminate."); - return; - } - } -} - -task consumer(i) { - for x in i { - print(x); - if rand() % 100 == 0 { - break; - } - } -} - -def main() { - val stream = producer([1,2,3]); - consumer(stream); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/task-exception-at-producer.arc.rust-tests b/arc-lang/examples/task-exception-at-producer.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/task-exception-at-producer.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-flow-control.arc b/arc-lang/examples/task-flow-control.arc deleted file mode 100644 index d22cfe7cc..000000000 --- a/arc-lang/examples/task-flow-control.arc +++ /dev/null @@ -1,23 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task producer(): (o) { - for x in 0.. { - o ! x; - } -} - -task consumer(i): () { - for x in i.. { - sleep(1s); - print(i); - } -} - -def main() { - val s = producer(); - consumer(s); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/task-flow-control.arc.rust-tests b/arc-lang/examples/task-flow-control.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/task-flow-control.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-identity.arc b/arc-lang/examples/task-identity.arc deleted file mode 100644 index 30743fefd..000000000 --- a/arc-lang/examples/task-identity.arc +++ /dev/null @@ -1,13 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task identity(source): (sink) { - loop { - on event in source => sink ! event; - } -} -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/task-identity.arc.rust-tests b/arc-lang/examples/task-identity.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/task-identity.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-lambda.arc b/arc-lang/examples/task-lambda.arc deleted file mode 100644 index 4e1dd7c79..000000000 --- a/arc-lang/examples/task-lambda.arc +++ /dev/null @@ -1,13 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def test(i) { - task: (o) = loop { - on x in i => o ! x - } -} -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/task-lambda.arc.rust-tests b/arc-lang/examples/task-lambda.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/task-lambda.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-map-for.arc b/arc-lang/examples/task-map-for.arc deleted file mode 100644 index 890c913f1..000000000 --- a/arc-lang/examples/task-map-for.arc +++ /dev/null @@ -1,13 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task map(i, f): (o) { - for x in i { - o ! f(x); - } -} -# ANCHOR_END: example - -def main() {} diff --git a/arc-lang/examples/task-map-for.arc.rust-tests b/arc-lang/examples/task-map-for.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/task-map-for.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-map.arc b/arc-lang/examples/task-map.arc deleted file mode 100644 index b12cffeea..000000000 --- a/arc-lang/examples/task-map.arc +++ /dev/null @@ -1,37 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task map(i, f): (o) { - loop { - o ! f(receive i); - } -} - -def main() { - val stream0 = source(0..); - val stream1 = map(stream0, fun(x) = x + 1); -} -# ANCHOR_END: example - -# ANCHOR: for-loop -task map(i, f): (o) { - for x in i { - o ! f(x); - } -} -# ANCHOR_END: for-loop - -# ANCHOR: annotated -task map(i: Stream[i32], f: fun(i32):i32): (o: Drain[i32]) { - loop { - o ! f(receive i); - } -} - -def main() { - val stream0: Stream[i32] = source(0..); - val stream1: Stream[i32] = map(stream0, fun(x) = x + 1); -} -# ANCHOR_END: annotated diff --git a/arc-lang/examples/task-map.arc.rust-tests b/arc-lang/examples/task-map.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/task-map.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-merge.arc b/arc-lang/examples/task-merge.arc deleted file mode 100644 index 7536fe965..000000000 --- a/arc-lang/examples/task-merge.arc +++ /dev/null @@ -1,18 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task merge(s0, s1): (s2) { - loop { - s2 ! (receive s0); - s2 ! (receive s1); - } -} - -def main() { - val stream0 = 0..100; - val stream1 = 0..100; - val stream2 = merge(stream0, stream1); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/task-merge.arc.rust-tests b/arc-lang/examples/task-merge.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/task-merge.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-split.arc b/arc-lang/examples/task-split.arc deleted file mode 100644 index 34db30135..000000000 --- a/arc-lang/examples/task-split.arc +++ /dev/null @@ -1,20 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -extern def read_numbers_stream(): Stream[i32]; - -# ANCHOR: example -task split(s0, f): (s1, s2) { - loop { - val x = receive s0; - s1 ! x; - s2 ! x; - } -} - -def main() { - val stream0 = read_numbers_stream(); - val (stream1, stream2) = split(stream0, stream1); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/task-split.arc.rust-tests b/arc-lang/examples/task-split.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/task-split.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-state.arc b/arc-lang/examples/task-state.arc deleted file mode 100644 index 33b9bda45..000000000 --- a/arc-lang/examples/task-state.arc +++ /dev/null @@ -1,19 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task reduce(i, f, init): (o) { - var state = init; - for x in i { - state = f(state, x); - o ! state; - } -} - -def main() { - let sum = reduce(0..100, fun(a, b): a + b, 0); - let count = reduce(0..100, fun(a, _): a + 1, 0); - let max = reduce(0..100, fun(a, b): if a > b { a } else { b }, 0); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/task-state.arc.rust-tests b/arc-lang/examples/task-state.arc.rust-tests deleted file mode 100644 index 5e8163871..000000000 --- a/arc-lang/examples/task-state.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/task-union.arc b/arc-lang/examples/task-union.arc deleted file mode 100644 index 152a90d72..000000000 --- a/arc-lang/examples/task-union.arc +++ /dev/null @@ -1,20 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -task union(s0, s1): (s2) { - loop { - on { - x in s0 => s2 ! x, - x in s1 => s2 ! x, - } - } -} - -def main() { - val stream0 = 0..100; - val stream1 = 0..100; - val stream2 = union(stream0, stream1); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/task-union.arc.rust-tests b/arc-lang/examples/task-union.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/task-union.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/todo/operators.arc b/arc-lang/examples/todo/operators.arc new file mode 100644 index 000000000..cd9b38330 --- /dev/null +++ b/arc-lang/examples/todo/operators.arc @@ -0,0 +1,52 @@ +# XFAIL: * +# RUN: arc-lang %s + +type Item = {name: Text, price: f64, mass: f64}; +type Order = {id: u32, customer_id: u32, price: f64, items: Vec[Item], time: Time}; + +val s0: Stream[Order] = source(stdin(), json()); +val s1: Stream[Order] = source(file("logs/*.csv"), csv()); +val s2: Stream[Order] = source(http("127.0.0.1", 8080, "orders"), tsv()); +val s3: Stream[Order] = source(tcp("127.0.0.1", 8081), text()); +val s4: Stream[Order] = source(kafka("127.0.0.1", 8082, "orders"), json()); + +# Can either generate or extract timestamps +val s5: Stream[Order] = source(stdin(), csv(), ingestion()); +val s6: Stream[Order] = source(stdin(), csv(), event(fun(e) = e.time)); +val s7: Stream[Order] = merge([s0, s1, s2, s3, s4, s5, s6]); + +sink(s7, stdout(), json()); +sink(s7, file("output.csv"), csv()); + +def to_usd(price) = price * 1.1; + +val s1: Stream[Order] = filter(s0, fun(o) = o.price > 10.0 and o.items.len() > 0); +val s2: Stream[Item] = flatmap(s1, fun(o) = o.items); +val s3: Stream[Text] = map(s2, fun(i) = {name: i.name, price: to_usd(i.price)}); +sink(s3, stdout(), json()); + +source::[Order](stdin(), json()) + .filter(fun(o) = o.price > 10.0 and o.items.len() > 0) + .flatmap(_.items) + .map(fun(i) = {i.name, price: i.price.to_usd()}) + .sink(stdout(), json()); + +from o:Order in source(stdin(), json()) +where o.price > 10.0 and o.items.len() > 0 +from i in o.items +select {i.name, usd: i.price.to_usd()} +into sink(stdout(), json()); + +val stream = + from o:Order in source(stdin(), json()) + where o.price > 10.0 and o.items.len() > 0 + from i in o.items + select {i.name, usd: i.price.to_usd()}; + +def query(stream) = + from o in stream + where o.price > 10.0 and o.items.len() > 0 + from i in o.items + select {i.name, usd: i.price.to_usd()}; + +val stream = query(source::[Order](stdin(), json())); diff --git a/arc-lang/examples/todo/predict.arc b/arc-lang/examples/todo/predict.arc new file mode 100644 index 000000000..fe5f45c70 --- /dev/null +++ b/arc-lang/examples/todo/predict.arc @@ -0,0 +1,22 @@ +# XFAIL: * +# RUN: arc-lang %s + +type Item = {name:String, price:f64, mass:f64}; +type Order = {id:u32, items: Vec[Item], t:Time, src_id:u32, dst_id:u32}; +type Area = {id:u32, lon:f32, lat:f32}; + +val model: Model[[f32;3],[f32;1]] = model(path("cost_predictor.pb"), tf()); +val areas: Set[Area] = set(path("areas.csv"), csv()); + +---rust +fn is_valid_order(o: Order) -> bool { todo!() } +--- + +from o:Order in source(kafka("127.0.0.1:9092", "orders"), json()) +where is_valid_order(o) +join a0 in areas on a0.id == o.src_id +join a1 in areas on a1.id == o.dst_id +with features = [o.items.sum_by(_.mass), f32(o.t.day()), distance(a0, a1)] +with [shipment_cost] = model.predict(features) +select {o.id, shipment_cost} +into sink(kafka("127.0.0.1:9092", "cost_predictions"), json()); diff --git a/arc-lang/examples/todo/scoping.arc b/arc-lang/examples/todo/scoping.arc new file mode 100644 index 000000000..2811dd583 --- /dev/null +++ b/arc-lang/examples/todo/scoping.arc @@ -0,0 +1,29 @@ +# XFAIL: * +# RUN: arc-lang %s + +val a = 0; +val b = a; +def c() = a; +def d() = c(); +type T = i32; + +def e() { + val x = " a + 1 = ${a + 1} "; + val a = a; + val b = a; + def c() = a; + def d() = c(); + d(); +} + +def f0(a) = a+1; +val f1 = fun(a) = a+1; + +a.f0(); +a.f1(); +a.f1(); +a.f1(); +a.f1(); + +def r0() = r1(); +def r1() = r0(); diff --git a/arc-lang/examples/todo/wordcount.arc b/arc-lang/examples/todo/wordcount.arc new file mode 100644 index 000000000..11c463f67 --- /dev/null +++ b/arc-lang/examples/todo/wordcount.arc @@ -0,0 +1,13 @@ +# XFAIL: * +# RUN: arc-lang %s +from line:String in source(file("data/generated/lines.txt"), csv(','), ingestion()) +from word in line.split(" ") +over tumbling(size=1h) { + group word { + compute { + count + } as c + } as g +} as w +select {w.g.word, w.g.c.count} +into file("prices.csv"), csv(',')); diff --git a/arc-lang/examples/tuple-patterns.arc b/arc-lang/examples/tuple-patterns.arc deleted file mode 100644 index 358c1b337..000000000 --- a/arc-lang/examples/tuple-patterns.arc +++ /dev/null @@ -1,11 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -# Pattern matching on tuples: -val a = (1, 2, 3); -val (x0, x1, x2) = a; -# ANCHOR_END: example -} diff --git a/arc-lang/examples/tuple-patterns.arc.rust-tests b/arc-lang/examples/tuple-patterns.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/tuple-patterns.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/type-alias.arc b/arc-lang/examples/type-alias.arc deleted file mode 100644 index 61696ed69..000000000 --- a/arc-lang/examples/type-alias.arc +++ /dev/null @@ -1,24 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -extern def sqrt(Num): Num; - -# ANCHOR: example -type Num = i32; -type Point = {x:Num, y:Num}; -type Line = {start:Point, end:Point}; - -def length(line) { - val a = line.start.x - line.end.x; - val b = line.start.y - line.end.y; - sqrt(a**2 + b**2) -} - -def main() { - val p0 = {x:0, y:1}; - val p1 = {x:5, y:9}; - val line = {start:p0, end:p1}; - length(line); -} -# ANCHOR_END: example diff --git a/arc-lang/examples/type-alias.arc.rust-tests b/arc-lang/examples/type-alias.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/type-alias.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/type-class.arc b/arc-lang/examples/type-class.arc deleted file mode 100644 index 0db423cd3..000000000 --- a/arc-lang/examples/type-class.arc +++ /dev/null @@ -1,15 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: class -class Add { - def add(T, T): T; -} -# ANCHOR_END: class - -# ANCHOR: instance -instance Add<#{sum:i32}> { - def add(l, r) = #{sum: l.sum + r.sum} -} -# ANCHOR_END: instance diff --git a/arc-lang/examples/type-class.arc.rust-tests b/arc-lang/examples/type-class.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/type-class.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/types.arc b/arc-lang/examples/types.arc deleted file mode 100644 index 29e1c46d4..000000000 --- a/arc-lang/examples/types.arc +++ /dev/null @@ -1,25 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -extern def main( -# ANCHOR: record -#{x:i32, y:str} # Record-type -# ANCHOR_END: record -, -# ANCHOR: tuple -(i32, str) # Tuple-type -# ANCHOR_END: tuple -, -# ANCHOR: function -fun(i32): i32 # Function-type -# ANCHOR_END: function -, -# ANCHOR: exclusive_range -i32..i32 # Exclusive Range-type -# ANCHOR_END: exclusive_range -, -# ANCHOR: inclusive_range -i32..=i32 # Inclusive Range-type -# ANCHOR_END: inclusive_range -); diff --git a/arc-lang/examples/types.arc.rust-tests b/arc-lang/examples/types.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/types.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/uses.arc b/arc-lang/examples/uses.arc deleted file mode 100644 index 3392d890e..000000000 --- a/arc-lang/examples/uses.arc +++ /dev/null @@ -1,14 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -type Person = #{name: str, age: i32} - -use Person as Human; # Creates an alias - -def main(): Person { - val person: Person = #{name:"Bob", age:35}; - val human: Human = Person; -} -# ANCHOR_END: example diff --git a/arc-lang/examples/uses.arc.rust-tests b/arc-lang/examples/uses.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/uses.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/values.arc b/arc-lang/examples/values.arc deleted file mode 100644 index 71f44fcd2..000000000 --- a/arc-lang/examples/values.arc +++ /dev/null @@ -1,20 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -val v0: i32 = 3; # Integer -val v1: f32 = 0.1; # Float -val v2: f32 = 10%; # Float (Percentage) -val v3: i32 = 100ms; # Duration -val v4: String = 2020-12-16T16:00:00; # DateTime -val v5: char = 'c'; # Character -val v6: String = "hello"; # String -val v7: String = "$v6 world"; # String (Interpolated) -val v8: #{x:i32, y:i32} = #{x:5, y:8}; # Record -val v9: Option[i32] = Option::Some(3); # Enum variant -val v10: [i32] = [1,2,3]; # Vector -val v11: fun(i32): i32 = fun(x:i32) = x; # Lambda function -# ANCHOR_END: example -} diff --git a/arc-lang/examples/values.arc.rust-tests b/arc-lang/examples/values.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/values.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/vector-patterns.arc b/arc-lang/examples/vector-patterns.arc deleted file mode 100644 index 3dd5a2c30..000000000 --- a/arc-lang/examples/vector-patterns.arc +++ /dev/null @@ -1,16 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -# Pattern matching on vectors -val a = [1,2,3]; - -match a { - [1, ..] => 1, - [.., 3] => 3, - _ => 0 -}; -# ANCHOR_END: example -} diff --git a/arc-lang/examples/vector-patterns.arc.rust-tests b/arc-lang/examples/vector-patterns.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/vector-patterns.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/vectors.arc b/arc-lang/examples/vectors.arc deleted file mode 100644 index d386f30ef..000000000 --- a/arc-lang/examples/vectors.arc +++ /dev/null @@ -1,52 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -def main() { -# ANCHOR: example -val a: Array[i32] = [1, 2, 3]; - -val b: Array[i32] = array(); -b.push(1); -b.push(2); -b.push(3); - -assert(a[0u32] == b[0u32]); -assert(a[1u32] == b[1u32]); -assert(a[2u32] == b[2u32]); - -a[0u32] = 2; - -assert(a[0u32] == 2); -assert(a.get(0u32) == 2); - -# for x in a { -# assert(x != 0); -# } - -assert(a.len() ==u32 3u32); -assert(a.capacity() ==u32 3u32); -assert(not a.is_empty()); - -a.clear(); -assert(a.is_empty()); - -b.pop(); -assert(b.len() ==u32 2u32); - -val c = [1]; - -c.extend([2, 3]); -assert(c[0u32] == 1); -assert(c[1u32] == 2); -assert(c[2u32] == 3); - -c.remove(0u32); -assert(c[0u32] == 2); - -c.insert(0u32, 1); -assert(c[0u32] == 2); - -# ANCHOR_END: example -} - diff --git a/arc-lang/examples/vectors.arc.rust-tests b/arc-lang/examples/vectors.arc.rust-tests deleted file mode 100644 index a862eeb60..000000000 --- a/arc-lang/examples/vectors.arc.rust-tests +++ /dev/null @@ -1,4 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-lang/examples/wordcount.arc b/arc-lang/examples/wordcount.arc deleted file mode 100644 index 38b7e9456..000000000 --- a/arc-lang/examples/wordcount.arc +++ /dev/null @@ -1,22 +0,0 @@ -# XFAIL: * -# RUN: arc -o %t run %s -- -rustinclude %s.rust-tests -# RUN: arc -o %t-canon run %s -- -rustinclude %s.rust-tests -canonicalize - -# ANCHOR: example -def wordcount(lines) = - from line in lines, - word in line.split(" ") - group word - window 10m every 5m - compute count -# ANCHOR_END: example - -def main() { -# ANCOR: polymorphic -val df = DataFrame::read("/path/to/data.csv"); -val wc0 = wordcount(df); - -val s = Stream::read("localhost:8080"); -val wc1 = wordcount(s); -# ANCOR_END: polymorphic -} diff --git a/arc-lang/lib/dune b/arc-lang/lib/dune deleted file mode 100644 index e35f627ff..000000000 --- a/arc-lang/lib/dune +++ /dev/null @@ -1,2 +0,0 @@ -(library - (name arc_script_prototyping)) diff --git a/arc-lang/src/ast.ml b/arc-lang/src/ast.ml deleted file mode 100644 index 6cdbb9318..000000000 --- a/arc-lang/src/ast.ml +++ /dev/null @@ -1,220 +0,0 @@ -type ast = items -and name = string -and path = name list -and arms = arm list -and arm = pattern * expr -and params = param list -and param = pattern * ty option -and index = int -and 't fields = 't field list -and 't field = name * 't option -and 't record = 't fields * 't option -and port = name * ty -and variants = variant list -and variant = name * tys -and block = stmts * expr option -and generics = generic list -and generic = name - -and defname = - | DName of name - | DUnOp of unop - | DBinOp of binop - -and decorator = lit fields - -and items = item list -and item = - | IExternDef of decorator * defname * generics * tys * ty option - | IDef of decorator * defname * generics * params * ty option * block option - | ITask of decorator * defname * generics * params * params * block option - | IVal of decorator * name * ty option * expr - | IEnum of decorator * name * generics * variants - | IExternType of decorator * name * generics - | IClass of decorator * name * generics * decls - | IInstance of decorator * generics * path * tys * defs - | IMod of decorator * name * items - | ITypeAlias of decorator * name * generics * ty - | IUse of decorator * path * name option - -and decls = decl list -and decl = name * generics * params * ty option - -and defs = def list -and def = name * generics * params * ty option * block - -and patterns = pattern list -and pattern = - | PIgnore - | POr of pattern * pattern - | PRecord of pattern record - | PTuple of patterns - | PConst of lit - | PVar of name - | PUnwrap of path * patterns - -and tys = ty list -and ty = - | TFunc of tys * ty - | TTuple of tys - | TRecord of ty record - | TPath of path * tys - | TArray of ty - -and binop = - | BAdd of string option - | BAnd - | BBand - | BBor - | BBxor - | BDiv of string option - | BEq of string option - | BGeq of string option - | BGt of string option - | BLeq of string option - | BLt of string option - | BMod of string option - | BMul of string option - | BMut - | BNeq of string option - | BOr - | BPow of string option - | BSub of string option - | BXor - | BIn - | BRExc - | BRInc - | BBy - | BNotIn - -and unop = - | UNeg of string option - | UNot - -and int_suffix = string -and float_suffix = string -and lit = - | LInt of int * int_suffix option - | LFloat of float * float_suffix option - | LBool of bool - | LString of string - | LUnit - | LChar of char - -and stmts = stmt list -and stmt = - | SNoop - | SVal of param * expr - | SVar of (name * ty option) * expr - | SExpr of expr - -and exprs = expr list -and expr = - | EAccess of expr * name - | ECall of expr * exprs - | ECast of expr * ty - | EIf of expr * block * block option - | ELit of lit - | ELoop of block - | ERecord of expr record - | EReturn of expr option - | EBreak of expr option - | EContinue - (* NB: These expressions are desugared *) - | EBinOpRef of binop - | EUnOp of unop * expr - | EArray of exprs * expr option - | EBinOp of binop * expr * expr - | EBlock of block - | ECompr of expr * (pattern * expr) * clauses - | EFor of pattern * expr * block - | EFunc of params * block - | EIfVal of pattern * expr * block * block option - | EInvoke of expr * name * exprs - | EMatch of expr * arms - | EReceive of expr - | EEmit of expr * expr - | EOn of receivers - | EPath of path * tys - | EProject of expr * index - | ESelect of expr * expr - | ETask of params * block - | ETuple of exprs - | EFrom of scans * steps - | EAnon - | EWhile of expr * block - | EWhileVal of pattern * expr * block - -and receivers = receiver list -and receiver = pattern * expr * expr - -and clauses = clause list -and clause = - | CFor of pattern * expr - | CIf of expr - -and scans = scan list -and scan = pattern * scankind * expr -and scankind = - | ScIn - | ScEq - -and steps = step list -and step = - | SWhere of expr - | SJoin of scan * expr option - | SGroup of exprs * window option * reduces - | SOrder of (expr * ord) list - | SYield of expr - -and window = expr option * expr (* Step and Duration *) - -and reduces = reduce list -and reduce = expr * expr option (* Aggregation and Column *) - -and ord = - | OAsc - | ODesc - -let rec unop_name op = - match op with - | UNeg s -> suffixed "neg" s - | UNot -> "not" - -and suffixed x s = - match s with - | Some s -> Printf.sprintf "%s%s" x s - | None -> Printf.sprintf "%s" x - -and binop_name op = - match op with - | BAdd s -> suffixed "add" s - | BAnd -> "and" - | BBand -> "band" - | BBor -> "bor" - | BBxor -> "bxor" - | BDiv s -> suffixed "div" s - | BGeq s -> suffixed "geq" s - | BGt s -> suffixed "gt" s - | BLeq s -> suffixed "leq" s - | BLt s -> suffixed "lt" s - | BMod s -> suffixed "mod" s - | BMul s -> suffixed "mul" s - | BNeq s -> suffixed "neq" s - | BOr -> "or" - | BPow s -> suffixed "pow" s - | BSub s -> suffixed "sub" s - | BXor -> "xor" - | BIn -> "contains" - | BNotIn -> "not_contains" - | BRExc -> "rexc" - | BRInc -> "rinc" - | BEq s -> suffixed "eq" s - | BMut -> "mut" - | BBy -> "by" - -and def_name d = - match d with - | DName x -> x - | DBinOp op -> binop_name op - | DUnOp op -> unop_name op diff --git a/arc-lang/src/ast_to_hir.ml b/arc-lang/src/ast_to_hir.ml deleted file mode 100644 index 085bcf6b2..000000000 --- a/arc-lang/src/ast_to_hir.ml +++ /dev/null @@ -1,1153 +0,0 @@ -open Hir -open Table -open Utils - -type clause = eq list * subst list * Ast.expr -and subst = (name * name) -and eq = name * Ast.pattern - -module Ctx = struct - type t = { - table: Table.table; (* Table of top-level item declarations *) - next_def_uid: Gen.t; (* Function uid counter *) - next_type_uid: Gen.t; (* Type uid counter *) - next_generic_uid: Gen.t; (* Generic uid counter *) - next_expr_uid: Gen.t; (* Expression uid counter *) - vstack: vscope list; (* Stack of scopes for value parameters *) - gstack: gscope list; (* Stack of scopes for type parameters *) - path: path; (* Current path *) - hir: definition list; (* Final output of the lowering *) - then_clauses: clause list; (* Then-clauses created during pattern compilation *) - else_clauses: clause list; (* Else-clauses created during pattern compilation *) - astack: ascope list; (* Stack of anonymous variables *) - } - and vscope = { - vsubst: (name * (name * mut)) list; - stmts: Hir.ssa list; - } - and mut = - | MVar - | MVal - and gscope = { - gsubst: (name * name) list; - } - and ascope = { - avars: name list; - } - and definition = path * item - - let rec make table = { - table = table; - next_def_uid = Gen.make (); - next_type_uid = Gen.make (); - next_generic_uid = Gen.make (); - next_expr_uid = Gen.make (); - vstack = []; - gstack = []; - astack = []; - path = []; - hir = []; - then_clauses = []; - else_clauses = []; - } - - - and pr_subst (x, (a, _)) ctx = - Pretty.pr_name x ctx; - Pretty.pr " => "; - Pretty.pr_name a ctx - - and print_substs substs ctx = - Pretty.pr "Substs: "; - Pretty.pr_brack (Pretty.pr_list pr_subst substs) ctx - - and print_scopes scopes ctx = - match scopes with - | [] -> () - | scope::scopes -> - Pretty.pr "Scope:"; - let ctx = ctx |> Pretty.Ctx.indent in - ctx |> Pretty.pr_indent; - print_substs scope.vsubst ctx; - ctx |> Pretty.pr_indent; - print_scopes scopes ctx; - - and add_item xs i (ctx:t) = - { ctx with hir = (xs, i)::ctx.hir } - - and fresh_ts n (ctx:t) = - repeat fresh_t n ctx - - and fresh_t (ctx:t) = - let (n, next_type_uid) = ctx.next_type_uid |> Gen.fresh in - let ctx = { ctx with next_type_uid } in - let x = Printf.sprintf "%d" n in - let t = Hir.TVar x in - (t, ctx) - - and fresh_x (ctx:t) = - let (n, next_expr_uid) = ctx.next_expr_uid |> Gen.fresh in - let x = Printf.sprintf "x%d" n in - let ctx = { ctx with next_expr_uid; } in - (x, ctx) - - and fresh_f (ctx:t) = - let (n, next_def_uid) = ctx.next_def_uid |> Gen.fresh in - let x = Printf.sprintf "f%d" n in - let ctx = { ctx with next_def_uid; } in - ([x], ctx) - - and fresh_g (ctx:t) = - let (n, next_generic_uid) = ctx.next_generic_uid |> Gen.fresh in - let g = Printf.sprintf "T%d" n in - let ctx = { ctx with next_generic_uid; } in - (g, ctx) - - and add_expr e (ctx:t) = - let (t, ctx) = ctx |> fresh_t in - ctx |> add_typed_expr e t - - and add_named_expr e x (ctx:t) = - let (t, ctx) = ctx |> fresh_t in - let s = (x, t, e) in - let ctx = ctx |> add_stmt s in - (x, ctx) - - and add_typed_expr e t (ctx:t) = - let (x, ctx) = ctx |> fresh_x in - let s = (x, t, e) in - let ctx = ctx |> add_stmt s in - (x, ctx) - - and add_stmt (s:Hir.ssa) (ctx:t) = - match ctx.vstack with - | h::t -> { ctx with vstack = { h with stmts = s::h.stmts}::t } - | [] -> unreachable () - - and add_stmts s (ctx:t) = - match ctx.vstack with - | h::t -> { ctx with vstack = { h with stmts = s @ h.stmts}::t } - | [] -> unreachable () - - and push_vscope (ctx:t) = - { ctx with vstack = { stmts = []; vsubst = [] }::ctx.vstack } - - and pop_vscope (ctx:t) = - match ctx.vstack with - | {stmts; _}::vstack -> (stmts |> List.rev, { ctx with vstack }) - | [] -> unreachable () - - and push_gscope (ctx:t) = - { ctx with gstack = { gsubst = [] }::ctx.gstack } - - and pop_gscope (ctx:t) = - { ctx with gstack = ctx.gstack |> List.tl } - - and push_ascope (ctx:t) = - { ctx with astack = { avars = [] }::ctx.astack } - - and pop_ascope (ctx:t) = - let vs = (ctx.astack |> List.hd).avars in - let ctx = { ctx with astack = ctx.astack |> List.tl } in - (vs, ctx) - - and add_anon (ctx:t) = - let (x, ctx) = ctx |> fresh_x in - match ctx.astack with - | h::t -> - let ctx = { ctx with astack = { avars = x::h.avars}::t } in - (x, ctx) - | [] -> unreachable () - - (* Returns a name path *) - and item_path x ctx = - x::ctx.path |> List.rev - - and bind_vname v m (ctx:t) = - match ctx.vstack with - | hd::tl -> - let (v', ctx) = ctx |> fresh_x in - let vstack = { hd with vsubst = (v, (v', m))::hd.vsubst }::tl in - let ctx = { ctx with vstack } in - (v', ctx) - | [] -> unreachable () - - and bind_gname g (ctx:t) = - match ctx.gstack with - | hd::tl -> - let (g', ctx) = ctx |> fresh_g in - let gstack = { gsubst = (g, g')::hd.gsubst}::tl in - let ctx = { ctx with gstack } in - (g', ctx) - | [] -> unreachable () - - and rename_vname v v' (ctx:t) = - match ctx.vstack with - | hd::tl -> - let hd = { hd with vsubst = (v, v')::hd.vsubst } in - { ctx with vstack = hd::tl } - | [] -> unreachable () - - (* Finds a value variable *) - and find_vname v (ctx:t) = - ctx.vstack |> List.find_map (fun vscope -> vscope.vsubst |> List.assoc_opt v) - - (* Finds a generic variable *) - and find_gname g (ctx:t) = - ctx.gstack |> List.find_map (fun gscope -> gscope.gsubst |> List.assoc_opt g) - - and push_namespace name ctx = - let ctx = { ctx with path = name::ctx.path } in - (ctx.path |> List.rev, ctx) - - (* Annotates SSA with name v in current scope to have type t0 *) - and annotate v t0 ctx = - match ctx.vstack with - | [] -> unreachable () - | hd0::tl0 -> - let stmts = hd0.stmts |> List.map (fun (x, t1, e) -> - let t = if v = x then t0 else t1 in - (x, t, e) - ) in - { ctx with vstack = { hd0 with stmts}::tl0 } - - and pop_namespace ctx = { ctx with path = ctx.path |> List.tl } - - and add_then_clause c ctx = { ctx with then_clauses = c::ctx.then_clauses } - - and add_else_clause c ctx = { ctx with else_clauses = c::ctx.else_clauses } - - and take_clauses ctx = - let then_clauses = ctx.then_clauses |> List.rev in - let else_clauses = ctx.else_clauses |> List.rev in - let ctx = { ctx with then_clauses = []; else_clauses = [] } in - (then_clauses, else_clauses, ctx) - - and resolve_path path (ctx:t) = - let rec resolve_path xs (ctx:t) = - match ctx.table |> PathMap.find_opt xs with - | Some (DUse xs) -> ctx |> resolve_path xs - | Some (DItem decl) -> (xs, decl) - | None -> panic (Printf.sprintf "Path not found \"%s\"" (Pretty.path_to_str xs)) - in ctx |> resolve_path (path @ ctx.path) - - and resolve_type_path xs ts ctx = - let resolve_type_path xs ctx = - let (xs, decl) = ctx |> resolve_path xs in - match decl with - | DExternDef _ | DDef _ | DTask _ | DVariant _ | DGlobal | DMod -> unreachable () - | DTypeAlias (n, _gs, _t) -> - let (_ts, _ctx) = match List.length ts with - | m when m = 0 -> fresh_ts n ctx - | m when m = n -> (ts, ctx) - | m -> panic (Printf.sprintf "Type alias \"%s\" expects %d arguments, but %d were given" (Pretty.path_to_str xs) n m) - in - todo () - | DEnum n | DClass n | DExternType n -> - let (ts, ctx) = match List.length ts with - | m when m = 0 -> fresh_ts n ctx - | m when m = n -> (ts, ctx) - | m -> panic (Printf.sprintf "Type path \"%s\" has wrong number of type arguments, expected %d but found %d" (Pretty.path_to_str xs) n m) - in - (Hir.TNominal (xs, ts), ctx) - in - match xs with - | [x] when ts = [] -> - begin match ctx |> find_gname x with - | Some x -> (Hir.TGeneric x, ctx) - | None -> ctx |> resolve_type_path xs - end - | _ -> ctx |> resolve_type_path xs - - (* Resolves a path expression *) - and resolve_expr_path xs ts ctx = - let resolve_expr_path xs ctx = - let (xs, decl) = ctx |> resolve_path xs in - match decl with - | DEnum n | DClass n | DExternDef n | DExternType n | DTask n | DDef n -> - begin - let (ts, ctx) = match List.length ts with - | m when m = 0 -> fresh_ts n ctx - | m when m = n -> (ts, ctx) - | m -> panic (Printf.sprintf "Type path \"%s\" has wrong number of type arguments, expected %d but found %d" - (Pretty.path_to_str xs) n m - ) - in - ctx |> add_expr (Hir.EItem (xs, ts)) - end - | DGlobal -> - begin - match List.length ts with - | 0 -> ctx |> add_expr (Hir.EItem (xs, [])) - | _ -> panic (Printf.sprintf "Path \"%s\" has type arguments" (Pretty.path_to_str xs)) - end - | DMod | DVariant _ | DTypeAlias _ -> panic "Found non-expr item where expr was expected" - in - match xs with - | [x] when ts = [] -> - begin match ctx |> find_vname x with - | Some (v, MVal) -> (v, ctx) - | Some (v, MVar) -> get_cell v ctx - | None -> ctx |> resolve_expr_path xs - end - | _ -> ctx |> resolve_expr_path xs - - (* Returns set of currently visible variables *) - and visible ctx = - let rec visible vstack acc = - match vstack with - | h::t -> h.stmts |> List.fold_left (fun acc (v, _, _) -> v::acc) acc |> visible t - | [] -> acc |> List.rev - in - visible ctx.vstack [] - - (* Create a new cell *) - and new_cell v t ctx = - let (v_fun, ctx) = ctx |> add_expr (Hir.EItem (["cell"], [t])) in - ctx |> add_expr (Hir.ECall (v_fun, [v])) - - (* Retrieve the value from a cell *) - and get_cell v ctx = - let (t, ctx) = ctx |> fresh_t in - let (v_fun, ctx) = ctx |> add_expr (Hir.EItem (["get_cell"], [t])) in - ctx |> add_expr (Hir.ECall (v_fun, [v])) - - (* Update the value inside a cell *) - and set_cell v0 v1 ctx = - let (t, ctx) = ctx |> fresh_t in - let (v_fun, ctx) = ctx |> add_expr (Hir.EItem (["set_cell"], [t])) in - ctx |> add_expr (Hir.ECall (v_fun, [v0; v1])) - - (* Create an empty block *) - and empty_block ctx = - let ctx = ctx |> push_vscope in - let (v, ctx) = ctx |> add_expr (Hir.ELit Ast.LUnit) in - let (ss, ctx) = ctx |> pop_vscope in - ((ss, v), ctx) - - and make_array vs ctx = - let (t, ctx) = ctx |> fresh_t in - let (v_new, ctx) = ctx |> add_expr (Hir.EItem (["array"], [t])) in - let (v_push, ctx) = ctx |> add_expr (Hir.EItem (["push"], [t])) in - let (v0, ctx) = ctx |> add_expr (Hir.ECall (v_new, [])) in - let ctx = vs |> foldl (fun ctx v1 -> ctx |> add_expr (Hir.ECall (v_push, [v0; v1])) |> snd) ctx in - (v0, ctx) - - and append_array v0 v1 ctx = - let (t, ctx) = ctx |> fresh_t in - let (v_append, ctx) = ctx |> add_expr (Hir.EItem (["append"], [t])) in - ctx |> add_expr (Hir.ECall (v_append, [v0; v1])) - - and get_array v0 v1 ctx = - let (t, ctx) = ctx |> fresh_t in - let (v_fun, ctx) = ctx |> add_expr (Hir.EItem (["get"], [t])) in - ctx |> add_expr (Hir.ECall (v_fun, [v0; v1])) - - and replace_array v0 v1 v2 ctx = - let (t, ctx) = ctx |> fresh_t in - let (v_fun, ctx) = ctx |> add_expr (Hir.EItem (["replace"], [t])) in - ctx |> add_expr (Hir.ECall (v_fun, [v0; v1; v2])) - - and nominal x ts = Hir.TNominal ([x], ts) - - and generic x = Hir.TGeneric x -end - -let rec hir_of_ast table ast = - let ctx = Ctx.make table in - let ctx = ast |> List.fold_left (fun ctx i -> lower_item i ctx) ctx in - let hir = ctx.hir |> List.rev in - hir - -and lower_item i ctx = - match i with - | Ast.IVal (d, x, t, e) -> - let xs = ctx |> Ctx.item_path x in - let (t, ctx) = lower_type_or_fresh t ctx in - let ctx = ctx |> Ctx.push_vscope in - let (v, ctx) = lower_expr e ctx in - let (ss, ctx) = ctx |> Ctx.pop_vscope in - let b = (ss, v) in - ctx |> Ctx.add_item xs (Hir.IVal (d, t, b)) - | Ast.IEnum (d, x, gs, variants) -> - let xs = x::ctx.path |> List.rev in - let ctx = ctx |> Ctx.push_gscope in - let (gs, ctx) = gs |> mapm lower_generic ctx in - let (variants, ctx) = variants |> mapm (lower_variant xs) ctx in - let ctx = ctx |> Ctx.pop_gscope in - ctx |> Ctx.add_item xs (Hir.IEnum (d, gs, variants)) - | Ast.IExternDef (d, x, gs, ts, t) -> - let x = Ast.def_name x in - let xs = x::ctx.path |> List.rev in - let ctx = ctx |> Ctx.push_gscope in - let (gs, ctx) = gs |> mapm lower_generic ctx in - let (ts, ctx) = ts |> mapm lower_type ctx in - let (t, ctx) = lower_type_or_unit t ctx in - let ctx = ctx |> Ctx.pop_gscope in - ctx |> Ctx.add_item xs (Hir.IExternDef (d, gs, ts, t)) - | Ast.IExternType (d, x, gs) -> - let xs = x::ctx.path |> List.rev in - let ctx = ctx |> Ctx.push_gscope in - let (gs, ctx) = gs |> mapm lower_generic ctx in - let ctx = ctx |> Ctx.pop_gscope in - ctx |> Ctx.add_item xs (Hir.IExternType (d, gs)) - | Ast.IClass (d, x, gs, decls) -> - let xs = x::ctx.path |> List.rev in - let ctx = ctx |> Ctx.push_gscope in - let (gs, ctx) = gs |> mapm lower_generic ctx in - let ctx = decls |> foldl (lower_decl xs) ctx in - let ctx = ctx |> Ctx.pop_gscope in - ctx |> Ctx.add_item xs (Hir.IClass (d, gs)) - | Ast.IInstance (d, gs, xs, ts, defs) -> - let ctx = ctx |> Ctx.push_gscope in - let (gs, ctx) = gs |> mapm lower_generic ctx in - let ctx = defs |> foldl (lower_def xs) ctx in - let (ts, ctx) = ts |> mapm lower_type ctx in - let ctx = ctx |> Ctx.pop_gscope in - ctx |> Ctx.add_item xs (Hir.IInstance (d, gs, xs, ts)) - (* Declaration *) - | Ast.IDef (_, _, _, _, _, None) -> ctx - (* Definition *) - | Ast.IDef (d, x, gs, ps, t, Some b) -> - let x = Ast.def_name x in - let xs = x::ctx.path in - let ctx = ctx |> Ctx.push_gscope in - let ctx = ctx |> Ctx.push_vscope in - let (gs, ctx) = gs |> mapm lower_generic ctx in - let (ps, ctx) = ps |> mapm lower_param ctx in - let (t, ctx) = lower_type_or_fresh t ctx in - let ((ss0, v), ctx) = lower_block b ctx in - let (ss1, ctx) = ctx |> Ctx.pop_vscope in - let b = (ss1 @ ss0, v) in - let ctx = ctx |> Ctx.pop_gscope in - ctx |> Ctx.add_item xs (Hir.IDef (d, gs, ps, t, b)) - | Ast.ITask (_, _, _, _, _, None) -> ctx - | Ast.ITask (d, x, gs, ps0, ps1, Some b) -> - let x = Ast.def_name x in - let xs = x::ctx.path in - let ctx = ctx |> Ctx.push_gscope in - let ctx = ctx |> Ctx.push_vscope in - let (gs, ctx) = gs |> mapm lower_generic ctx in - let (ps0, ctx) = ps0 |> mapm lower_param ctx in - let (ps1, ctx) = ps1 |> mapm lower_param ctx in - - let ((ss0, v), ctx) = lower_block b ctx in - - let (ss1, ctx) = ctx |> Ctx.pop_vscope in - let ctx = ctx |> Ctx.pop_gscope in - let b = (ss1 @ ss0, v) in - ctx |> Ctx.add_item xs (Hir.ITask (d, gs, ps0, ps1, b)) - | Ast.ITypeAlias _ -> - todo () - | Ast.IMod (_, x, is) -> - let (_, ctx) = ctx |> Ctx.push_namespace x in - let ctx = is |> List.fold_left (fun ctx i -> lower_item i ctx) ctx in - let ctx = ctx |> Ctx.pop_namespace in - ctx - | Ast.IUse _ -> ctx - -and lower_decl _xs _ctx (_d:Ast.decl) = - todo () - -and lower_def _xs _ctx (_d:Ast.def) = - todo () - -and lower_variant xs (x, ts) (ctx:Ctx.t) = - let xs = x::xs |> List.rev in - let (t, ctx) = match ts with - | [] -> (unit_type, ctx) - | [t] -> lower_type t ctx - | ts -> - let (ts, ctx) = ts |> mapm lower_type ctx in - let fts = ts |> Hir.indexes_to_fields in - let t = fts |> fields_to_rows Hir.TRowEmpty in - (Hir.TRecord t, ctx) - in - (xs, ctx |> Ctx.add_item xs (Hir.IVariant t)) - -and lower_generic x (ctx:Ctx.t) = - let (x, ctx) = ctx |> Ctx.bind_gname x in - (x, ctx) - -and lower_param (p, t) (ctx:Ctx.t) = - let (x', ctx) = ctx |> Ctx.fresh_x in - let (t, ctx) = lower_type_or_fresh t ctx in - let ctx = match p with - | Ast.PVar x -> ctx |> Ctx.rename_vname x (x', MVal) - | _ -> lower_irrefutable_pat p t x' ctx - in - ((x', t), ctx) - -and lower_arg_expr (e:Ast.expr) ctx = - let ctx = ctx |> Ctx.push_ascope in - let ctx = ctx |> Ctx.push_vscope in - let (v, ctx) = lower_expr e ctx in - let (ss, ctx) = ctx |> Ctx.pop_vscope in - let (vs, ctx) = ctx |> Ctx.pop_ascope in - match vs with - | [] -> - let ctx = ctx |> Ctx.add_stmts (ss |> List.rev) in - (v, ctx) - | vs -> - let (ps, ctx) = vs |> mapm (fun v ctx -> - let (t, ctx) = ctx |> Ctx.fresh_t in - ((v, t), ctx) - ) ctx in - let (xs, ctx) = ctx |> Ctx.fresh_f in - let (t, ctx) = ctx |> Ctx.fresh_t in - let b = (ss, v) in - let i = Hir.IDef ([], [], ps, t, b) in - let ctx = ctx |> Ctx.add_item xs i in - ctx |> Ctx.add_expr (Hir.EItem (xs, [])) - - -and lower_call e es ctx = - let lower_call e (es:Ast.expr list) ctx = - let (v, ctx) = lower_expr e ctx in - let (vs, ctx) = es |> mapm lower_arg_expr ctx in - ctx |> Ctx.add_expr (Hir.ECall (v, vs)) - in - match e with - | Ast.EPath (xs, ts) -> - let resolve_call_path xs ctx = - begin match ctx |> Ctx.resolve_path xs with - | (xs, DVariant n) -> - let (ts, ctx) = match List.length ts with - | m when m = n -> ts |> mapm lower_type ctx - | m when m = 0 -> ctx |> Ctx.fresh_ts n - | m -> panic (Printf.sprintf "Variant path \"%s\" has wrong number of type arguments, expected %d but found %d" (Pretty.path_to_str xs) n m) - in - let (v, ctx) = - match es with - | [] -> - ctx |> Ctx.add_expr (Hir.ELit (Ast.LUnit)) - | [e] -> - lower_expr e ctx - | es -> - let (vs, ctx) = es |> mapm lower_expr ctx in - let fs = vs |> Hir.indexes_to_fields in - ctx |> Ctx.add_expr (Hir.ERecord fs) - in - ctx |> Ctx.add_expr (Hir.EEnwrap (xs, ts, v)) - | _ -> lower_call e es ctx - end - in - begin match xs with - | [x] when ts = [] -> - begin match ctx |> Ctx.find_vname x with - | Some (_, Ctx.MVal) -> lower_call e es ctx - | Some (v, Ctx.MVar) -> Ctx.get_cell v ctx - | None -> ctx |> resolve_call_path xs - end - | _ -> ctx |> resolve_call_path xs - end - | _ -> lower_call e es ctx - -and lower_expr_opt e (ctx:Ctx.t) = - match e with - | Some e -> lower_expr e ctx - | None -> ctx |> Ctx.add_expr (Hir.ELit Ast.LUnit) - -and lower_mut e0 e1 ctx = - let (v1, ctx) = lower_expr e1 ctx in - match e0 with - | Ast.EPath ([x], []) -> - begin match ctx |> Ctx.find_vname x with - | Some (v0, Ctx.MVar) -> ctx |> Ctx.set_cell v0 v1 - | Some (_, Ctx.MVal) -> panic "L-value is a value" - | None -> panic "Variable not bound" - end - | Ast.ESelect (e00, e01) -> - let (v00, ctx) = lower_expr e00 ctx in - let (v01, ctx) = lower_expr e01 ctx in - ctx |> Ctx.replace_array v00 v01 v1 - | Ast.EProject (e00, i) -> - let (v00, ctx) = lower_expr e00 ctx in - ctx |> Ctx.add_expr (Hir.EUpdate (v00, index_to_field i, v1)) - | Ast.EAccess (e00, x) -> - let (v00, ctx) = lower_expr e00 ctx in - ctx |> Ctx.add_expr (Hir.EUpdate (v00, x, v1)) - | _ -> panic "Expected variable, found path" - - -and lower_expr expr ctx = - match expr with - | Ast.EAnon -> - ctx |> Ctx.add_anon - | Ast.EBinOpRef op -> - let x = Ast.binop_name op in - ctx |> Ctx.add_expr (Hir.EItem ([x], [])) - | Ast.EAccess (e, x) -> - let (v, ctx) = lower_expr e ctx in - ctx |> Ctx.add_expr (Hir.EAccess (v, x)) - | Ast.EArray (es, e) -> - let (vs, ctx) = es |> mapm lower_expr ctx in - let (v0, ctx) = ctx |> Ctx.make_array vs in - begin match e with - | None -> - (v0, ctx) - | Some e -> - let (v1, ctx) = lower_expr e ctx in - ctx |> Ctx.append_array v0 v1 - end - | Ast.EBinOp (Ast.BMut, e0, e1) -> - lower_mut e0 e1 ctx - | Ast.EBinOp (Ast.BNotIn, e0, e1) -> - lower_expr (Ast.EUnOp (Ast.UNot, (Ast.EBinOp (Ast.BIn, e0, e1)))) ctx - | Ast.EBinOp (Ast.BNeq s, e0, e1) -> - lower_expr (Ast.EUnOp (Ast.UNot, (Ast.EBinOp (Ast.BEq s, e0, e1)))) ctx - | Ast.EBinOp (op, e0, e1) -> - let (v0, ctx) = lower_binop op ctx in - let (v1, ctx) = lower_expr e0 ctx in - let (v2, ctx) = lower_expr e1 ctx in - ctx |> Ctx.add_expr (Hir.ECall (v0, [v1; v2])) - | Ast.ECall (e, es) -> - lower_call e es ctx - | Ast.EInvoke (e, x, es) -> - let (v0, ctx) = lower_expr e ctx in - let (v1, ctx) = Ctx.resolve_expr_path [x] [] ctx in - let (vs, ctx) = es |> mapm lower_expr ctx in - ctx |> Ctx.add_expr (Hir.ECall (v1, v0::vs)) - | Ast.ECast (e, t) -> - let (v, ctx) = lower_expr e ctx in - let (t, ctx) = lower_type t ctx in - ctx |> Ctx.add_expr (Hir.ECast (v, t)) - | Ast.EIf (e, b0, b1) -> - let (v, ctx) = lower_expr e ctx in - let (b0, ctx) = lower_block b0 ctx in - let (b1, ctx) = lower_block_opt b1 ctx in - ctx |> Ctx.add_expr (Hir.EIf (v, b0, b1)) - | Ast.ELit l -> - lower_lit l ctx - | Ast.ELoop b -> - let (b, ctx) = lower_block b ctx in - ctx |> Ctx.add_expr (Hir.ELoop b) - | Ast.ESelect (e0, e1) -> - let (v0, ctx) = lower_expr e0 ctx in - let (v1, ctx) = lower_expr e1 ctx in - ctx |> Ctx.get_array v0 v1 - | Ast.ERecord (fs, _) -> - let (fs, ctx) = fs |> mapm lower_field_expr ctx in - ctx |> Ctx.add_expr (Hir.ERecord fs) - | Ast.EUnOp (op, e) -> - let (v0, ctx) = lower_unop op ctx in - let (v1, ctx) = lower_expr e ctx in - ctx |> Ctx.add_expr (Hir.ECall (v0, [v1])) - | Ast.EReturn e -> - let (v, ctx) = lower_expr_opt e ctx in - ctx |> Ctx.add_expr (Hir.EReturn v) - | Ast.EBreak e -> - let (v, ctx) = lower_expr_opt e ctx in - ctx |> Ctx.add_expr (Hir.EBreak v) - | Ast.EContinue -> - ctx |> Ctx.add_expr Hir.EContinue - (* Desugared expressions *) - | Ast.ETuple es -> - let (vs, ctx) = es |> mapm lower_expr ctx in - let fs = vs |> Hir.indexes_to_fields in - ctx |> Ctx.add_expr (Hir.ERecord fs) - | Ast.EProject (e, i) -> - let (v, ctx) = lower_expr e ctx in - ctx |> Ctx.add_expr (Hir.EAccess (v, Hir.index_to_field i)) - | Ast.EBlock b -> - let ((ss, v), ctx) = lower_block b ctx in - let ctx = ctx |> Ctx.add_stmts (ss |> List.rev) in - (v, ctx) - | Ast.EFunc (ps, e) -> -(* Pretty_ast.pr_expr e Pretty.Ctx.brief; *) -(* Ctx.print_scopes ctx.vstack Pretty.Ctx.brief; *) - lower_closure ps e ctx - | Ast.ETask (_ps, _b) -> - todo () -(* let (x, ctx) = ctx |> Ctx.fresh_x in *) -(* let (xs, ctx) = ctx |> Ctx.push_namespace x in *) -(* *) -(* let (ps, ctx) = ps |> mapm lower_param ctx in *) -(* let ctx = ctx |> Ctx.push_vscope in *) -(* let (v, ctx) = lower_block b ctx in *) -(* let (ss0, ctx) = ctx |> Ctx.pop_vscope in *) -(* let b = (ss0, v) in *) -(* *) -(* let ctx = ctx |> Ctx.pop_namespace in *) -(* let ctx = ctx |> Ctx.add_item xs (Hir.ITask ([], [], [], ps, b)) in *) -(* *) -(* let (v, ctx) = ctx |> Ctx.add_expr (Hir.EItem (xs, [])) in *) -(* ctx |> Ctx.add_expr (Hir.ECall (v, [])) *) - | Ast.EFor (_p, e, b) -> - let _p = todo () in - let (_v, ctx) = lower_expr e ctx in - let (_b, ctx) = lower_block b ctx in - (todo (), ctx) - | Ast.EWhile (e, b) -> - let ctx = ctx |> Ctx.push_vscope in - let (v0, ctx) = lower_expr e ctx in - (* Then-branch *) - let (b0, ctx) = lower_block b ctx in - (* Else-branch *) - let ctx = ctx |> Ctx.push_vscope in - let (v1, ctx) = ctx |> Ctx.add_expr (Hir.ELit Ast.LUnit) in - let (v1, ctx) = ctx |> Ctx.add_expr (Hir.EBreak v1) in - let (ss1, ctx) = ctx |> Ctx.pop_vscope in - let b1 = (ss1, v1) in - (* If-stmt *) - let (v2, ctx) = ctx |> Ctx.add_expr (Hir.EIf (v0, b0, b1)) in - let (ss2, ctx) = ctx |> Ctx.pop_vscope in - let b2 = (ss2, v2) in - ctx |> Ctx.add_expr (Hir.ELoop b2) - | Ast.EWhileVal _ -> - todo () - | Ast.EIfVal (p, e, b0, b1) -> - let (v, ctx) = lower_expr e ctx in - let e0 = Ast.EBlock b0 in - let e1 = match b1 with - | Some b1 -> Ast.EBlock b1 - | None -> Ast.ELit Ast.LUnit - in - let c0 = ([(v, p)], [], e0) in - let c1 = ([], [], e1) in - lower_clauses [c0; c1] ctx - | Ast.EMatch (e, arms) -> - let (v, ctx) = lower_expr e ctx in - let cs = Hir.arms_to_clauses arms v in - lower_clauses cs ctx - | Ast.EReceive e -> - let (v, ctx) = lower_expr e ctx in - ctx |> Ctx.add_expr (Hir.EReceive v) - | Ast.EEmit (e0, e1) -> - let (v0, ctx) = lower_expr e0 ctx in - let (v1, ctx) = lower_expr e1 ctx in - ctx |> Ctx.add_expr (Hir.EEmit (v0, v1)) - | Ast.EOn _ -> - todo () -(* let ctx = ctx |> Ctx.push_vscope in *) -(* let (rs, ctx) = rs |> mapm lower_receiver ctx in *) -(* let (ss, ctx) = ctx |> Ctx.pop_vscope in *) -(* let ctx = ctx |> Ctx.add_stmts (ss |> List.rev) in *) -(* (v2, ctx) *) - | Ast.EPath (xs, ts) -> - let (ts, ctx) = ts |> mapm lower_type ctx in - ctx |> Ctx.resolve_expr_path xs ts - | Ast.ECompr _ -> - todo () - | Ast.EFrom _ -> - todo () - -and lower_receiver (p, e0, e1) ctx = - let (v0, ctx) = lower_expr e0 ctx in - let ctx = ctx |> Ctx.push_vscope in - let (t, ctx) = ctx |> Ctx.fresh_t in - let ctx = lower_irrefutable_pat p t v0 ctx in - let (v1, ctx) = lower_expr e1 ctx in - let (ss, ctx) = ctx |> Ctx.pop_vscope in - (v0, (ss, v1), ctx) - -and lower_unop op ctx = - let x = Ast.unop_name op in - ctx |> Ctx.add_expr (Hir.EItem ([x], [])) - -and lower_compr_clauses cs e0 ctx = - match cs with - | c::cs -> - begin match c with - | Ast.CFor (p, e1) -> - let ctx = ctx |> Ctx.push_vscope in - let (x, ctx) = lower_expr e1 ctx in - let (t, ctx) = ctx |> Ctx.fresh_t in - let ctx = lower_irrefutable_pat p t x ctx in - let ((ss0, v), ctx) = lower_compr_clauses cs e0 ctx in - let (ss1, ctx) = ctx |> Ctx.pop_vscope in - let ss = ss0 @ ss1 in - ((ss, v), ctx) - | Ast.CIf e1 -> - let (v, ctx) = lower_expr e1 ctx in - let ctx = ctx |> Ctx.push_vscope in - let ((ss0, v0), ctx) = lower_compr_clauses cs e0 ctx in - let (ss1, ctx) = ctx |> Ctx.pop_vscope in - let b0 = (ss0 @ ss1, v0) in - let (b1, ctx) = lower_block_opt None ctx in - let (v, ctx) = ctx |> Ctx.add_expr (Hir.EIf (v, b0, b1)) in - (([], v), ctx) - end - | [] -> - let (v, ctx) = lower_expr e0 ctx in - (([], v), ctx) - -and lower_field_expr (x, e) (ctx:Ctx.t) = - match e with - | Some e -> - let (v, ctx) = lower_expr e ctx in - ((x, v), ctx) - | None -> - match ctx |> Ctx.find_vname x with - | Some (v, MVal) -> ((x, v), ctx) - | Some (v, MVar) -> - let (v, ctx) = Ctx.get_cell v ctx in - ((x, v), ctx) - | None -> panic "Name not found" - -and lower_field_type (x, t) (ctx:Ctx.t) = - match t with - | Some t -> - let (t, ctx) = lower_type t ctx in - ((x, t), ctx) - | None -> - let (t, ctx) = ctx |> Ctx.fresh_t in - ((x, t), ctx) - -and lower_type_or_fresh t (ctx:Ctx.t) = - match t with - | Some t -> lower_type t ctx - | None -> ctx |> Ctx.fresh_t - -and unit_type = Hir.TNominal (["unit"], []) - -and lower_type_or_unit t (ctx:Ctx.t) = - match t with - | Some t -> lower_type t ctx - | None -> (unit_type, ctx) - -and lower_type t (ctx:Ctx.t) = - match t with - | Ast.TFunc (ts, t) -> - let (ts, ctx) = ts |> mapm lower_type ctx in - let (t, ctx) = lower_type t ctx in - (Hir.TFunc (ts, t), ctx) - | Ast.TTuple ts -> - let (ts, ctx) = ts |> mapm lower_type ctx in - let fs = ts |> Hir.indexes_to_fields in - let t = fs |> fields_to_rows Hir.TRowEmpty in - (Hir.TRecord t, ctx) - | Ast.TRecord (fs, t) -> - let (fs, ctx) = fs |> mapm lower_field_type ctx in - let (t, ctx) = match t with - | Some t -> lower_type t ctx - | None -> (Hir.TRowEmpty, ctx) - in - let t = fs |> fields_to_rows t in - (Hir.TRecord t, ctx) - | Ast.TPath (xs, ts) -> - let (ts, ctx) = ts |> mapm lower_type ctx in - ctx |> Ctx.resolve_type_path xs ts - | Ast.TArray t -> - let (t, ctx) = lower_type t ctx in - (Hir.TNominal (["Array"], [t]), ctx) - -(* Lowers an irrefutable pattern matching on variable v, e.g., val p = v; *) -and lower_irrefutable_pat p t v ctx = - match p with - | Ast.PIgnore -> ctx - | Ast.POr _ -> panic "Found refutable pattern" - | Ast.PRecord (pfs, _tail) -> - pfs |> List.fold_left (fun ctx (x, p) -> - let (v, ctx) = ctx |> Ctx.add_typed_expr (Hir.EAccess (v, x)) t in - let (t, ctx) = ctx |> Ctx.fresh_t in - match p with - | Some p -> lower_irrefutable_pat p t v ctx - | None -> - let (_, ctx) = ctx |> Ctx.bind_vname x MVal in - ctx - ) ctx - | Ast.PTuple ps -> - let (_, ctx) = ps |> List.fold_left (fun (i, ctx) p -> - let x = Hir.index_to_field i in - let (v, ctx) = ctx |> Ctx.add_typed_expr (Hir.EAccess (v, x)) t in - let (t, ctx) = ctx |> Ctx.fresh_t in - (i+1, lower_irrefutable_pat p t v ctx) - ) (0, ctx) in - ctx - | Ast.PConst _ -> panic "Found refutable pattern" - | Ast.PVar x -> - let (_, ctx) = ctx |> Ctx.bind_vname x MVal in - ctx - | Ast.PUnwrap _ -> panic "Found refutable pattern" (* TODO: Might be irrefutable *) - -and branching_heuristic (eqs, _, _) cs = - eqs - |> List.map (fun (x, _) -> x) - |> max_by (fun x -> cs - |> List.filter (fun (eqs, _, _) -> eqs - |> List.assoc_opt x - |> Option.is_some)) - -and create_fresh_evs ctx l = - let (l, ctx) = l |> List.fold_left (fun (l, ctx) _ -> - let (x, ctx) = ctx |> Ctx.fresh_x in - (x::l, ctx) - ) ([], ctx) in - (l |> List.rev, ctx) - -and compatible fs0 fs1 = - let xs0 = fs0 |> List.map (fun (x, _) -> x) |> List.sort String.compare in - let xs1 = fs1 |> List.map (fun (x, _) -> x) |> List.sort String.compare in - List.combine xs0 xs1 |> List.for_all (fun (x0, x1) -> x0 = x1) - -and fields_to_patterns fs = - fs |> List.map (function - | (_, Some p) -> p - | (x, None) -> Ast.PVar x - ) - -(* Unfold field accesses in the current block *) -and simplify_record (eqs, substs, ctx) v fs = - fs |> List.fold_left (fun (eqs, substs, ctx) (x, p) -> - match p with - | Some p -> - let (v, ctx) = ctx |> Ctx.add_expr (Hir.EAccess (v, x)) in - simplify_eq (eqs, substs, ctx) (v, p) - | None -> - let (v, ctx) = ctx |> Ctx.add_expr (Hir.EAccess (v, x)) in - simplify_eq (eqs, substs, ctx) (v, Ast.PVar x) - ) (eqs, substs, ctx) - -and simplify_tuple (eqs, substs, ctx) v ps = - let fs = ps |> List.map (fun p -> Some p) |> Hir.indexes_to_fields in - simplify_eq (eqs, substs, ctx) (v, Ast.PRecord (fs, None)) - -(* and simplify_or (eqs, substs, ctx) cs p0 p1 = *) -(* let (v0, ctx) = ctx |> Ctx.fresh_x in *) -(* let (v1, ctx) = ctx |> Ctx.fresh_x in *) -(* let eqs0 = (v0, p0)::eqs in *) -(* let eqs1 = (v1, p1)::eqs in *) -(* let cs = (eqs0, substs, e)::(eqs1, substs, e)::(cs |> List.tl) in *) -(* lower_clauses cs ctx *) - -(* Simplifies an equation such that it only contains refutable patterns. *) -and simplify_eq ((eqs, substs, ctx) as acc) (v, p) = - match p with - | Ast.PVar x -> (eqs, (x, v)::substs, ctx) (* Substitute *) - | Ast.PIgnore -> acc (* Ignore completely *) - | Ast.PRecord (fs, _tail) -> simplify_record acc v fs - | Ast.PTuple ps -> simplify_tuple acc v ps - | Ast.POr (_p0, _p1) -> todo () - (* Refutable patterns are not simplified *) - | Ast.PConst _ | Ast.PUnwrap _ -> ((v, p)::eqs, substs, ctx) - -and simplify_clause (eqs, substs, e) ctx = - let (eqs', substs', ctx) = eqs |> List.fold_left simplify_eq ([], [], ctx) in - let eqs' = eqs' |> List.rev in - let substs' = substs' |> List.rev |> List.append substs in - ((eqs', substs', e), ctx) - -and simplify_clauses cs ctx = - cs |> mapm simplify_clause ctx - -(* Returns true if xs0 and xs1 are variants of the same enum *) -and same_enum xs0 xs1 = - match xs0, xs1 with - | [_], [_] -> true - | h0::t0, h1::t1 -> - if h0 = h1 then - same_enum t0 t1 - else - false - | _ -> false - -and branch_variant branching_v xs0 cs ctx : (var * Ctx.t) = - let (xs0, decl) = ctx |> Ctx.resolve_path xs0 in - let (ts0, ctx) = fresh_variant_ts decl ctx in - (* Create fresh variable for the inner pattern *) - let (v, ctx) = ctx |> Ctx.fresh_x in - let (t, ctx) = ctx |> Ctx.fresh_t in - let ctx = cs |> List.fold_left (fun ctx ((eqs, substs, e) as c) -> - match eqs |> List.assoc_opt branching_v with - | Some Ast.PUnwrap (xs1, ps1) -> - let (xs1, _) = ctx |> Ctx.resolve_path xs1 in - if xs0 = xs1 then - (* Push clauses with equivalent pattern matches on the branching - * variable to the then-branch *) - let eqs = eqs |> List.remove_assoc branching_v in - let p = match ps1 with - | [] -> todo () - | [p] -> p - | ps -> Ast.PTuple ps - in - let eqs = (v, p)::eqs in - ctx |> Ctx.add_then_clause (eqs, substs, e) - else - if same_enum xs0 xs1 then - (* Push clauses with other pattern matches on the branching - * variable to the else-branch *) - ctx |> Ctx.add_else_clause c - else - panic "Branching on different enums" - | None -> - (* Clauses which do not match on the branching variable are be - * pushed to both branches *) - ctx |> Ctx.add_then_clause c - |> Ctx.add_else_clause c - | _ -> panic "Branching on different patterns" - ) ctx in - let (then_cs, else_cs, ctx) = ctx |> Ctx.take_clauses in - - (* Create then-branch *) - let ctx = ctx |> Ctx.push_vscope in - let (then_v, ctx) = lower_clauses then_cs ctx in - let (then_ss, ctx) = ctx |> Ctx.pop_vscope in - let then_b = ((v, t, EUnwrap (xs0, ts0, branching_v))::then_ss, then_v) in - - (* Create else-branch *) - let ctx = ctx |> Ctx.push_vscope in - let (else_v, ctx) = lower_clauses else_cs ctx in - let (else_ss, ctx) = ctx |> Ctx.pop_vscope in - let else_b = (else_ss, else_v) in - - let (v, ctx) = ctx |> Ctx.add_expr (Hir.EIs (xs0, ts0, branching_v)) in - let (v, ctx) = ctx |> Ctx.add_expr (Hir.EIf (v, then_b, else_b)) in - (v, ctx) - -and fresh_variant_ts decl ctx = - match decl with - | Table.DVariant n -> Ctx.fresh_ts n ctx - | _ -> unreachable () - -(* Branch clauses on a head clause c *) -and branch_clauses ((eqs, _, _) as c) cs ctx = - (* Get the variable in the first clause which occurs in the most equations *) - let branching_v = branching_heuristic c cs in - (* Find the pattern *) - match eqs |> List.assoc branching_v with - (* Irrefutable top-level patterns are eliminated earlier through simplify_clauses *) - | Ast.PVar _ | Ast.PIgnore | Ast.PRecord _ | Ast.PTuple _ | Ast.POr _ -> unreachable () - | Ast.PConst _l -> todo () - | Ast.PUnwrap (xs, _) -> branch_variant branching_v xs cs ctx - -and lower_clauses cs ctx : (var * Ctx.t) = - if cs = [] then panic "Non-exhaustive match"; - let (cs, ctx) = simplify_clauses cs ctx in - (* First clause has precedence over others *) - let (eqs, substs, e) as c = cs |> List.hd in - if eqs = [] then - (* This pattern equation is now solved *) - let ctx = substs |> List.fold_left (fun ctx (x, v) -> ctx |> Ctx.rename_vname x (v, MVal)) ctx in - (* TODO: Duplication leads to duplicated lowerings, we might need sharing. *) - lower_expr e ctx - else - branch_clauses c cs ctx - -and lower_stmt s (ctx:Ctx.t) = - match s with - | Ast.SNoop -> ctx - | Ast.SVal ((p, t), e) -> - let (v, ctx) = lower_expr e ctx in - let (t, ctx) = lower_type_or_fresh t ctx in - (* One of the few places where we need to type-annotate *) - let ctx = ctx |> Ctx.annotate v t in - begin match p with - | Ast.PVar x -> ctx |> Ctx.rename_vname x (v, MVal) - | _ -> lower_irrefutable_pat p t v ctx - end - | Ast.SVar ((x, t), e) -> - let (v, ctx) = lower_expr e ctx in - let (t, ctx) = lower_type_or_fresh t ctx in - let (v, ctx) = ctx |> Ctx.new_cell v t in - ctx |> Ctx.rename_vname x (v, MVar) - | Ast.SExpr e -> - let (_, ctx) = lower_expr e ctx in - ctx - -and lower_block_opt b (ctx:Ctx.t) = - match b with - | Some b -> - lower_block b ctx - | None -> - ctx |> Ctx.empty_block - -and lower_block (ss, e) (ctx:Ctx.t) = - let ctx = ctx |> Ctx.push_vscope in - let ctx = ss |> List.fold_left (fun ctx s -> lower_stmt s ctx) ctx in - let (v, ctx) = lower_expr_opt e ctx in - let (ss, ctx) = ctx |> Ctx.pop_vscope in - ((ss, v), ctx) - -and lower_binop op (ctx:Ctx.t) = - let x = Ast.binop_name op in - ctx |> Ctx.add_expr (Hir.EItem ([x], [])) - -and splice_regex = (Str.regexp "\\${[^}]+}\\|\\$[a-zA-Z_][a-zA-Z0-9_]*") - -and str_to_string s ctx = - let (v0, ctx) = ctx |> Ctx.add_expr (Hir.ELit (Ast.LString s)) in - let (v1, ctx) = ctx |> Ctx.add_expr (Hir.EItem (["from_str"], [])) in - let (v, ctx) = ctx |> Ctx.add_expr (Hir.ECall (v1, [v0])) in - (v, ctx) - -and lower_lit l (ctx:Ctx.t) = - match l with - (* Lower interpolated string literals *) - | Ast.LString s -> - let (vs, ctx) = s |> Str.full_split splice_regex - |> mapm (fun s ctx -> - match s with - | Str.Text s -> - str_to_string s ctx - | Str.Delim s -> - let s = String.sub s 1 ((String.length s) - 1) in - let e = Parser.expr Lexer.main (Lexing.from_string s) in - let ctx = ctx |> Ctx.push_vscope in - let (v0, ctx) = lower_expr e ctx in - let (ss, ctx) = ctx |> Ctx.pop_vscope in - let ctx = ctx |> Ctx.add_stmts ss in - let (v1, ctx) = ctx |> Ctx.add_expr (Hir.EItem (["to_string"], [])) in - ctx |> Ctx.add_expr (Hir.ECall (v1, [v0])) - ) ctx in - begin match vs with - | v::vs -> - vs |> List.fold_left (fun (v1, ctx) v2 -> - let (v0, ctx) = ctx |> Ctx.add_expr (Hir.EItem (["concat"], [])) in - ctx |> Ctx.add_expr (Hir.ECall (v0, [v1; v2])) - ) (v, ctx) - | [] -> str_to_string s ctx - end - | _ -> ctx |> Ctx.add_expr (Hir.ELit l) - -and lower_closure ps e (ctx:Ctx.t) = - - (* Compile the block body *) - let ctx = ctx |> Ctx.push_vscope in - let (ps, ctx) = ps |> mapm lower_param ctx in - let ((ss0, v0), ctx) = lower_block e ctx in - let (ss1, ctx) = ctx |> Ctx.pop_vscope in - - let fvs = Hir.free_vars ps (ss0, v0) |> Hir.indexes_to_fields in - - (* Create an extra function parameter for the environment *) - let (v, ctx) = ctx |> Ctx.fresh_x in - let (t, ctx) = ctx |> Ctx.fresh_t in - let p = (v, t) in - let ps = ps @ [p] in - - (* Create code for unpacking the closure record and its into parameters inside the function *) - let (ss2, ctx) = lambda_unpack v fvs ctx in - let b1 = (ss2 @ ss1 @ ss0, v0) in - - (* Create the function *) - let (xs, ctx) = ctx |> Ctx.fresh_f in - let (t, ctx) = ctx |> Ctx.fresh_t in - let ctx = ctx |> Ctx.add_item xs (Hir.IDef ([], [], ps, t, b1)) in - - (* Create the function pointer *) - let (v, ctx) = ctx |> Ctx.add_expr (Hir.EItem (xs, [])) in - - (* Create code for packing the function-pointer + free variables into a record outside the function *) - lambda_pack v fvs ctx - -(* Call a closure by getting the function pointer and passing in the record as an extra parameter *) -and lambda_call v0 vs ctx = - let (v1, ctx) = ctx |> Ctx.add_expr (Hir.EAccess (v0, "f")) in - let (v2, ctx) = ctx |> Ctx.add_expr (Hir.EAccess (v0, "r")) in - let (v3, ctx) = ctx |> Ctx.add_expr (Hir.ECall (v1, vs @ [v2])) in - (v3, ctx) - -(* Lift a closure into a top-level function. *) -(* Need to lift all variables inside the closure which are defined outside the closure *) -and lambda_pack v0 fvs ctx = - let (v1, ctx) = ctx |> Ctx.add_expr (Hir.ERecord fvs) in - let (v2, ctx) = ctx |> Ctx.add_expr (Hir.ERecord [("f", v0); ("r", v1)]) in - (v2, ctx) - -and lambda_unpack v0 fvs ctx = - let ctx = ctx |> Ctx.push_vscope in - let ctx = fvs |> foldl (fun ctx (x, v1) -> - ctx |> Ctx.add_named_expr (Hir.EAccess (v0, x)) v1 |> snd - ) ctx in - ctx |> Ctx.pop_vscope diff --git a/arc-lang/src/debug.ml b/arc-lang/src/debug.ml deleted file mode 100644 index 27ee29905..000000000 --- a/arc-lang/src/debug.ml +++ /dev/null @@ -1,4 +0,0 @@ -type t = - | Silent - | Brief - | Verbose diff --git a/arc-lang/src/declare.ml b/arc-lang/src/declare.ml deleted file mode 100644 index 4bf724d1c..000000000 --- a/arc-lang/src/declare.ml +++ /dev/null @@ -1,64 +0,0 @@ -open Table -open Ast -open Utils - -module Ctx = struct - type t = { - table: Table.table - } - let make = { - table = PathMap.empty - } -end - -(* [declare] takes an ast and returns a list of top-level declarations *) -let rec declare ast = - let ctx = Ctx.make in - let (ctx:Ctx.t) = declare_items ast [] ctx in - ctx.table - -(* TODO: Check for duplicate items *) -and add_decl (xs, d0) (ctx:Ctx.t) : Ctx.t = - let table = ctx.table |> PathMap.update (xs |> List.rev) (function - | Some _ -> Some d0 - | None -> Some d0) - in { table } - -and declare_items is xs ctx = - is |> List.fold_left (fun ctx i -> ctx |> declare_item i xs) ctx - -and declare_item i xs ctx = - match i with - | IVal (_, x, _, _) -> - add_decl (x::xs, DItem DGlobal) ctx - | IEnum (_, x, gs, vs) -> - let xs = x::xs in - let arity = (gs |> List.length) in - let ctx = ctx |> add_decl (xs, DItem (DEnum arity)) in - vs |> List.fold_left (fun ctx (x, _) -> ctx |> add_decl (x::xs, DItem (DVariant arity))) ctx - | IExternDef (_, d, gs, _, _) -> - let x = Ast.def_name d in - add_decl (x::xs, DItem (DExternDef (List.length gs))) ctx - | IExternType (_, x, gs) -> - add_decl (x::xs, DItem (DExternType (List.length gs))) ctx - | IDef (_, d, gs, _, _, _) -> - let x = Ast.def_name d in - add_decl (x::xs, DItem (DDef (List.length gs))) ctx - | IClass (_, x, gs, ds) -> - let ctx = ctx |> add_decl (x::xs, DItem (DClass (List.length gs))) in - ds |> foldl (fun ctx (x, gs, _, _) -> add_decl (x::xs, DItem (DDef (List.length gs))) ctx) ctx - | IInstance _ -> ctx - | ITask (_, d, gs, _, _, _) -> - let x = Ast.def_name d in - let xs = x::xs in - let arity = List.length gs in - add_decl (xs, DItem (DTask arity)) ctx - | ITypeAlias (_, x, gs, t) -> - add_decl (x::xs, DItem (DTypeAlias (List.length gs, gs, t))) ctx - | IMod (_, x, is) -> - let ctx = add_decl (x::xs, DItem DMod) ctx in - let xs = x::xs in - is |> List.fold_left (fun ctx i -> declare_item i xs ctx) ctx - | IUse (_, xs, alias) -> match alias with - | Some x -> add_decl (x::xs, DUse xs) ctx - | None -> add_decl ((List.hd xs)::xs, DUse xs) ctx diff --git a/arc-lang/src/dune b/arc-lang/src/dune deleted file mode 100644 index 129e6049f..000000000 --- a/arc-lang/src/dune +++ /dev/null @@ -1,9 +0,0 @@ -(executable - (name main) - (public_name main) - (libraries core str)) -(ocamllex lexer) -(menhir - (merge_into parser) - (modules tokens parser) - (flags --external-tokens Token)) diff --git a/arc-lang/src/gen.ml b/arc-lang/src/gen.ml deleted file mode 100644 index 99a0f6611..000000000 --- a/arc-lang/src/gen.ml +++ /dev/null @@ -1,12 +0,0 @@ -type t = { - next: int; -} - -let make () = { - next = 0; -} - -and fresh (gen:t) = - let i = gen.next in - let gen = { next = i + 1; } in - (i, gen) diff --git a/arc-lang/src/hir.ml b/arc-lang/src/hir.ml deleted file mode 100644 index dbba3b0b2..000000000 --- a/arc-lang/src/hir.ml +++ /dev/null @@ -1,224 +0,0 @@ -open Utils - -type hir = (path * item) list - -and name = string -and paths = path list -and path = name list -and params = param list -and param = name * ty -and 't fields = 't field list -and 't field = name * 't -and ssas = ssa list -and ssa = var * ty * expr -and vars = var list -and var = name -and generics = generic list -and generic = name -and block = ssas * var -and interface = path * tys -and decorator = Ast.decorator -and item = - | IVal of decorator * ty * block - | IEnum of decorator * generics * paths - | IExternDef of decorator * generics * tys * ty - | IExternType of decorator * generics - | IDef of decorator * generics * params * ty * block - | IClassDecl of decorator * path * generics * params * ty - | IInstanceDef of decorator * path * generics * params * ty * block - | IClass of decorator * generics - | IInstance of decorator * generics * path * tys - | ITask of decorator * generics * params * params * block - | ITypeAlias of decorator * generics * ty - | IVariant of ty - -and tys = ty list -and ty = - | TFunc of tys * ty - | TRecord of ty - | TRowEmpty - | TRowExtend of ty field * ty - | TNominal of path * tys - | TGeneric of name - | TVar of name - -and expr = - | EAccess of var * name - | EUpdate of var * name * var - | ECall of var * vars - | ECast of var * ty - | EEnwrap of path * tys * var - | EIf of var * block * block - | EIs of path * tys * var - | ELit of Ast.lit - | ELoop of block - | EEmit of var * var - | EReceive of var - | EOn of receivers - | ERecord of var fields - | EUnwrap of path * tys * var - | EReturn of var - | EBreak of var - | EContinue - | EItem of path * tys - -and receivers = receiver list -and receiver = var * var * block - -let nominal xs gs = TNominal (xs, gs) - -and atom x = TNominal ([x], []) - -and parent xs = xs |> rev |> tl |> rev - -(* Map types *) -let rec tmap_def f (ps, t, b) = - let ps = ps |> tmap_params f in - let t = t |> f in - let b = b |> tmap_block f in - (ps, t, b) - -and tmap_task f (ps0, ps1, b) = - let ps0 = ps0 |> tmap_params f in - let ps1 = ps1 |> tmap_params f in - let b = b |> tmap_block f in - (ps0, ps1, b) - -and tmap_interface f (xs, ts) = - let ts = ts |> map f in - (xs, ts) - -and tmap_block f (ss, v) = - let ss = ss |> map (tmap_ssa f) in - (ss, v) - -and tmap_ssa f (v, t, e) = - let t = t |> f in - let e = e |> tmap_expr f in - (v, t, e) - -and tmap_expr f e = - match e with - | EIf (v, b0, b1) -> EIf (v, b0 |> tmap_block f, b1 |> tmap_block f) - | ELoop b -> ELoop (b |> tmap_block f) - | EEnwrap (xs, ts, v) -> EEnwrap (xs, ts |> map f, v) - | EUnwrap (xs, ts, v) -> EUnwrap (xs, ts |> map f, v) - | EIs (xs, ts, v) -> EIs (xs, ts |> map f, v) - | _ -> e - -and tmap_params f ps = - ps |> map (fun (x, t) -> (x, t |> f)) - -(* Map SSAs *) -let rec smap_item f i = - match i with - | IDef (a, gs, ps, t, b) -> IDef (a, gs, ps, t, b |> smap_block f) - | ITask (a, gs, ps0, ps1, b) -> ITask (a, gs, ps0, ps1, b |> smap_block f) - | _ -> i - -and smap_def f (ps, t, b) = - let b = b |> smap_block f in - (ps, t, b) - -and smap_task f (ps, ts0, ts1, b) = - let b = b |> smap_block f in - (ps, ts0, ts1, b) - -and smap_block f (ss, v) = - let ss = ss |> map f in - (ss, v) - -and smap_expr f e = - match e with - | EIf (v, b0, b1) -> EIf (v, b0 |> smap_block f, b1 |> smap_block f) - | ELoop b -> ELoop (b |> smap_block f) - | _ -> e - -(* Conversions *) - -let index_to_field i = Printf.sprintf "_%d" i - -let indexes_to_fields is = - is |> List.fold_left (fun (l, c) v -> ((index_to_field c, v)::l, c+1)) ([], 0) - |> fst - |> List.rev - -let arms_to_clauses arms v = - arms |> List.map (fun (p, e) -> ([(v, p)], [], e)) - -(* t is the tail, which could either be a Hir.TVar or Hir.TRowEmpty *) -let fields_to_rows t fs = - fs |> List.fold_left (fun t f -> TRowExtend (f, t)) t - -(* Converts a list [v0; v1; ..; vn] into [("_0", v0); ("_1", v1); ...; ("_n", vn)] *) -let indexes_to_rows t is = - is |> indexes_to_fields |> fields_to_rows t - -(* Calculates the free variables of a block `b` parameterized by `ps` *) -and free_vars ps b = - - (* Variables which are not free *) - let vs = ps |> map (fun (v, _) -> v) in - - let is_free v scopes = not (scopes |> exists (mem v)) in - - let fv_var v (scopes, acc) = - if is_free v scopes then - (scopes, v::acc) - else - (scopes, acc) - in - - let fv_vars vs ctx = vs |> foldl (fun ctx v -> fv_var v ctx) ctx in - - let push_scope (scopes, acc) = ([]::scopes, acc) in - let pop_scope (scopes, acc) = (tl scopes, acc) in - - let def_var v (scopes, acc) = - match scopes with - | h::t -> ((v::h)::t, acc) - | _ -> unreachable () - in - - let rec fv_block (ss, v) ctx = - let ctx = ctx |> push_scope in - let ctx = ss |> foldl (fun ctx (v, _, e) -> fv_expr e (def_var v ctx)) ctx in - let ctx = ctx |> fv_var v in - let ctx = ctx |> pop_scope in - ctx - - and fv_receiver ctx (x, v, b) = - let ctx = ctx |> push_scope in - let ctx = ctx |> fv_var v in - let ctx = ctx |> def_var x in - let ctx = fv_block b ctx in - let ctx = ctx |> pop_scope in - ctx - - and fv_expr e ctx = - match e with - | EAccess (v, _) -> ctx |> fv_var v - | EUpdate (v0, _, v1) -> ctx |> fv_var v0 |> fv_var v1 - | ECall (v, vs) -> ctx |> fv_var v |> fv_vars vs - | ECast (v, _) -> ctx |> fv_var v - | EEmit (v0, v1) -> ctx |> fv_var v0 |> fv_var v1 - | EEnwrap (_, _, v) -> ctx |> fv_var v - | EIf (v, b0, b1) -> ctx |> fv_var v |> fv_block b0 |> fv_block b1 - | EIs (_, _, v) -> ctx |> fv_var v - | ELit _ -> ctx - | ELoop b -> ctx |> fv_block b - | EReceive v -> ctx |> fv_var v - | EOn rs -> rs |> foldl fv_receiver ctx - | ERecord vfs -> vfs |> foldl (fun ctx (_, v) -> ctx |> fv_var v) ctx - | EUnwrap (_, _, v) -> ctx |> fv_var v - | EReturn v -> ctx |> fv_var v - | EBreak v -> ctx |> fv_var v - | EContinue -> ctx - | EItem _ -> ctx - in - fv_block b ([vs], []) |> snd |> List.rev - -and get_item xs (hir:hir) = - match hir |> assoc_opt xs with - | Some i -> i - | None -> panic ("get_item: " ^ Pretty.path_to_str xs ^ " not found") diff --git a/arc-lang/src/hir_to_mir.ml b/arc-lang/src/hir_to_mir.ml deleted file mode 100644 index 6e1f3ad50..000000000 --- a/arc-lang/src/hir_to_mir.ml +++ /dev/null @@ -1,205 +0,0 @@ -open Utils - -module Ctx = struct - type t = { - hir: Hir.hir; - mir: Mir.mir; - substs: subst list; - } - and subst = (Mir.name * Mir.ty) list - - let rec make (hir:Hir.hir) = { hir; mir = []; substs = [] } - - and has_instance s ctx = - ctx.mir |> List.assoc_opt s |> Option.is_some - - (* Add a monomorphised instance *) - and add_instance s i ctx = - if not (ctx |> has_instance s) then - { ctx with mir = (s, i)::ctx.mir } - else - ctx - - and push_subst s ctx = - { ctx with substs = (s::ctx.substs) } - - and pop_subst ctx = - { ctx with substs = tl ctx.substs } - - and substitute g ctx = - ctx.substs |> hd |> assoc g - -end - -let rec mir_of_hir hir = - let ctx = Ctx.make hir in - let ctx = hir |> foldl lower_item ctx in - ctx.mir - -and lower_item ctx (xs, i) = - match i with - | Hir.IDef (a, [], ps, t, b) -> - let (ps, ctx) = lower_params ps ctx in - let (t, ctx) = lower_type t ctx in - let (b, ctx) = lower_block b ctx in - ctx |> Ctx.add_instance (xs, []) (Mir.IDef (a, ps, t, b)) - | Hir.ITask (a, [], ps0, ps1, b) -> - let (ps0, ctx) = lower_params ps0 ctx in - let (ps1, ctx) = lower_params ps1 ctx in - let (b, ctx) = lower_block b ctx in - ctx |> Ctx.add_instance (xs, []) (Mir.ITask (a, ps0, ps1, b)) - | Hir.IVal (a, t, b) -> - let (t, ctx) = lower_type t ctx in - let (b, ctx) = lower_block b ctx in - ctx |> Ctx.add_instance (xs, []) (Mir.IVal (a, t, b)) - | _ -> ctx - -and lower_interface (xs, ts) ctx = - let (ts, ctx) = lower_types ts ctx in - ((xs, ts), ctx) - -and lower_block (ss, v) ctx = - let (ss, ctx) = ss |> mapm lower_ssa ctx in - ((ss, v), ctx) - -and lower_ssa (v, t, e) ctx = - let (t, ctx) = lower_type t ctx in - let (e, ctx) = lower_expr e ctx in - ((v, t, e), ctx) - -and lower_expr (e:Hir.expr) (ctx:Ctx.t) = - match e with - | Hir.EAccess (v, x) -> - (Mir.EAccess (v, x), ctx) - | Hir.EUpdate (v0, x, v1) -> - (Mir.EUpdate (v0, x, v1), ctx) - | Hir.ECall (v, vs) -> - (Mir.ECall (v, vs), ctx) - | Hir.ECast (v, t) -> - let (t, ctx) = lower_type t ctx in - (Mir.ECast (v, t), ctx) - | Hir.EEmit (v0, v1) -> - (Mir.EEmit (v0, v1), ctx) - | Hir.EEnwrap (xs, ts, v) -> - let (ts, ctx) = lower_types ts ctx in - (Mir.EEnwrap (xs, ts, v), ctx) - | Hir.EIf (v, b0, b1) -> - let (b0, ctx) = lower_block b0 ctx in - let (b1, ctx) = lower_block b1 ctx in - (Mir.EIf (v, b0, b1), ctx) - | Hir.EIs (xs, ts, v) -> - let (ts, ctx) = lower_types ts ctx in - (Mir.EIs (xs, ts, v), ctx) - | Hir.ELit l -> - (Mir.ELit l, ctx) - | Hir.ELoop b -> - let (b, ctx) = lower_block b ctx in - (Mir.ELoop b, ctx) - | Hir.EReceive v -> (Mir.EReceive v, ctx) - | Hir.EOn _ -> todo () - | Hir.ERecord fvs -> (Mir.ERecord (fvs |> sort_expr_fields), ctx) - | Hir.EUnwrap (xs, ts, v) -> - let (ts, ctx) = lower_types ts ctx in - (Mir.EUnwrap (xs, ts, v), ctx) - | Hir.EReturn v -> (Mir.EReturn v, ctx) - | Hir.EBreak v -> (Mir.EBreak v, ctx) - | Hir.EContinue -> (Mir.EContinue, ctx) - | Hir.EItem (xs, ts) -> - let (ts, ctx) = lower_types ts ctx in - begin match ctx.hir |> assoc xs with - | Hir.IDef (a, gs, ps, t, b) -> - let ctx = ctx |> Ctx.push_subst (zip gs ts) in - let (ps, ctx) = lower_params ps ctx in - let (t, ctx) = lower_type t ctx in - let (b, ctx) = lower_block b ctx in - let ctx = ctx |> Ctx.add_instance (xs, ts) (Mir.IDef (a, ps, t, b)) in - let ctx = ctx |> Ctx.pop_subst in - (Mir.EItem (xs, ts), ctx) - | Hir.IExternDef (a, gs, ts1, t) -> - let ctx = ctx |> Ctx.push_subst (zip gs ts) in - let (ts1, ctx) = lower_types ts1 ctx in - let (t, ctx) = lower_type t ctx in - let ctx = ctx |> Ctx.add_instance (xs, ts) (Mir.IExternDef (a, ts1, t)) in - let ctx = ctx |> Ctx.pop_subst in - (Mir.EItem (xs, ts), ctx) - | Hir.ITask (a, gs, ps0, ps1, b) -> - let ctx = ctx |> Ctx.push_subst (zip gs ts) in - let (ps0, ctx) = lower_params ps0 ctx in - let (ps1, ctx) = lower_params ps1 ctx in - let (b, ctx) = lower_block b ctx in - let ctx = ctx |> Ctx.add_instance (xs, ts) (Mir.ITask (a, ps0, ps1, b)) in - let ctx = ctx |> Ctx.pop_subst in - (Mir.EItem (xs, ts), ctx) - | _ -> unreachable () - end - -and lower_params ps (ctx:Ctx.t) = - ps |> mapm lower_param ctx - -and lower_param ((x, t):Hir.param) (ctx:Ctx.t) = - let (t, ctx) = lower_type t ctx in - ((x, t), ctx) - -and lower_types ts (ctx:Ctx.t) = - ts |> mapm lower_type ctx - -and lower_row r ctx = - let rec lower_row r ctx acc = - match r with - | Hir.TRowExtend ((x, t), r) -> - let (t, ctx) = lower_type t ctx in - lower_row r ctx ((x, t)::acc) - | Hir.TRowEmpty -> (acc, ctx) - | Hir.TGeneric g -> - begin - match ctx |> Ctx.substitute g with - | Mir.TRecord fts -> (acc @ fts, ctx) - | _ -> unreachable () - end - | _ -> unreachable () - in - let (fts, ctx) = lower_row r ctx [] in - (fts |> List.rev |> sort_type_fields, ctx) - -and sort_expr_fields fts = - fts |> List.sort (fun (a, _) (b, _) -> String.compare a b) - -and sort_type_fields fts = - fts |> List.sort (fun (a, _) (b, _) -> String.compare a b) - -and lower_type (t:Hir.ty) (ctx:Ctx.t) : (Mir.ty * Ctx.t) = - match t with - | Hir.TFunc (ts, t) -> - let (ts, ctx) = lower_types ts ctx in - let (t, ctx) = lower_type t ctx in - (Mir.TFunc (ts, t), ctx) - | Hir.TRecord t -> - let (fts, ctx) = lower_row t ctx in - (Mir.TRecord fts, ctx) - | Hir.TRowEmpty | Hir.TRowExtend _ -> - let (fts, ctx) = lower_row t ctx in - (Mir.TRecord fts, ctx) - | Hir.TNominal (xs, ts) -> - let (ts, ctx) = lower_types ts ctx in - begin match ctx.hir |> assoc xs with - | Hir.IExternType (a, _) -> - let ctx = ctx |> Ctx.add_instance (xs, ts) (Mir.IExternType a) in - (Mir.TNominal (xs, ts), ctx) - | Hir.IEnum (a, gs, xss) -> - let ctx = ctx |> Ctx.push_subst (zip gs ts) in - let ctx = xss |> foldl (fun (ctx:Ctx.t) xs -> - match ctx.hir |> assoc xs with - | Hir.IVariant t -> - let (t, ctx) = lower_type t ctx in - ctx |> Ctx.add_instance (xs, ts) (Mir.IVariant t) - | _ -> unreachable () - ) ctx in - let ctx = ctx |> Ctx.pop_subst in - let ctx = ctx |> Ctx.add_instance (xs, ts) (Mir.IEnum (a, xss)) in - (Mir.TNominal (xs, ts), ctx) - | _ -> unreachable () - end - | Hir.TGeneric g -> - let t = ctx |> Ctx.substitute g in - (t, ctx) - | Hir.TVar _ -> panic "Tried to lower a type variable in HIR => MIR" diff --git a/arc-lang/src/infer.ml b/arc-lang/src/infer.ml deleted file mode 100644 index a3d6f3eea..000000000 --- a/arc-lang/src/infer.ml +++ /dev/null @@ -1,640 +0,0 @@ -open Utils -open Hir - -module NameSet = Set.Make(struct type t = name let compare = compare end) -module NameMap = Map.Make(struct type t = name let compare = compare end) -module PathMap = Map.Make(struct type t = path let compare = compare end) - -module Ctx = struct - type t = { - hir: Hir.hir; - schemes: scheme PathMap.t; (* Inferred type schemes of items. *) - definitions: (path * Hir.item) list; - frames: frame list; - next_type_uid: Gen.t; - next_row_uid: Gen.t; - subctx: subctx list; - instances: ty list NameMap.t; (* Fully inferred instantiations *) - debug: Debug.t; - } - (* The frame of a polymorphic item which is currently being inferred *) - and frame = { - tsubst: (name * ty) list; (* Substitutions of type variables to types *) - scopes: scope list; - insts: ty list NameMap.t; (* Partially inferred instantiations *) - } - and scope = { - vsubst: (name * ty) list; (* Substitutions of value variables to types *) - } - (* A scheme is a universally quantified type. Schemes can have both explicit - and implicit type parameters. An explicit type parameter is declared - explicitly while an implicit type parameter is inferred from the context. - Explicit type parameters allow polymorphic recursion, while implicit do not. - - fun id[T](x:T) { x } # Explicit - fun id(x) { x } # Implicit - - 1. To infer the type of a function definition, we: - 1.1. Check if we have already inferred the function type-scheme, if so we just return it. - 1.2. Otherwise, generate a fresh type variable `'a` for the function type. - 1.3. Push `'a` onto a stack of type scheme instantiations. - 1.4. Infer the type `t` of the function signature with respect to the function body. - 1.5. Unify 'a against `t`. - 1.6. Generalize `'a` into a type scheme `sc`. - 1.7. Insert `sc` into a global context of type schemes. - 1.8. Pop `'a` from the stack of type scheme instantiations. - 1.8. Return the type scheme `sc`. - - 2. When encountering a function reference, we look it up and instantiate it. - 2.1. This is needed to ensure that each function reference points to a concrete instance. - - 2. When encountering the left-hand-side of an SSA operation - 2.1. Check if the right-hand-side expression is a value (function reference) - 2.1.1. If so, lookup the type scheme and bind the variable to it - 2.1.1. Else, infer the type of the right-hand-side and bind the variable to it - - 2. When encountering an variable-operand of an SSA operation - 2.1. Check if the variable is bound to a type scheme - 2.1.1. If so, instantiate it - 2.1.2. Else, just use the type as it is - - Limitations: - * Mutual recursion => Whichever function is processed first decides what becomes polymorphic. - * Value restriction => - - Value-level variables are always monomorphised - *) - and scheme = - | SPoly of { t:ty; explicit_gs:name list; implicit_gs:name list; } - | SMono of { t:ty; explicit_gs:name list; } - - and subctx = - | CDef of ty - | CTask of ty * ty - | CLoop of ty - - let rec make hir debug = { - hir = hir; - schemes = PathMap.empty; - definitions = []; - frames = []; - next_type_uid = Gen.make (); - next_row_uid = Gen.make (); - subctx = []; - instances = NameMap.empty; - debug; - } - - and return_ty ctx = - match hd ctx.subctx with - | CDef t -> t - | _ -> panic "Tried to return outside of function" - - and break_ty ctx = - match hd ctx.subctx with - | CLoop t -> t - | _ -> panic "Tried to break outside of loop" - - and push_subctx subctx ctx = { ctx with subctx = subctx::ctx.subctx } - - and pop_subctx ctx = { ctx with subctx = tl ctx.subctx } - - and fresh_t ctx = - let (i, next_type_uid) = ctx.next_type_uid |> Gen.fresh in - let t = Hir.TVar (sprintf "a%d" i) in - let ctx = { ctx with next_type_uid } in - (t, ctx) - - and fresh_r ctx = - let (i, next_row_uid) = ctx.next_row_uid |> Gen.fresh in - let t = Hir.TVar (sprintf "a%d" i) in - let ctx = { ctx with next_row_uid } in - (t, ctx) - - and get_frame ctx = ctx.frames |> hd - and get_scope ctx = (ctx |> get_frame).scopes |> hd - and get_scopes ctx = (ctx |> get_frame).scopes - and get_tsubst ctx = (ctx |> get_frame).tsubst - and get_insts ctx = (ctx |> get_frame).insts - and get_vsubst ctx = (ctx |> get_scope).vsubst - - and update_frame u ctx = match ctx.frames with - | hd::tl -> { ctx with frames = (u hd)::tl } - | [] -> unreachable () - - and update_scope u ctx = - match ctx.frames with - | [] -> unreachable () - | f::frames -> - match f.scopes with - | [] -> unreachable () - | s::scopes -> { ctx with frames = { f with scopes = (u s)::scopes }::frames} - and update_tsubst tsubst ctx = ctx |> update_frame (fun f -> { f with tsubst }) - and update_vsubst vsubst ctx = ctx |> update_scope (fun _ -> { vsubst }) - - and bind_t x t ctx = ctx |> update_frame (fun f -> { f with tsubst = (x, t)::f.tsubst }) - and bind_v x t ctx = -(* print_endline "Binding var"; *) - ctx |> update_scope (fun s -> { vsubst = (x, t)::s.vsubst }) - - and find_t x ctx = ctx |> get_tsubst |> List.assoc_opt x - and find_v x ctx = ctx |> get_scopes |> List.find_map (fun s -> s.vsubst |> List.assoc_opt x) |> Option.get - and find_sc xs ctx = ctx.schemes |> PathMap.find xs - and has_scheme xs ctx = ctx.schemes |> PathMap.exists (fun xs' _ -> xs' = xs) - - and push_frame ctx = { ctx with frames = {tsubst = []; scopes = []; insts = NameMap.empty}::ctx.frames } |> push_scope - and pop_frame ctx = - match ctx.frames with - | hd::tl -> (hd.tsubst, hd.insts, { ctx with frames = tl }) - | _ -> unreachable () - and push_scope ctx = ctx |> update_frame (fun f -> { f with scopes = {vsubst = []}::f.scopes }) - and pop_scope ctx = ctx |> update_frame (fun f -> { f with scopes = tl f.scopes }) - - and typeof x ctx = ctx |> find_v x - - and add_inst v ts ctx = ctx |> update_frame (fun f -> { f with insts = f.insts |> NameMap.add v ts}) - and add_scheme xs sc ctx = { ctx with schemes = ctx.schemes |> PathMap.add xs sc } - and add_item xs i ctx = { ctx with definitions = (xs, i)::ctx.definitions} -end - -let debug_schemes scs = - Printf.printf "\nSchemes:\n"; - let ctx = Pretty.Ctx.brief in - scs |> PathMap.iter (fun xs sc -> - match sc with - | Ctx.SPoly {t; explicit_gs; implicit_gs } -> - Printf.printf "Poly: "; - Pretty.pr_path xs ctx; - Printf.printf " => forall"; - Printf.printf "\n explicit "; - Printf.printf "["; - Pretty.pr_sep ", " Pretty_hir.pr_name explicit_gs ctx; - Printf.printf "]"; - Printf.printf "\n implicit "; - Printf.printf "["; - Pretty.pr_sep ", " Pretty_hir.pr_name implicit_gs ctx; - Printf.printf "]"; - Printf.printf "\n . "; - Pretty_hir.pr_type t ctx; - Printf.printf "\n"; - | Ctx.SMono {t; explicit_gs } -> - Printf.printf "Mono: "; - Pretty.pr_path xs ctx; - Printf.printf " => forall "; - Printf.printf " explicit "; - Printf.printf "["; - Pretty.pr_sep ", " Pretty_hir.pr_name explicit_gs ctx; - Printf.printf "]"; - Printf.printf "\n . "; - Pretty_hir.pr_type t ctx; - Printf.printf "\n"; - ) - -let rec infer_each f l (ctx:Ctx.t) = - l |> foldl f ctx - -and ts_of_ps vs = vs |> map (fun (_, t) -> t) -and ts_of_vs vs ctx = vs |> map (fun v -> ctx |> Ctx.typeof v) -and fts_of_fvs vs ctx = vs |> map (fun (x, v) -> (x, ctx |> Ctx.typeof v)) - -and bind_params ps ctx = - ps |> foldl (fun ctx (v, t) -> ctx |> Ctx.bind_v v t) ctx - -and get_enum (ctx:Ctx.t) xs = - match ctx.hir |> assoc xs with - | Hir.IEnum (_, gs, xss) -> (gs, xss) - | _ -> unreachable () - -and get_variant (ctx:Ctx.t) xs = - match ctx.hir |> assoc xs with - | Hir.IVariant t -> t - | _ -> unreachable () - -(* Instantiate an enum_xs, unify its type parameters, and then unify it with type enum_t. *) -and instantiate_enum enum_xs enum_t ts0 (ctx:Ctx.t) = - let (gs, _) = get_enum ctx enum_xs in - let (ts1, s, ctx) = instantiate_generics gs ctx in - let ctx = ctx |> unify_ts ts0 ts1 in - let ctx = ctx |> unify enum_t (Hir.TNominal (enum_xs, ts1)) in - (s, ctx) - -(* Apply generic substitution to enum variant_xs and unify result with variant_t *) -and instantiate_variant variant_xs variant_t s (ctx:Ctx.t) = - let t = get_variant ctx variant_xs in - ctx |> unify variant_t (t |> instantiate s) - -(* Instantiate generics `gs` into fresh type variables *) -and instantiate_generics gs ctx = - let instantiate_generic g ctx = - let (t, ctx) = ctx |> Ctx.fresh_t in - ((g, t), ctx) - in - let (gts, ctx) = gs |> mapm instantiate_generic ctx in - let ts = gts |> map snd in - (ts, gts, ctx) - -(* Apply type-variable substitution to type *) -and apply s t = - let f t = apply s t in - match t with - | Hir.TFunc (ts, t) -> Hir.TFunc (map f ts, f t) - | Hir.TRecord t -> Hir.TRecord (f t) - | Hir.TRowEmpty -> Hir.TRowEmpty - | Hir.TRowExtend ((x, t), r) -> Hir.TRowExtend ((x, f t), f r) - | Hir.TNominal (xs, ts) -> Hir.TNominal (xs, map f ts) - | Hir.TGeneric x -> Hir.TGeneric x - | Hir.TVar x -> s |> get_or x t - -(* Apply generic substitutions to type *) -and instantiate s t = - let f t = instantiate s t in - match t with - | Hir.TFunc (ts, t) -> Hir.TFunc (map f ts, f t) - | Hir.TRecord t -> Hir.TRecord (f t) - | Hir.TRowEmpty -> Hir.TRowEmpty - | Hir.TRowExtend ((x, t), r) -> Hir.TRowExtend ((x, f t), f r) - | Hir.TNominal (xs, ts) -> Hir.TNominal (xs, map f ts) - | Hir.TGeneric x -> s |> assoc x - | Hir.TVar x -> Hir.TVar x - -(* Generalise a type into a type scheme *) -and generalise s t = - let f t = generalise s t in - match t with - | Hir.TFunc (ts, t) -> Hir.TFunc (map f ts, f t) - | Hir.TRecord t -> Hir.TRecord (f t) - | Hir.TRowEmpty -> Hir.TRowEmpty - | Hir.TRowExtend ((x, t), r) -> Hir.TRowExtend ((x, f t), f r) - | Hir.TNominal (xs, ts) -> Hir.TNominal (xs, map f ts) - | Hir.TGeneric x -> Hir.TGeneric x - | Hir.TVar x -> Hir.TGeneric (s |> assoc x) - -(* Unifies two types *) -and unify t0 t1 (ctx:Ctx.t) = - if ctx.debug = Verbose then - begin - let ctx = Pretty.Ctx.brief in - Printf.printf "Unifying: "; - Pretty_hir.pr_type t0 ctx; - Printf.printf " = "; - Pretty_hir.pr_type t1 ctx; - Printf.printf " \n"; - end; - let s0 = ctx |> Ctx.get_tsubst in - let (s1, ctx) = ctx |> mgu (apply s0 t0) (apply s0 t1) in -(* Debug.debug_substitutions s1; *) - let ctx = ctx |> Ctx.update_tsubst (compose s1 s0) in - ctx - -and unify_ts ts0 ts1 (ctx:Ctx.t) = - if ts0 <> [] && ts1 <> [] then - zip ts0 ts1 |> foldl (fun ctx (t0, t1) -> unify t0 t1 ctx) ctx - else - ctx - -and compose s0 s1 = - (s1 |> map (fun (x, t) -> (x, apply s0 t))) @ s0 - -(* Returns a list of type variables occuring in a type *) -and tvs t = - (* Returns the type variables occuring in t *) - let rec tvs_of_t t acc = - match t with - | Hir.TFunc (ts, t) -> acc |> tvs_of_ts ts |> tvs_of_t t - | Hir.TRecord t -> acc |> tvs_of_t t - | Hir.TRowEmpty -> NameSet.empty - | Hir.TRowExtend ((_, t), _) -> acc |> tvs_of_t t - | Hir.TNominal (_, ts) -> acc |> tvs_of_ts ts - | Hir.TGeneric _ -> NameSet.empty - | Hir.TVar x -> acc |> NameSet.add x - and tvs_of_ts ts acc = ts |> foldl (fun acc t -> (tvs_of_t t acc)) acc in - tvs_of_t t NameSet.empty |> NameSet.elements - -and mgus ts0 ts1 s (ctx:Ctx.t) = -(* Printf.printf "\n["; *) -(* Pretty_hir.pr_types ts0 Pretty.Ctx.brief; *) -(* Printf.printf "] == ["; *) -(* Pretty_hir.pr_types ts1 Pretty.Ctx.brief; *) -(* Printf.printf "]\n"; *) - if ts0 <> [] && ts1 <> [] then - zip ts0 ts1 |> foldl (fun (s0, ctx) (t0, t1) -> - let (s1, ctx) = ctx |> mgu (apply s0 t0) (apply s0 t1) in - (compose s1 s0, ctx) - ) (s, ctx) - else - (s, ctx) - -and mgu t0 t1 ctx : ((Hir.name * Hir.ty) list * Ctx.t) = - match t0, t1 with - | Hir.TFunc (ts0, t0), Hir.TFunc (ts1, t1) -> - ctx |> mgus (t0::ts0) (t1::ts1) [] - | Hir.TRecord t0, Hir.TRecord t1 -> - ctx |> mgu t0 t1 - | Hir.TRowEmpty, Hir.TRowEmpty -> - ([], ctx) - | Hir.TRowExtend ((x0, t0), r0), (Hir.TRowExtend _ as r1) -> - let (t1, r1, s, ctx) = ctx |> rewrite_row x0 r1 in - ctx |> mgus [t0; r0] [t1; r1] s - | Hir.TNominal (xs0, ts0), Hir.TNominal (xs1, ts1) when xs0 = xs1 -> - ctx |> mgus ts0 ts1 [] - | Hir.TGeneric x0, Hir.TGeneric x1 when x0 = x1 -> - ([], ctx) - | Hir.TVar x, t | t, Hir.TVar x -> - if t = Hir.TVar x then - ([], ctx) - else if mem x (tvs t) then - panic "Occurs check failure" - else - ([(x, t)], ctx) - | _ -> - let pr_ctx = Pretty.Ctx.brief in - Printf.printf "Oops... "; - Pretty_hir.pr_type t0 pr_ctx; - Printf.printf " != "; - Pretty_hir.pr_type t1 pr_ctx; - Printf.printf " \n"; - Pretty_hir.pr_hir ctx.hir ctx.debug; - panic "Types do not unify" - -and rewrite_row x0 r0 (ctx:Ctx.t) = - match r0 with - | Hir.TRowEmpty -> - (* We've reached the end of the record, and it's already bound, so the new label cannot be inserted. *) - panic (Printf.sprintf "label %s cannot be inserted" x0) - | Hir.TRowExtend ((x1, t1), r1) when x0 = x1 -> - (* We've found the label, so propagate it upwards *) - (t1, r1, [], ctx) - | Hir.TVar _ as r1 -> - (* We've reached the end of the record, and it's not bound, so extend it and return the new tail *) - let (t2, ctx) = ctx |> Ctx.fresh_t in - let (r2, ctx) = ctx |> Ctx.fresh_r in - let (s, ctx) = ctx |> mgu r1 (Hir.TRowExtend ((x0, t2), r2)) in - (t2, r2, s, ctx) - | Hir.TRowExtend ((x1, t1), r1) -> - (* Otherwise, rewrite the tail *) - let (t2, r2, s, ctx) = ctx |> rewrite_row x0 r1 in - (t2, Hir.TRowExtend ((x1, t1), r2), s, ctx) - | _ -> - panic "Unexpected type" - -let rec infer_hir hir debug = - let (ctx:Ctx.t) = Ctx.make hir debug in - let ctx = hir |> foldl infer_item ctx in - let hir = ctx.definitions |> map (fun (xs, i) -> (xs, Hir.smap_item (inst_ssa ctx.instances) i)) in - hir |> rev - -and inst_ssa s (v, t, e) = - match e with - | Hir.EItem (xs, _) -> - let ts = s |> NameMap.find v in - (v, t, Hir.EItem (xs, ts)) - | _ -> (v, t, Hir.smap_expr (inst_ssa s) e) - -and infer_block (ss, v) (ctx:Ctx.t) = - let ctx = ctx |> Ctx.push_scope in - let ctx = ss |> foldl infer_ssa ctx in - let t = ctx |> Ctx.typeof v in - let ctx = ctx |> Ctx.pop_scope in - (t, ctx) - -and implicit_generics t = - let tvs = tvs t in - let (implicit_gs, _) = tvs |> foldl (fun (gs, i) _ -> ((sprintf "G%d" i)::gs, i+1)) ([], 0) in - let s = zip tvs implicit_gs in - (implicit_gs, s) - -and infer_item (ctx:Ctx.t) (xs, i) : Ctx.t = - if ctx |> Ctx.has_scheme xs then - ctx - else - match i with - | Hir.IClass _ -> todo () - | Hir.IInstance _ -> todo () - | Hir.IClassDecl _ -> todo () - | Hir.IInstanceDef _ -> todo () - | Hir.IVal (_, t0, b) -> - let (t1, ctx) = infer_block b ctx in - let _ctx = ctx |> unify t0 t1 in - todo () - | Hir.IDef (a, explicit_gs, ps, t0, b) -> - let ctx = ctx |> Ctx.push_frame in - let ctx = ctx |> Ctx.push_subctx (Ctx.CDef t0) in - - (* Infer MGU of the function *) - let ctx = ctx |> bind_params ps in - let (t1, ctx) = ctx |> infer_block b in - let ctx = ctx |> unify t0 t1 in - - let ctx = ctx |> Ctx.pop_subctx in - let (s, insts, ctx) = ctx |> Ctx.pop_frame in - - (* Store instances in global context *) - let insts = insts |> NameMap.map (map (apply s)) in - let ctx = { ctx with instances = ctx.instances |> NameMap.add_seq (NameMap.to_seq insts) } in - - (* Apply MGU to all types in the function *) - let (ps, t0, b) = tmap_def (apply s) (ps, t0, b) in - - (* Create the function type *) - let t = Hir.TFunc (ps |> ts_of_ps, t0) in - - (* Get the implicit generics *) - let (implicit_gs, s) = implicit_generics t in - - (* Replace all type variables with generics *) - let t = t |> generalise s in - let (ps, t0, b) = tmap_def (generalise s) (ps, t0, b) in - - (* Store the type scheme / generic item *) - let sc = Ctx.SPoly { t; explicit_gs; implicit_gs } in - let ctx = ctx |> Ctx.add_item xs (Hir.IDef (a, explicit_gs @ implicit_gs, ps, t0, b)) in - let ctx = ctx |> Ctx.add_scheme xs sc in - - ctx - | Hir.ITask (d, explicit_gs, ps0, ps1, b) -> - let ctx = ctx |> Ctx.push_frame in - - (* Infer MGU of the function *) - let ctx = ctx |> bind_params (ps0 @ ps1) in - let (t2, ctx) = infer_block b ctx in - let ctx = ctx |> unify (atom "unit") t2 in - - let ctx = ctx |> Ctx.pop_subctx in - let (s, insts, ctx) = ctx |> Ctx.pop_frame in - - (* Store instances in global context *) - let insts = insts |> NameMap.map (map (apply s)) in - let ctx = { ctx with instances = ctx.instances |> NameMap.add_seq (NameMap.to_seq insts) } in - - (* Apply MGU to all types in the function *) - let (ps0, ps1, b) = tmap_task (apply s) (ps0, ps1, b) in - - (* Create the task type *) - let t = match ps1 with - | [(_, t)] -> - Hir.TFunc (ts_of_ps ps0, t) - | _ -> - let t = ps1 |> ts_of_ps |> Hir.indexes_to_rows Hir.TRowEmpty in - Hir.TFunc (ts_of_ps ps0, Hir.TRecord t) - in - - (* Get the implicit generics *) - let (implicit_gs, s) = implicit_generics t in - - (* Replace all type variables with generics *) - let t = t |> generalise s in - let (ps0, ps1, b) = tmap_task (generalise s) (ps0, ps1, b) in - - (* Store the type scheme / generic item *) - let sc = Ctx.SPoly { t; explicit_gs; implicit_gs } in - let ctx = ctx |> Ctx.add_item xs (Hir.ITask (d, explicit_gs, ps0, ps1, b)) in - let ctx = ctx |> Ctx.add_scheme xs sc in - ctx - | Hir.IExternDef (_, explicit_gs, ts, t) -> - let t = Hir.TFunc (ts, t) in - let ctx = ctx |> Ctx.add_scheme xs (Ctx.SPoly { t; explicit_gs; implicit_gs = [] }) in - let ctx = ctx |> Ctx.add_item xs i in - ctx - | Hir.IEnum _ - | Hir.IExternType _ - | Hir.ITypeAlias _ - | Hir.IVariant _ -> - ctx |> Ctx.add_item xs i - -and infer_lit t l (ctx:Ctx.t) = - match l with - | Ast.LInt (_, None) -> - ctx |> unify t (atom "i32") - | Ast.LInt (_, Some s) -> - ctx |> unify t (atom s) - | Ast.LFloat (_, None) -> - ctx |> unify t (atom "f32") - | Ast.LFloat (_, Some s) -> - ctx |> unify t (atom s) - | Ast.LBool _ -> - ctx |> unify t (atom "bool") - | Ast.LString _ -> - ctx |> unify t (atom "str") - | Ast.LUnit -> - ctx |> unify t (atom "unit") - | Ast.LChar _ -> - ctx |> unify t (atom "char") - -and infer_ssa (ctx:Ctx.t) (v0, t0, e0) = - let ctx = infer_ssa_rhs ctx (v0, t0, e0) in - let ctx = ctx |> Ctx.bind_v v0 t0 in - ctx - -and infer_ssa_rhs ctx (v0, t0, e0) = - let typeof v = ctx |> Ctx.typeof v in - match e0 with - | Hir.EAccess (v1, x) -> - let (t2, ctx) = ctx |> Ctx.fresh_t in - let t3 = Hir.TRowExtend ((x, t0), t2) in - ctx |> unify (Hir.TRecord t3) (typeof v1) - | Hir.EUpdate (v1, x, v2) -> - let (t2, ctx) = ctx |> Ctx.fresh_t in - let t3 = Hir.TRowExtend ((x, (typeof v2)), t2) in - ctx |> unify t0 (atom "unit") - |> unify (Hir.TRecord t3) (typeof v1) - | Hir.ECall (v1, vs) -> - ctx |> unify (typeof v1) (Hir.TFunc (ts_of_vs vs ctx, t0)) - | Hir.ECast (v1, t2) -> - ctx |> unify t0 (typeof v1) - |> unify t0 t2 - | Hir.EEmit (v1, v2) -> - ctx |> unify t0 (atom "unit") - |> unify (typeof v1) (Hir.TNominal (["Stream"], [typeof v2])) - | Hir.EReceive v1 -> - ctx |> unify (Hir.TNominal (["Stream"], [t0])) (typeof v1) - | Hir.EOn _ -> - todo () - | Hir.EIf (v1, b0, b1) -> - let (t2, ctx) = infer_block b0 ctx in - let (t3, ctx) = infer_block b1 ctx in - ctx |> unify t0 t2 - |> unify t0 t3 - |> unify (atom "bool") (typeof v1) - | Hir.ELit l -> - infer_lit t0 l ctx - | Hir.ELoop b -> - let ctx = ctx |> Ctx.push_subctx (Ctx.CLoop t0) in - let (t1, ctx) = infer_block b ctx in - ctx |> unify t0 (atom "unit") - |> unify t1 (atom "unit") - |> Ctx.pop_subctx - | Hir.ERecord fvs -> - let fts = fts_of_fvs fvs ctx in - let t1 = fts |> Hir.fields_to_rows Hir.TRowEmpty in - ctx |> unify t0 (Hir.TRecord t1) - | Hir.EReturn v1 -> - ctx |> unify t0 (atom "unit") - |> unify (typeof v1) (ctx |> Ctx.return_ty) - | Hir.EBreak v1 -> - ctx |> unify t0 (atom "unit") - |> unify (typeof v1) (ctx |> Ctx.break_ty) - | Hir.EContinue -> - ctx |> unify t0 (atom "unit") - | Hir.EEnwrap (xs, ts1, v1) -> - let (s, ctx) = ctx |> instantiate_enum (xs |> parent) t0 ts1 in - instantiate_variant xs (typeof v1) s ctx - | Hir.EUnwrap (xs, ts1, v1) -> - let (s, ctx) = ctx |> instantiate_enum (xs |> parent) (typeof v1) ts1 in - instantiate_variant xs t0 s ctx - | Hir.EIs (xs, ts1, v1) -> - let (_, ctx) = ctx |> instantiate_enum (xs |> parent) (typeof v1) ts1 in - unify t0 (atom "bool") ctx - (* Every item reference must point to a concrete monomorphised instance of - the referenced item. Therefore we must instantiate the item directly when - referencing it. This is similar to how it works in Rust where function - pointers must be monomorphic. - - fun duplicate(x0) { (x0, x0) } - - fun does_not_work() { - val x1 = duplicate; # OK - val x2 = 1; # OK - val x3 = x1(x2, x2); # OK - val x4 = "1"; # OK - val x5 = x1(x4, x4); # Error, type mismatch - } - - It's sensible, function pointers are values. In the general case we cannot - know what a value is unless we evaluate the program. Thus, it would not be - possible to know what a function pointer monomorphises to at compiletime. - The following is possible however. - - fun does_work() { - val x1 = duplicate; # OK - val x2 = 1; # OK - val x3 = x1(x2, x2); # OK - val x4 = duplicate; # OK - val x5 = "1"; # OK - val x6 = x4(x5, x5); # OK - } - *) - | Hir.EItem (xs, ts0) -> -(* debug_schemes ctx.schemes; *) - let i = ctx.hir |> get_item xs in - let ctx = infer_item ctx (xs, i) in - let sc = ctx |> Ctx.find_sc xs in - match sc with - (* If we have already inferenced this item then we can just instantiate - its type scheme *) - | Ctx.SPoly sc -> - let (ts1, s0, ctx) = ctx |> instantiate_generics sc.explicit_gs in - let (ts2, s1, ctx) = ctx |> instantiate_generics sc.implicit_gs in - let ctx = ctx |> unify_ts ts0 ts1 in - let t1 = sc.t |> instantiate (s0 @ s1) in - let ctx = ctx |> unify t0 t1 in - let ctx = ctx |> Ctx.add_inst v0 (ts1 @ ts2) in - ctx - (* If we are currently inferencing this item, then we must reuse its - implicit types to avoid polymorphic infinite recursion. *) - | Ctx.SMono sc -> - let (ts1, s, ctx) = ctx |> instantiate_generics sc.explicit_gs in - let ctx = ctx |> unify_ts ts0 ts1 in - let t1 = sc.t |> instantiate s in - let ctx = ctx |> unify t0 t1 in - let ctx = ctx |> Ctx.add_inst v0 ts1 in - ctx diff --git a/arc-lang/src/lexer.mll b/arc-lang/src/lexer.mll deleted file mode 100644 index 800ebb735..000000000 --- a/arc-lang/src/lexer.mll +++ /dev/null @@ -1,184 +0,0 @@ -{ - open Lexing - open Token - - exception SyntaxError of string - - let suffix_regex = (Str.regexp "[iufb].+") - - let prefix_suffix lexbuf = - let s = Lexing.lexeme lexbuf in - match (Str.full_split suffix_regex s) with - | [Str.Text prefix; Str.Delim suffix] -> (prefix, suffix) - | _ -> raise (SyntaxError "Entered unreachable code") - - let suffix lexbuf = prefix_suffix lexbuf |> snd - - let next_line lexbuf = - let pos = lexbuf.lex_curr_p in - lexbuf.lex_curr_p <- - { pos with pos_bol = pos.pos_cnum; - pos_lnum = pos.pos_lnum + 1 - } -} - -let int = ['0'-'9'] ['0'-'9']* -let digit = ['0'-'9'] -let frac = '.' digit* -let exp = ['e' 'E'] ['-' '+']? digit+ -let float = digit+ frac? exp? -let percentage = digit+ frac? '%' -let char = '\'' [^ '\'' ] '\'' -let whitespace = [' ' '\t']+ -let newline = '\r' | '\n' | "\r\n" -let name = ['a'-'z' 'A'-'Z' '_'] ['a'-'z' 'A'-'Z' '0'-'9' '_']* -let unit = "unit" -let datetime = int '-' int '-' int ('T' int ':' int ':' int)? -let int_suffix = "i8" | "i16" | "i32" | "i64" | "i128" | "u8" | "u16" | "u32" | "u64" | "u128" -let float_suffix = "f32" | "f64" -let bool_suffix = "bool" -let suffix = int_suffix | float_suffix | bool_suffix - -rule main = - parse - | "(" { ParenL } - | ")" { ParenR } - | "[" { BrackL } - | "]" { BrackR } - | "#{" { PoundBraceL } - | "{" { BraceL } - | "}" { BraceR } - | "<" { AngleL } - | ">" { AngleR } -(*= Operators ==============================================================*) - | "!" { Bang } - | "!=" { Neq } - | "%" { Percent } - | "*" { Star } - | "**" { StarStar } - | "+" { Plus } - | "," { Comma } - | "-" { Minus } - | "." { Dot } - | ".." { DotDot } - | "..=" { DotDotEq } - | "/" { Slash } - | ":" { Colon } - | "::" { ColonColon } - | ";" { Semi } - | "<=" { Leq } - | "=" { Eq } - | "==" { EqEq } - | "=>" { Imply } - | ">=" { Geq } - | "_" { Underscore } - | "|" { Bar } - | "@" { AtSign } -(*= Float extensions =======================================================*) - | "!=" suffix { NeqSuffix (suffix lexbuf) } - | "%" suffix { PercentSuffix (suffix lexbuf) } - | "**" suffix { StarStarSuffix (suffix lexbuf) } - | "*" suffix { StarSuffix (suffix lexbuf) } - | "+" suffix { PlusSuffix (suffix lexbuf) } - | "-" suffix { MinusSuffix (suffix lexbuf) } - | "/" suffix { SlashSuffix (suffix lexbuf) } - | "<" suffix { LtSuffix (suffix lexbuf) } - | "<=" suffix { LeqSuffix (suffix lexbuf) } - | "==" suffix { EqEqSuffix (suffix lexbuf) } - | ">" suffix { GtSuffix (suffix lexbuf) } - | ">=" suffix { GeqSuffix (suffix lexbuf) } -(*= Keywords ================================================================*) - | "and" { And } - | "as" { As } - | "break" { Break } - | "band" { Band } - | "bor" { Bor } - | "bxor" { Bxor } - | "class" { Class } - | "continue" { Continue } - | "def" { Def } - | "desc" { Desc } - | "duration" { Duration } - | "else" { Else } - | "enum" { Enum } - | "extern" { Extern } - | "for" { For } - | "from" { From } - | "fun" { Fun } - | "group" { Group } - | "if" { If } - | "in" { In } - | "instance" { Instance } - | "join" { Join } - | "loop" { Loop } - | "match" { Match } - | "mod" { Mod } - | "not" { Not } - | "on" { On } - | "or" { Or } - | "order" { Or } - | "of" { Of } - | "return" { Return } - | "reduce" { Reduce } - | "step" { Step } - | "task" { Task } - | "type" { Type } - | "val" { Val } - | "var" { Var } - | "where" { Where } - | "while" { While } - | "window" { Window } - | "use" { Use } - | "xor" { Xor } - | "yield" { Yield } - | "true" { Bool true } - | "false" { Bool false } -(*= Identifiers and Literals ================================================*) - | int "ns" { Int (int_of_string (Lexing.sub_lexeme lexbuf lexbuf.lex_start_pos (lexbuf.lex_curr_pos-2)) / 1000000000) } - | int "us" { Int (int_of_string (Lexing.sub_lexeme lexbuf lexbuf.lex_start_pos (lexbuf.lex_curr_pos-2)) / 1000000) } - | int "ms" { Int (int_of_string (Lexing.sub_lexeme lexbuf lexbuf.lex_start_pos (lexbuf.lex_curr_pos-2)) / 1000) } - | int 's' { Int (int_of_string (Lexing.sub_lexeme lexbuf lexbuf.lex_start_pos (lexbuf.lex_curr_pos-1))) } - | int 'm' { Int (int_of_string (Lexing.sub_lexeme lexbuf lexbuf.lex_start_pos (lexbuf.lex_curr_pos-1)) / 60) } - | int 'h' { Int (int_of_string (Lexing.sub_lexeme lexbuf lexbuf.lex_start_pos (lexbuf.lex_curr_pos-1)) / 60 / 60) } - | int 'd' { Int (int_of_string (Lexing.sub_lexeme lexbuf lexbuf.lex_start_pos (lexbuf.lex_curr_pos-1)) / 60 / 60 / 24) } - | int 'w' { Int (int_of_string (Lexing.sub_lexeme lexbuf lexbuf.lex_start_pos (lexbuf.lex_curr_pos-1)) / 60 / 60 / 24 / 7) } - | name { Name (Lexing.lexeme lexbuf) } - | int { Int (int_of_string (Lexing.lexeme lexbuf)) } - | float { Float (float_of_string (Lexing.lexeme lexbuf)) } - | percentage { Float (float_of_string (Lexing.sub_lexeme lexbuf lexbuf.lex_start_pos (lexbuf.lex_curr_pos-1)) /. 100.0) } - | int int_suffix { - let (p, s) = prefix_suffix lexbuf in - IntSuffix ((int_of_string p), s) } - | float float_suffix { - let (p, s) = prefix_suffix lexbuf in - FloatSuffix ((float_of_string p), s) } - | char { Char (Lexing.lexeme_char lexbuf 1) } - | '"' { string (Buffer.create 17) lexbuf } - | datetime { String (Lexing.lexeme lexbuf) } - | '#' { line_comment lexbuf; main lexbuf } - | whitespace { main lexbuf } - | newline { next_line lexbuf; main lexbuf } - | _ { raise (SyntaxError ("Unexpected char: '" ^ (Lexing.lexeme lexbuf) ^ "'")) } - | eof { Eof } - -and line_comment = - parse - | newline { () } - | _ { line_comment lexbuf } - -and string buf = - parse - | '"' { String (Buffer.contents buf) } - | '\\' '/' { Buffer.add_char buf '/'; string buf lexbuf } - | '\\' '\\' { Buffer.add_char buf '\\'; string buf lexbuf } - | '\\' 'b' { Buffer.add_char buf '\b'; string buf lexbuf } - | '\\' 'f' { Buffer.add_char buf '\012'; string buf lexbuf } - | '\\' 'n' { Buffer.add_char buf '\n'; string buf lexbuf } - | '\\' 'r' { Buffer.add_char buf '\r'; string buf lexbuf } - | '\\' 't' { Buffer.add_char buf '\t'; string buf lexbuf } - | [^ '"' '\\']+ - { Buffer.add_string buf (Lexing.lexeme lexbuf); - string buf lexbuf - } - | _ { raise (SyntaxError ("Illegal string character: " ^ Lexing.lexeme lexbuf)) } - | eof { raise (SyntaxError ("String is not terminated")) } diff --git a/arc-lang/src/main.ml b/arc-lang/src/main.ml deleted file mode 100644 index efe5eeee3..000000000 --- a/arc-lang/src/main.ml +++ /dev/null @@ -1,106 +0,0 @@ -open Lexer -open Lexing -open Printf -open Utils - -let menu () = - print_endline "Usage:"; - print_endline "$ arc-lang [--debug [verbose]]"; - print_endline "$ cat | arc-lang [--debug [verbose]]" - -let print_position outx lexbuf = - let pos = lexbuf.lex_curr_p in - fprintf outx "%s:%d:%d" pos.pos_fname pos.pos_lnum (pos.pos_cnum - pos.pos_bol + 1) - -let print_debug debug stage f data = - if debug <> Debug.Silent then begin - printf "[:::%s:::]\n" stage; - f data - end - -let lexer inx filename = - let lexbuf = Lexing.from_channel inx in - lexbuf.lex_curr_p <- { lexbuf.lex_curr_p with pos_fname = filename }; - lexbuf - -let get_env key = - match Sys.getenv_opt key with - | Some value -> value - | None -> panic (Printf.sprintf "Environment variable $%s was not set" key) - - -let compile inx filename debug = - - let lexbuf = lexer inx filename in - - try - - let ast = Parser.program Lexer.main lexbuf in - print_debug debug "AST" (Pretty_ast.pr_ast ast) debug; - - let stdlibpath = get_env "ARC_LANG_STDLIB_PATH" in - let inx = Core.In_channel.create stdlibpath in - let lexbuf = lexer inx stdlibpath in - - let stlib = Parser.program Lexer.main lexbuf in - - print_debug debug "AST (Stdlib)" (Pretty_ast.pr_ast stlib) debug; - - let ast = ast @ stlib in - - let table = Declare.declare ast in - - let hir = Ast_to_hir.hir_of_ast table ast in - print_debug debug "HIR" (Pretty_hir.pr_hir hir) debug; - - let hir = Infer.infer_hir hir debug in - print_debug debug "HIR (Inferred)" (Pretty_hir.pr_hir hir) debug; - - let mir = Hir_to_mir.mir_of_hir hir in - print_debug debug "MIR" Pretty_mir.pr_mir mir; - - print_debug debug "Rust" Mir_to_rust.pr_mir mir; - - let mlir = Mir_to_mlir.mlir_of_mir mir in - print_debug debug "MLIR" Pretty_mlir.pr_mlir (mlir, ""); - - let stdlibpath = get_env "ARC_MLIR_STDLIB_PATH" in - let ch = open_in stdlibpath in - let stdlib = really_input_string ch (in_channel_length ch) in - close_in ch; - Pretty_mlir.pr_mlir (mlir, stdlib); - - with - | Utils.Compiler_error msg -> - eprintf "Compiler Error: %s. %s" msg (Printexc.get_backtrace ()); - exit (-1) - | SyntaxError msg -> - eprintf "Syntax Error: %a: %s\n" print_position lexbuf msg; - exit (-1) - | Parser.Error -> - eprintf "Parser Error: %a\n" print_position lexbuf; - exit (-1) - -let main = - let argv = Core.Sys.get_argv () in - match argv with - | [| _ |] -> - compile Core.In_channel.stdin "stdin" Debug.Silent; - | [| _; "--debug" |] -> - compile Core.In_channel.stdin "stdin" Debug.Brief; - | [| _; "--debug"; "verbose" |] -> - compile Core.In_channel.stdin "stdin" Debug.Verbose; - | [| _; filename |] -> - let inx = Core.In_channel.create filename in - compile inx filename Debug.Silent; - Core.In_channel.close inx; - | [| _; filename; "--debug"; "verbose" |] -> - let inx = Core.In_channel.create filename in - compile inx filename Debug.Verbose; - Core.In_channel.close inx; - | [| _; filename; "--debug" |] -> - let inx = Core.In_channel.create filename in - compile inx filename Debug.Brief; - Core.In_channel.close inx; - | _ -> - menu () diff --git a/arc-lang/src/main.rs b/arc-lang/src/main.rs new file mode 100644 index 000000000..0ac6ba0ea --- /dev/null +++ b/arc-lang/src/main.rs @@ -0,0 +1,79 @@ +#![allow(unused)] + +use anyhow::Result; +use clap::Parser; +use compiler::Compiler; +use repl::repl; +use std::io::Read; +use std::path::Path; + +#[tokio::main(flavor = "current_thread")] +async fn main() -> Result<()> { + let mut logger = logging::Logger::stderr(); + let config = config::Config::try_parse()?; + let mut compiler = Compiler::new(config, logger); + + if compiler.config.version { + version::show(); + return Ok(()); + } + + if compiler.config.show.caches { + compiler.show_caches(); + return Ok(()); + } + if compiler.config.clear_caches { + compiler.clear_caches(); + return Ok(()); + } + + compiler.compile_prelude(); + + if compiler.config.file.is_some() { + let path = compiler.config.file.as_ref().unwrap(); + let (name, source) = read_file(path)?; + if compiler.config.interactive { + repl(compiler, Some(source)) + } else { + compile(compiler, name, source) + } + } else { + repl(compiler, None) + } +} + +fn run(compiler: Compiler, name: String, source: String) -> Result<()> { + if compiler.config.interactive { + repl(compiler, Some(source)) + } else { + compile(compiler, name, source) + } +} + +fn read_file(path: &Path) -> Result<(String, String)> { + let name = path.display().to_string(); + let source = std::fs::read_to_string(path)?; + if path.is_absolute() { + std::env::set_current_dir(path.parent().unwrap())?; + } else { + let mut relative_path = std::env::current_dir()?; + relative_path.push(path); + std::env::set_current_dir(relative_path.parent().unwrap())?; + } + tracing::info!("Updated cwd to: {}", std::env::current_dir()?.display()); + Ok((name, source)) +} + +fn compile(mut compiler: Compiler, name: String, source: String) -> Result<()> { + let ss = compiler.parse(name, source); + let ss = compiler.ast_to_hir(ss); + let ss = compiler.infer(ss); + let ss = compiler.patcomp(ss); + let ss = compiler.monomorphise(ss); + if compiler.has_errors() { + compiler.emit_errors(); + std::process::exit(1); + } + compiler.interpret(ss); + Ok(()) +} diff --git a/arc-lang/src/mir.ml b/arc-lang/src/mir.ml deleted file mode 100644 index 337f388a3..000000000 --- a/arc-lang/src/mir.ml +++ /dev/null @@ -1,78 +0,0 @@ - -type mir = ((path * tys) * item) list - -and name = string -and paths = path list -and path = name list -and params = param list -and param = name * ty -and 't fields = 't field list -and 't field = name * 't -and ssas = ssa list -and ssa = var * ty * expr -and vars = var list -and var = name -and block = ssas * var -and interface = path * tys -and decorator = Ast.decorator - -and item = - | IVal of decorator * ty * block - | IEnum of decorator * paths - | IExternDef of decorator * tys * ty - | IExternType of decorator - | IDef of decorator * params * ty * block - | ITask of decorator * params * params * block - | IVariant of ty - -and tys = ty list -and ty = - | TFunc of tys * ty - | TRecord of ty fields - | TNominal of path * tys - -and expr = - | EAccess of var * name - | EUpdate of var * name * var - | ECall of var * vars - | ECast of var * ty - | EEmit of var * var - | EEnwrap of path * tys * var - | EIf of var * block * block - | EIs of path * tys * var - | ELit of Ast.lit - | ELoop of block - | EReceive of var - | ERecord of var fields - | EUnwrap of path * tys * var - | EReturn of var - | EBreak of var - | EContinue - | EItem of path * tys - -let is_int t = - match t with - | TNominal (["i16" | "i32" | "i64" | "i128"], []) -> true - | _ -> false - -let is_float t = - match t with - | TNominal (["f32" | "f64"], []) -> true - | _ -> false - -let is_bool t = - match t with - | TNominal (["bool"], []) -> true - | _ -> false - -let is_unit t = - match t with - | TNominal (["unit"], []) -> true - | _ -> false - -and nominal xs = TNominal (xs, []) -and atom x = TNominal ([x], []) - -and ts_of_vs vs = vs |> List.map (fun (_, t) -> t) -and fts_of_fvs vs = vs |> List.map (fun (x, (_, t)) -> (x, t)) - diff --git a/arc-lang/src/mir_to_mlir.ml b/arc-lang/src/mir_to_mlir.ml deleted file mode 100644 index 4768470ee..000000000 --- a/arc-lang/src/mir_to_mlir.ml +++ /dev/null @@ -1,335 +0,0 @@ -open Utils - -module Ctx = struct - type t = { - mir: Mir.mir; - mlir: Mlir.mlir; - stack: scope list; - } - and scope = { - vsubst: (Mlir.name * Mlir.ty) list; - } - - let add_item xs i ctx = { ctx with mlir = (xs, i)::ctx.mlir } - let make mir = { mir; mlir = []; stack = [] } - - let push_scope ctx = { ctx with stack = { vsubst = [] }::ctx.stack } - let pop_scope ctx = { ctx with stack = ctx.stack |> tl } - - let bind_var x (t:Mlir.ty) ctx = - match ctx.stack with - | hd::tl -> { ctx with stack = { vsubst = (x, t)::hd.vsubst}::tl } - | _ -> unreachable () - - let typeof_opt x ctx = - ctx.stack |> List.find_map (fun scope -> scope.vsubst |> List.assoc_opt x) - - let typeof x ctx = ctx |> typeof_opt x |> Option.get - -end - -let rec mlir_of_mir mir = - let ctx = Ctx.make mir in - let ctx = mir |> foldl (fun ctx a -> lower_item a ctx) ctx in - ctx.mlir - -and none_if_unit t ctx = - if Mir.is_unit t then - (None, ctx) - else - let (t, ctx) = lower_type t ctx in - (Some t, ctx) - -and filter_unit ts = - ts |> filter (fun t -> t |> Mir.is_unit |> not) - -and lower_item ((xs, ts), i) (ctx:Ctx.t) = - match i with - | Mir.IVal (_, t0, b) -> - let (x, ctx) = lower_path (xs, ts) ctx in - let (t0, ctx) = lower_type t0 ctx in - let terminator _ = Mlir.ENoop in - let (b, ctx) = lower_block b terminator ctx in - ctx |> Ctx.add_item x (Mlir.IAssign (t0, b)) - | Mir.IEnum _ -> ctx - | Mir.IExternDef (a, ps, t) -> - if not (is_defined_in_mlir a) then - let (x, ctx) = lower_path (xs, ts) ctx in - let (x_rust, ctx) = lower_extern_def_path x a ctx in - let (ts, ctx) = ps |> filter_unit |> mapm lower_type ctx in - let ps = ts |> Hir.indexes_to_fields in - let (t, ctx) = lower_type t ctx in - ctx |> Ctx.add_item x (Mlir.IExternFunc (x_rust, ps, t)) - else - ctx - | Mir.IExternType _ -> ctx - | Mir.IDef (_, ps, t, b) -> - let ctx = ctx |> Ctx.push_scope in - let (x, ctx) = lower_path (xs, ts) ctx in - let (ps, ctx) = ps |> mapm_filter lower_param ctx in - let terminator (v, t) = Mlir.EReturn (t |> Option.map (fun t -> (v, t))) in - let (t, ctx) = none_if_unit t ctx in - let (b, ctx) = lower_block b terminator ctx in - let ctx = ctx |> Ctx.pop_scope in - ctx |> Ctx.add_item x (Mlir.IFunc (ps, t, b)) - | Mir.ITask (_, ps0, ps1, b) -> - let ctx = ctx |> Ctx.push_scope in - let (x, ctx) = lower_path (xs, ts) ctx in - let (ps0, ctx) = ps0 |> mapm_filter lower_param ctx in - let (ps1, ctx) = ps1 |> mapm_filter lower_param ctx in - let (b, ctx) = lower_block b (fun _ -> Mlir.EReturn None) ctx in - ctx |> Ctx.add_item x (Mlir.ITask (ps0, ps1, b)) - | Mir.IVariant _ -> ctx - -and lower_enum (xs, ts) (ctx:Ctx.t) = - match ctx.mir |> List.assoc (xs, ts) with - | Mir.IEnum (_, xss) -> - let (vs, ctx) = xss |> mapm (fun xs ctx -> lower_variant (xs, ts) ctx) ctx in - (Mlir.TEnum vs, ctx) - | _ -> unreachable () - -and lower_extern_param (t:Mir.ty) (ctx:Ctx.t) = - if Mir.is_unit t then - (None, ctx) - else - let (t, ctx) = lower_type t ctx in - (Some t, ctx) - -and lower_param ((x, t):Mir.param) (ctx:Ctx.t) = - if Mir.is_unit t then - (None, ctx) - else - let (t, ctx) = lower_type t ctx in - let ctx = ctx |> Ctx.bind_var x t in - (Some (x, t), ctx) - -and lower_types ts ctx = - ts |> mapm lower_type ctx - -and lower_type t ctx = - match t with - | Mir.TFunc (ts, t) -> - let (ts, ctx) = ts |> mapm lower_type ctx in - let (t, ctx) = lower_type t ctx in - (Mlir.TFunc (ts, t), ctx) - | Mir.TRecord fts -> - let (fts, ctx) = lower_type_fields fts ctx in - (Mlir.TRecord fts, ctx) - | Mir.TNominal (xs, ts) -> - begin match ctx.mir |> List.assoc (xs, ts) with - | Mir.IEnum (_, xss) -> - let (vs, ctx) = xss |> mapm (fun xs ctx -> lower_variant (xs, ts) ctx) ctx in - (Mlir.TEnum vs, ctx) - | Mir.IExternType a -> - begin - match a |> List.assoc_opt "mlir" with - | Some Some Ast.LString x -> - (Mlir.TNative x, ctx) - | None -> - begin match a |> List.assoc_opt "rust" with - | Some Some Ast.LString x -> - let (ts, ctx) = lower_types ts ctx in - if ts = [] then - (Mlir.TAdt x, ctx) - else - (Mlir.TGAdt (x, ts), ctx) - | _ -> panic "Expected literal string, got something else" - end - | _ -> panic "Expected mlir or rust attribute" - end - | _ -> unreachable () - end - -and lower_type_fields fts ctx = - fts |> mapm lower_type_field ctx - -and lower_type_field (x, t) ctx = - let (t, ctx) = lower_type t ctx in - ((x, t), ctx) - -and lower_block (ss, v) terminator ctx = - let ctx = ctx |> Ctx.push_scope in - let (ss, ctx) = ss |> mapm lower_ssa ctx in - let v = terminator (v, ctx |> Ctx.typeof_opt v) in - let ctx = ctx |> Ctx.pop_scope in - (ss @ [(None, v)], ctx) - -and lower_path (xs, ts) ctx = - (* Mangle path *) - let (ts, ctx) = lower_types ts ctx in - let s0 = xs |> String.concat "" in - let s1 = mangle_types ts in - (s0 ^ s1, ctx) - -and mangle_types ts = - ts |> map mangle_type |> String.concat "" - -and mangle_type t = - let rec mangle_type t acc = - match t with - | Mlir.TAdt x -> - let acc = "Adt"::acc in - let acc = x::acc in - let acc = "End"::acc in - acc - | Mlir.TGAdt (x, ts) -> - let acc = "GAdt"::acc in - let acc = x::acc in - let acc = mangle_types ts acc in - let acc = "End"::acc in - acc - | Mlir.TEnum vts -> - let acc = "Enum"::acc in - let acc = mangle_fields vts acc in - let acc = "End"::acc in - acc - | Mlir.TFunc (ts, t) -> - let acc = "Func"::acc in - let acc = mangle_types ts acc in - let acc = mangle_type t acc in - let acc = "End"::acc in - acc - | Mlir.TNative x -> - x::acc - | Mlir.TRecord fts -> - let acc = "Struct"::acc in - let acc = mangle_fields fts acc in - let acc = "End"::acc in - acc - | Mlir.TStream t -> - let acc = "Stream"::acc in - let acc = mangle_type t acc in - let acc = "End"::acc in - acc - and mangle_types ts acc = - ts |> foldl (fun acc t -> mangle_type t acc) acc - and mangle_field (x, t) acc = - let acc = ((x |> String.length) |> Int.to_string)::acc in - let acc = x::acc in - let acc = mangle_type t acc in - acc - and mangle_fields fts acc = - fts |> foldl (fun acc ft -> mangle_field ft acc) acc - in - mangle_type t [] |> List.rev |> String.concat "" - -and lower_ssa (v, t, e) ctx = - let (v, ctx) = lower_param (v, t) ctx in - let (e, ctx) = lower_expr t e ctx in - ((v, e), ctx) - -and lower_expr t e ctx = - let typeof v = ctx |> Ctx.typeof v in - let arg v = (v, typeof v) in - let arg_opt v = ctx |> Ctx.typeof_opt v |> Option.map (fun t -> (v, t)) in - let args vs = vs |> List.filter_map arg_opt in - match e with - | Mir.EAccess (v0, x0) -> - (Mlir.EAccess (arg v0, x0), ctx) - | Mir.EUpdate (v0, x0, v1) -> - (Mlir.EUpdate (arg v0, x0, arg v1), ctx) - | Mir.ECall (v0, vs) -> - (Mlir.ECall (arg v0, args vs), ctx) - | Mir.ECast _ -> todo () - | Mir.EEmit (v0, v1) -> - (Mlir.EEmit ((arg v0), (arg v1)), ctx) - | Mir.EEnwrap (xs, ts, v0) -> - let (x, ctx) = lower_path (xs, ts) ctx in - (Mlir.EEnwrap (x, arg_opt v0), ctx) - | Mir.EUnwrap (xs, ts, v0) -> - if Mir.is_unit t then - (Mlir.ENoop, ctx) - else - let (x, ctx) = lower_path (xs, ts) ctx in - (Mlir.EUnwrap (x, arg v0), ctx) - | Mir.EIs (xs, ts, v0) -> - let (x, ctx) = lower_path (xs, ts) ctx in - (Mlir.EIs (x, arg v0), ctx) - | Mir.EIf (v0, b0, b1) -> - let terminator (v, t) = Mlir.EResult (t |> Option.map (fun t -> (v, t))) in - let (b0, ctx) = lower_block b0 terminator ctx in - let (b1, ctx) = lower_block b1 terminator ctx in - (Mlir.EIf (arg v0, b0, b1), ctx) - | Mir.ELit l -> - let e = match l with - | Ast.LInt (d, _) -> Mlir.EConst (Mlir.CInt d) - | Ast.LFloat (f, _) -> Mlir.EConst (Mlir.CFloat f) - | Ast.LBool b -> Mlir.EConst (Mlir.CBool b) - | Ast.LString s -> Mlir.EConst (Mlir.CAdt (Printf.sprintf "\\\"%s\\\"" s)) - | Ast.LUnit -> Mlir.ENoop - | Ast.LChar c -> Mlir.EConst (Mlir.CAdt (Printf.sprintf "'%c'" c)) - in - (e, ctx) - | Mir.ELoop b -> - let terminator _ = Mlir.EYield in - let (b, ctx) = lower_block b terminator ctx in - (Mlir.ELoop b, ctx) - | Mir.EReceive v -> - (Mlir.EReceive (arg v), ctx) - | Mir.ERecord fvs -> - let (fvs, ctx) = fvs |> mapm_filter lower_field_expr ctx in - let (xs, ts) = fvs |> map (fun (_, v) -> v) |> Utils.unzip in - (Mlir.ERecord (xs, ts), ctx) - | Mir.EReturn v0 -> - (Mlir.EReturn (arg_opt v0), ctx) - | Mir.EBreak v0 -> - (Mlir.EBreak (arg_opt v0), ctx) - | Mir.EContinue -> - (Mlir.EContinue, ctx) - | Mir.EItem (xs, ts) -> - match ctx.mir |> List.assoc (xs, ts) with - | Mir.IVal _ -> todo () - | Mir.IEnum _ -> unreachable () - | Mir.IExternDef (a, _, _) -> - let (x, ctx) = ctx |> lower_extern_use_path a (xs, ts) in - (Mlir.EConst (Mlir.CFun x), ctx) - | Mir.IExternType _ -> unreachable () - | Mir.IDef _ -> - let (x, ctx) = lower_path (xs, ts) ctx in - (Mlir.EConst (Mlir.CFun x), ctx) - | Mir.ITask _ -> todo () - | Mir.IVariant _ -> unreachable () - -and is_defined_in_mlir d = - d |> assoc_opt "mlir" |> Option.is_some - -and lower_extern_use_path d (xs, ts) ctx = - match d |> List.assoc_opt "mlir" with - | Some Some Ast.LString y -> (y, ctx) - | None -> lower_path (xs, ts) ctx - | _ -> panic "Found non-string as mlir" - -and lower_extern_def_path x d ctx = - match d |> List.assoc_opt "rust" with - | Some Some Ast.LString y -> (y, ctx) - | None -> panic (Printf.sprintf "rust attribute must be specified for %s" x) - | _ -> panic (Printf.sprintf "Found non-string as rust attribute-value for %s" x) - -and lower_field_type (x, t) ctx = - let (t, ctx) = lower_type t ctx in - ((x, t), ctx) - -and lower_field_expr (x, v) ctx = - let fa = ctx |> Ctx.typeof_opt v |> Option.map (fun t -> (x, (v, t))) in - (fa, ctx) - -and lower_variant (xs, ts) ctx = - match ctx.mir |> List.assoc (xs, ts) with - | Mir.IVariant t -> - let (t, ctx) = lower_type t ctx in - let (xs, ctx) = lower_path (xs, ts) ctx in - ((xs, t), ctx) - | _ -> unreachable () - -and int_or_float t = - match t with - | t when Mir.is_int t -> Mlir.NInt - | t when Mir.is_float t -> Mlir.NFlt - | _ -> todo () - -and int_or_float_or_bool t = - match t with - | t when Mir.is_int t -> Mlir.EqInt - | t when Mir.is_float t -> Mlir.EqFlt - | t when Mir.is_bool t -> Mlir.EqBool - | _ -> todo () diff --git a/arc-lang/src/mir_to_rust.ml b/arc-lang/src/mir_to_rust.ml deleted file mode 100644 index 662cb63ce..000000000 --- a/arc-lang/src/mir_to_rust.ml +++ /dev/null @@ -1,221 +0,0 @@ -open Mir -open Pretty -open Utils - -let rec pr_mir (mir:Mir.mir) = - let ctx = Ctx.brief_with_data mir in - mir |> List.iter (fun i -> pr_item i ctx); - pr "\n"; - -and pr_item_path (xs, ts) (ctx:Mir.mir Ctx.t) = - let i = ctx.data |> assoc (xs, ts) in - pr_item ((xs, ts), i) ctx; - -and pr_variants xss ts ctx = - pr_sep "" pr_variant (map (fun xs -> (xs, ts)) xss) (ctx |> Ctx.indent); - -and pr_variant (xs, ts) (ctx:Mir.mir Ctx.t) = - match ctx.data |> assoc (xs, ts) with - | IVariant t -> - pr_path (xs, ts) ctx; - pr_paren (pr_type t) ctx - | _ -> unreachable () - -and pr_item ((xs, ts), i) ctx = - ctx |> pr_indent; - match i with - | IVal _ -> todo() - | IEnum (_, xss) -> - pr "#[arc_codegen::rewrite]"; - ctx |> pr_indent; - pr "enum "; - pr_path (xs, ts) ctx; - pr " {"; - ctx |> Ctx.indent |> pr_indent; - pr_variants xss ts ctx; - ctx |> pr_indent; - pr "}"; - | IExternDef _ -> () - | IExternType _ -> () - | IDef (_, ps, t, b) -> - pr "fn "; - pr_path (xs, ts) ctx; - pr_params ps ctx; - pr " -> "; - pr_type t ctx; - pr " "; - pr_block b ctx; - | ITask (_, _ps0, _ps1, _b) -> - todo () - | IVariant _ -> () - -and pr_path (xs, ts) ctx = - prr (xs |> String.concat ""); - ts |> List.iter (fun t -> pr_mangle_type t ctx) - -and pr_interface (xs, ts) ctx = - pr_path (xs, ts) ctx; - pr_brack (pr_types ts) ctx; - -and pr_params ps ctx = - pr_paren (pr_list pr_param ps) ctx - -and pr_param (x, t) ctx = - pr_name x ctx; - pr ": "; - pr_type t ctx; - -and pr_types ts ctx = - pr_list pr_type ts ctx; - -and pr_type t ctx = - match t with - | TFunc (ts, t) -> - pr "fn"; - pr_paren (pr_list pr_type ts) ctx; - pr " -> "; - pr_type t ctx; - | TRecord _ -> pr_mangle_type t ctx - | TNominal _ -> pr_mangle_type t ctx - -and pr_mangle_type t ctx = - let rec pr_mangle_type t = - match t with - | Mir.TNominal (xs, ts) -> - pr_path (xs, ts) ctx; - | Mir.TFunc (ts, t) -> - pr "Func"; - pr_mangle_types ts; - pr_mangle_type t; - pr "End"; - | Mir.TRecord fts -> - pr "Struct"; - pr_mangle_fields fts; - pr "End"; - and pr_mangle_types ts = - ts |> List.iter pr_mangle_type; - and pr_mangle_field (x, t) = - prr ((x |> String.length) |> Int.to_string); - prr x; - pr_mangle_type t; - and pr_mangle_fields fts = - fts |> List.iter pr_mangle_field - in - pr_mangle_type t - -and pr_block (ss, v) ctx = - let ctx' = ctx |> Ctx.indent in - pr "{"; - if ss != [] then begin - pr_sep ";" pr_ssa ss ctx'; - pr ";"; - end; - ctx' |> pr_indent; - pr_var v ctx'; - ctx |> pr_indent; - pr "}"; - -and pr_ssa (x, t, e) ctx = - ctx |> pr_indent; - pr "val "; - pr_name x ctx; - pr ": "; - pr_type t ctx; - pr " = "; - pr_expr e ctx; - -and pr_name x _ctx = - pr "%s" x; - -and pr_expr e ctx = - match e with - | EAccess (v, x) -> - pr_var v ctx; - pr "."; - pr_name x ctx; - | EUpdate (v0, x, v1) -> - pr_var v0 ctx; - pr "."; - pr_name x ctx; - pr " = "; - pr_var v1 ctx; - | ECall (v, vs) -> - pr_var v ctx; - pr_paren (pr_list pr_var vs) ctx; - | ECast (v, t) -> - pr_var v ctx; - pr " as "; - pr_type t ctx; - | EEmit (v0, v1) -> - pr_var v0 ctx; - pr ".push"; - pr_paren (pr_var v1) ctx; - pr ".await?" - | EReceive v -> - pr_var v ctx; - pr "pull().await?"; - | EEnwrap (xs, ts, v) -> - pr "enwrap["; - pr_path (xs, ts) ctx; - if ts != [] then begin - pr_brack (pr_list pr_type ts) ctx; - end; - pr "]"; - pr_paren (pr_var v) ctx; - | EIf (v, b0, b1) -> - pr "if "; - pr_var v ctx; - pr " "; - pr_block b0 ctx; - pr " else "; - pr_block b1 ctx; - | EIs (xs, ts, v) -> - pr "is!("; - pr_path (xs, ts) ctx; - if ts != [] then begin - pr_brack (pr_list pr_type ts) ctx; - end; - pr ")"; - pr_paren (pr_var v) ctx; - | ELit l -> - pr_lit l ctx; - | ELoop b -> - pr "loop "; - pr_block b ctx; - | ERecord fvs -> - pr "#{"; - pr_list pr_expr_field fvs ctx; - pr "}"; - | EUnwrap (xs, ts, v) -> - pr "unwrap["; - pr_path (xs, ts) ctx; - if ts != [] then begin - pr_brack (pr_list pr_type ts) ctx; - end; - pr "]"; - pr_paren (pr_var v) ctx; - | EReturn v -> - pr "return "; - pr_var v ctx; - | EBreak v -> - pr "break "; - pr_var v ctx; - | EContinue -> - pr "continue" - | EItem (xs, ts) -> - pr_path (xs, ts) ctx; - -and pr_type_field (x, t) ctx = - pr "pub "; - pr_name x ctx; - pr ": "; - pr_type t ctx; - -and pr_expr_field (x, v) ctx = - pr_name x ctx; - pr ": "; - pr_var v ctx; - -and pr_var x ctx = - pr "val!"; - pr_paren (pr_name x) ctx diff --git a/arc-lang/src/mlir.ml b/arc-lang/src/mlir.ml deleted file mode 100644 index a44b857fa..000000000 --- a/arc-lang/src/mlir.ml +++ /dev/null @@ -1,79 +0,0 @@ -type mlir = (path * item) list -and names = name list -and name = string -and path = name -and 't fields = 't field list -and 't field = name * 't -and ops = op list -and op = param option * expr -and args = arg list -and arg = name * ty -and params = param list -and param = name * ty -and block = ops -and item = - | IAssign of ty * block - | IExternFunc of name * params * ty - | IFunc of params * ty option * block - | ITask of params * params * block -and tys = ty list -and ty = - | TFunc of tys * ty - | TRecord of ty fields - | TEnum of ty fields - | TAdt of path - | TGAdt of path * tys - | TStream of ty - | TNative of name -and num = - | NFlt - | NInt -and eq = - | EqFlt - | EqInt - | EqBool -and binop = - | BAdd of num - | BAnd - | BBand - | BBor - | BBxor - | BDiv of num - | BEqu of eq - | BGeq of num - | BGt of num - | BLeq of num - | BLt of num - | BMod of num - | BMul of num - | BMut - | BNeq of eq - | BOr - | BPow of num - | BSub of num - | BXor -and expr = - | EAccess of arg * name - | EUpdate of arg * name * arg - | ECall of arg * args - | EEmit of arg * arg - | EEnwrap of path * arg option - | EIf of arg * block * block - | EIs of path * arg - | EConst of const - | ELoop of block - | ERecord of names * tys - | EReceive of arg - | EUnwrap of path * arg - | EReturn of arg option - | EBreak of arg option - | EContinue - | EYield - | EResult of arg option - | ENoop -and const = - | CBool of bool - | CFun of path - | CInt of int - | CFloat of float - | CAdt of string diff --git a/arc-lang/src/parser.mly b/arc-lang/src/parser.mly deleted file mode 100644 index eee68b28c..000000000 --- a/arc-lang/src/parser.mly +++ /dev/null @@ -1,406 +0,0 @@ -%start program -%start expr -%% - -expr: expr0 Eof { $1 } -program: items Eof { $1 } - -(* Utilities *) -%inline paren(x): "(" x ")" { $2 } -%inline brack(x): "[" x "]" { $2 } -%inline brace(x): "{" x "}" { $2 } -%inline angle(x): "<" x ">" { $2 } - -%inline epsilon: {} - -%inline llist(x): - llist_rev(x) { $1 |> List.rev } - -llist_rev(x): - | epsilon { [] } - | llist_rev(x) x { $2::$1 } - -%inline nonempty_llist(x): - nonempty_llist_rev(x) { $1 |> List.rev } - -nonempty_llist_rev(x): - | x { [$1] } - | nonempty_llist_rev(x) x { $2::$1 } - -%inline separated_nonempty_llist(s, x): - separated_nonempty_llist_rev(s, x) { $1 |> List.rev } - -separated_nonempty_llist_rev(s, x): - | x { [$1] } - | separated_nonempty_llist_rev(s, x) s x { $3::$1 } - -%inline separated_llist(s, x): - | epsilon { [] } - | separated_nonempty_llist(s, x) { $1 } - -%inline separated_llist_trailing(s, x): - | separated_llist(s, x) s? { $1 } - -%inline separated_nonempty_llist_trailing(s, x): - | separated_nonempty_llist(s, x) s? { $1 } - -(* The grammar *) - -%inline decorator: "@" brace(separated_llist_trailing(",", field(lit))) { $2 } - -%inline items: llist(item) { $1 } -%inline item: - | loption(decorator) "extern" "def" defname loption(generics) paren(typarams) annot(ty0)? ";" - { Ast.IExternDef ($1, $4, $5, $6, $7) } - | loption(decorator) "type" name loption(generics) "=" ty0 ";" - { Ast.ITypeAlias ($1, $3, $4, $6) } - | loption(decorator) "extern" "type" name loption(generics) ";" - { Ast.IExternType ($1, $4, $5) } - | loption(decorator) "enum" name loption(generics) brace(variants) - { Ast.IEnum ($1, $3, $4, $5) } - | loption(decorator) "class" name loption(generics) brace(decls) - { Ast.IClass ($1, $3, $4, $5) } - | loption(decorator) "instance" loption(generics) path loption(brack(tys)) brace(defs) - { Ast.IInstance ($1, $3, $4, $5, $6) } - | loption(decorator) "def" defname loption(generics) params annot(ty0)? body? - { Ast.IDef ($1, $3, $4, $5, $6, $7) } - | loption(decorator) "mod" name brace(items) - { Ast.IMod ($1, $3, $4) } - | loption(decorator) "task" defname loption(generics) params ":" params body? - { Ast.ITask ($1, $3, $4, $5, $7, $8) } - | loption(decorator) "use" path alias(name)? ";" - { Ast.IUse ($1, $3, $4) } - | loption(decorator) "val" name annot(ty0)? "=" expr0 ";" - { Ast.IVal ($1, $3, $4, $6) } - -%inline typarams: separated_llist(",", ty0) { $1 } - -%inline decls: llist(decl) { $1 } -%inline decl: "def" name loption(generics) params annot(ty0)? - { ($2, $3, $4, $5) } - -%inline defs: llist(def) { $1 } -%inline def: "def" name loption(generics) params annot(ty0)? block - { ($2, $3, $4, $5, $6) } - -%inline body: - | "=" expr1 { ([], Some $2) } - | block { $1 } - -%inline annot(x): ":" x { $2 } - -%inline params: paren(separated_llist_trailing(",", param)) { $1 } -%inline param: pat0 annot(ty0)? { ($1, $2) } - -%inline generics: brack(separated_llist_trailing(",", generic)) { $1 } -%inline generic: Name { $1 } - -%inline variants: separated_llist_trailing(",", variant) { $1 } -%inline variant: name loption(paren(tys)) { ($1, $2) } - -%inline alias(x): "as" x { $2 } - -%inline name: Name { $1 } - -%inline binop: - | ".." { Ast.BRInc } - | "..=" { Ast.BRExc } - | "bor" { Ast.BBor } - | "band" { Ast.BBand } - | "bxor" { Ast.BBxor } - | "or" { Ast.BOr } - | "xor" { Ast.BXor } - | "and" { Ast.BAnd } - | "==" { Ast.BEq None } | "==." { Ast.BEq (Some $1) } - | "!=" { Ast.BNeq None } | "!=." { Ast.BNeq (Some $1) } - | "<" { Ast.BLt None } | "<." { Ast.BLt (Some $1) } - | ">" { Ast.BGt None } | ">." { Ast.BGt (Some $1) } - | "<=" { Ast.BLeq None } | "<=." { Ast.BLeq (Some $1) } - | ">=" { Ast.BGeq None } | ">=." { Ast.BGeq (Some $1) } - | "+" { Ast.BAdd None } | "+." { Ast.BAdd (Some $1) } - | "-" { Ast.BSub None } | "-." { Ast.BSub (Some $1) } - | "%" { Ast.BMod None } | "%." { Ast.BMod (Some $1) } - | "*" { Ast.BMul None } | "*." { Ast.BMul (Some $1) } - | "/" { Ast.BDiv None } | "/." { Ast.BDiv (Some $1) } - | "**" { Ast.BPow None } | "**." { Ast.BPow (Some $1) } - -%inline unop: - | "not" { Ast.UNot } - -%inline defname: - | name { Ast.DName $1 } - | unop { Ast.DUnOp $1 } - | binop { Ast.DBinOp $1 } - -%inline index: Int { $1 } - -%inline path: separated_nonempty_llist("::", name) { $1 } - -%inline receivers: separated_nonempty_llist(",", receiver) { $1 } -%inline receiver: pat0 "in" expr0 "=>" expr0 { ($1, $3, $5) } - -%inline handler: - | receiver { [$1] } - | brace(receivers) { $1 } - -expr0: - | "on" handler { Ast.EOn $2 } - | "return" expr1? { Ast.EReturn $2 } - | "break" expr1? { Ast.EBreak $2 } - | "continue" { Ast.EContinue } - | expr1 { $1 } - -expr1: - | "fun" params annot(ty0)? body { Ast.EFunc ($2, $4) } - | "task" ":" params body { Ast.ETask ($3, $4) } - | expr2 { $1 } - -%inline op2: - | "=" { Ast.BMut } - | "in" { Ast.BIn } - | "not" "in" { Ast.BNotIn } -expr2: - | expr3 { $1 } - | expr2 "!" expr3 { Ast.EEmit ($1, $3) } - | expr2 op2 expr3 { Ast.EBinOp ($2, $1, $3)} - -%inline op3: - | ".." { Ast.BRInc } - | "..=" { Ast.BRExc } -expr3: - | expr4 { $1 } - | expr4 op3 expr4 { Ast.EBinOp ($2, $1, $3)} - -%inline op4: - | "bor" { Ast.BBor } - | "band" { Ast.BBand } - | "bxor" { Ast.BBxor } - | "or" { Ast.BOr } - | "xor" { Ast.BXor } - | "and" { Ast.BAnd } -expr4: - | expr5 { $1 } - | expr4 op4 expr5 { Ast.EBinOp ($2, $1, $3)} - -%inline op5: - | "==" { Ast.BEq None } | "==." { Ast.BEq (Some $1) } - | "!=" { Ast.BNeq None } | "!=." { Ast.BNeq (Some $1) } -expr5: - | expr6 { $1 } - | expr5 op5 expr6 { Ast.EBinOp ($2, $1, $3)} - -%inline op6: - | "<" { Ast.BLt None } | "<." { Ast.BLt (Some $1) } - | ">" { Ast.BGt None } | ">." { Ast.BGt (Some $1) } - | "<=" { Ast.BLeq None } | "<=." { Ast.BLeq (Some $1) } - | ">=" { Ast.BGeq None } | ">=." { Ast.BGeq (Some $1) } - -expr6: - | expr7 { $1 } - | expr6 op6 expr7 { Ast.EBinOp ($2, $1, $3)} - -%inline op7: - | "+" { Ast.BAdd None } | "+." { Ast.BAdd (Some $1) } - | "-" { Ast.BSub None } | "-." { Ast.BSub (Some $1) } - | "%" { Ast.BMod None } | "%." { Ast.BMod (Some $1) } -expr7: - | expr8 { $1 } - | expr7 op7 expr8 { Ast.EBinOp ($2, $1, $3)} - -%inline op8: - | "*" { Ast.BMul None } | "*." { Ast.BMul (Some $1) } - | "/" { Ast.BDiv None } | "/." { Ast.BDiv (Some $1) } -expr8: - | expr9 { $1 } - | expr8 op8 expr9 { Ast.EBinOp ($2, $1, $3)} - -%inline op9: - | "not" { Ast.UNot } - | "-" { Ast.UNeg None } | "-." { Ast.UNeg (Some $1) } -expr9: - | expr10 { $1 } - | op9 expr9 { Ast.EUnOp ($1, $2)} - -%inline op10: - | "**" { Ast.BPow None } | "**." { Ast.BPow (Some $1) } -expr10: - | expr11 { $1 } - | expr11 op10 expr10 { Ast.EBinOp ($2, $1, $3)} - -expr11: - | expr12 { $1 } - | expr11 alias(ty1) { Ast.ECast ($1, $2) } - -%inline expr12: - | expr13 { $1 } - | expr14 { $1 } - -expr13: - | expr15 { $1 } - | expr15 paren(separated_llist_trailing(",", expr1)) - { Ast.ECall ($1, $2) } - -expr14: - | expr12 "." index - { Ast.EProject ($1, $3) } - | expr12 "." name - { Ast.EAccess ($1, $3) } - | expr12 brack(expr1) - { Ast.ESelect ($1, $2) } - | expr12 "." name paren(separated_llist_trailing(",", expr1)) - { Ast.EInvoke ($1, $3, $4) } - -%inline expr15: - | paren(expr0) - { $1 } - | paren(binop) - { Ast.EBinOpRef ($1) } - | block - { Ast.EBlock $1 } - | lit - { Ast.ELit $1 } - | path loption(qualify(brack(tys))) - { Ast.EPath ($1, $2) } - | "[" separated_llist_trailing(",", expr0) tail(expr0)? "]" - { Ast.EArray ($2, $3) } - | "[" expr0 ";" for_generator ";" separated_llist(";", clause) "]" - { Ast.ECompr ($2, $4, $6) } - | tuple(expr0) - { Ast.ETuple $1 } - | record(expr0) - { Ast.ERecord $1 } - | "if" expr2 block else_block? - { Ast.EIf ($2, $3, $4) } - | "if" "val" pat0 "=" expr1 block else_block? - { Ast.EIfVal ($3, $5, $6, $7) } - | "match" expr1 brace(arms) - { Ast.EMatch ($2, $3) } - | "loop" block - { Ast.ELoop $2 } - | "while" expr1 block - { Ast.EWhile ($2, $3) } - | "while" "val" pat0 "=" expr1 block - { Ast.EWhileVal ($3, $5, $6) } - | "for" pat0 "in" expr1 block - { Ast.EFor ($2, $4, $5) } - | "from" separated_nonempty_llist(",", scan) brace(nonempty_llist(step)) - { Ast.EFrom ($2, $3) } - | "_" - { Ast.EAnon } - -%inline scan: pat0 scankind expr1 { ($1, $2, $3) } -%inline scankind: - | "in" { Ast.ScIn } - | "=" { Ast.ScEq } - -%inline step: - | "where" expr1 - { Ast.SWhere $2 } - | "join" scan join_on? - { Ast.SJoin ($2, $3) } - | "group" separated_nonempty_llist(",", expr1) window? loption(reduce) - { Ast.SGroup ($2, $3, $4) } - | "order" separated_nonempty_llist(",", pair(expr1, order)) - { Ast.SOrder $2 } - | "yield" expr1 - { Ast.SYield $2 } - -%inline window: "window" window_step? window_duration { ($2, $3) } -%inline window_step: "step" expr1 { $2 } -%inline window_duration: "duration" expr1 { $2 } -%inline join_on: "on" expr1 { $2 } -%inline reduce: "reduce" separated_nonempty_llist(",", agg) { $2 } - -%inline order: - | { Ast.OAsc } - | "desc" { Ast.ODesc } - -%inline agg: expr1 aggof? { ($1, $2) } -%inline aggof: "of" expr1 { $2 } - -%inline qualify(x): "::" x { $2 } -%inline tail(x): "|" x { $2 } - -%inline clause: - | for_generator { let (x0, x1) = $1 in Ast.CFor (x0, x1) } - | guard { Ast.CIf ($1) } - -%inline for_generator: "for" pat0 "in" expr0 { ($2, $4) } -%inline guard: "if" expr0 { $2 } - -%inline else_block: "else" block { $2 } - -%inline arms: separated_nonempty_llist_trailing(",", arm) { $1 } -%inline arm: pat0 "=>" expr0 { ($1, $3) } - -%inline block: "{" stmts expr0? "}" { ($2, $3) } - -%inline stmts: llist(stmt) { $1 } -%inline stmt: - | ";" - { Ast.SNoop } - | expr0 ";" - { Ast.SExpr $1 } - | "val" param "=" expr0 ";" - { Ast.SVal ($2, $4) } - | "var" name annot(ty0)? "=" expr0 ";" - { Ast.SVar (($2, $3), $5) } - -%inline pats: separated_nonempty_llist(",", pat0) { $1 } -pat0: - | pat0 "or" pat1 - | pat1 { $1 } - -pat1: - | lit - { Ast.PConst $1 } - | name - { Ast.PVar $1 } - | path paren(pats) - { Ast.PUnwrap ($1, $2) } - | tuple(pat0) - { Ast.PTuple $1 } - | record(pat0) - { Ast.PRecord $1 } - | "_" - { Ast.PIgnore } - -%inline tys: separated_nonempty_llist(",", ty0) { $1 } -ty0: - | ty1 - { $1 } - | "fun" paren(tys) ":" ty0 - { Ast.TFunc ($2, $4) } - -ty1: - | path loption(brack(tys)) - { Ast.TPath ($1, $2) } - | tuple(ty0) - { Ast.TTuple $1 } - | record(ty0) - { Ast.TRecord $1 } - | brack(ty0) - { Ast.TArray $1 } - -%inline tuple(x): "(" x "," separated_llist_trailing(",", x) ")" - { $2::$4 } - -%inline record(x): "#{" fields(x) tail(x)? "}" - { ($2, $3) } - -%inline fields(x): separated_llist_trailing(",", field(x)) { $1 } -%inline field(x): - | name ":" x - { ($1, Some $3) } - | name - { ($1, None) } - -%inline lit: - | Bool { Ast.LBool $1 } - | Char { Ast.LChar $1 } - | Int { Ast.LInt ($1, None) } - | Float { Ast.LFloat ($1, None) } - | IntSuffix { Ast.LInt (fst $1, Some (snd $1)) } - | FloatSuffix { Ast.LFloat (fst $1, Some (snd $1)) } - | "unit" { Ast.LUnit } - | String { Ast.LString $1 } diff --git a/arc-lang/src/pretty.ml b/arc-lang/src/pretty.ml deleted file mode 100644 index 89691ec48..000000000 --- a/arc-lang/src/pretty.ml +++ /dev/null @@ -1,134 +0,0 @@ - -module Ctx = struct - type 'a t = { - indent: int; - show_types: bool; - show_externs: bool; - show_parens: bool; - data: 'a; - } - - let indent ctx = - { ctx with indent = ctx.indent + 1 } - - let make show_types show_externs show_parens data = { - indent = 0; - show_types; - show_externs; - show_parens; - data; - } - - let brief = make false false false () - let typed = make true false false () - let verbose = make true true true () - - let brief_with_data data = make false false false data - let typed_with_data data = make true false false data - let verbose_with_data data = make true true true data - -end - -let pr fmt = Printf.printf fmt -let prr s = Printf.printf "%s" s - -let rec pr_sep sep f l ctx = - match l with - | [x] -> f x ctx - | [] -> () - | h::t -> - f h ctx; - pr sep; - pr_sep sep f t ctx - -let pr_list f l ctx = - pr_sep ", " f l ctx - -let pr_indent (ctx:'a Ctx.t) = - Printf.printf "\n"; - let rec pr_indent i = match i with - | 0 -> () - | i -> - Printf.printf " "; - pr_indent (i - 1) - in - pr_indent ctx.indent - -let pr_delim l r f ctx = - pr l; - f ctx; - pr r - -let pr_paren f ctx = - pr_delim "(" ")" f ctx - -let pr_brack f ctx = - pr_delim "[" "]" f ctx - -let pr_brace f ctx = - pr_delim "{" "}" f ctx - -let pr_angle f ctx = - pr_delim "<" ">" f ctx - -let pr_quote f ctx = - pr_delim "\"" "\"" f ctx - -and pr_name x _ctx = - pr "%s" x - -let pr_field_opt f (x, a) ctx = - pr_name x ctx; - match a with - | Some a -> - pr ": "; - f a ctx; - | None -> () - -let pr_field f (x, a) ctx = - pr_name x ctx; - pr ": "; - f a ctx - -let rec pr_path xs ctx = - match xs with - | [] -> - () - | [h] -> - pr "%s" h; - | h::t -> - pr "%s::" h; - pr_path t ctx; - -and pr_fields_opt f fs ctx = pr_list (pr_field_opt f) fs ctx - -and pr_fields f fs ctx = pr_list (pr_field f) fs ctx - -and pr_var x ctx = - pr_name x ctx - -and path_to_str xs = - match xs with - | [] -> "" - | x::xs -> Printf.sprintf "::%s%s" x (path_to_str xs); - -and pr_decorator d ctx = - pr "@"; - pr_brace (pr_fields_opt pr_lit d) ctx; - ctx |> pr_indent; - -and pr_annot (x, l) ctx = - pr_name x ctx; - pr ":"; - pr_lit l ctx; - -and pr_lit l _ctx = - match l with - | Ast.LInt (c, Some s) -> pr "%d%s" c s; - | Ast.LInt (c, None) -> pr "%d" c - | Ast.LFloat (c, Some s) -> pr "%f%s" c s; - | Ast.LFloat (c, None) -> pr "%f" c; - | Ast.LBool c -> pr "%b" c; - | Ast.LUnit -> pr "unit"; - | Ast.LString c -> pr "\"%s\"" c - | Ast.LChar c -> pr "%c" c diff --git a/arc-lang/src/pretty_ast.ml b/arc-lang/src/pretty_ast.ml deleted file mode 100644 index 89ef04e07..000000000 --- a/arc-lang/src/pretty_ast.ml +++ /dev/null @@ -1,532 +0,0 @@ -open Ast -open Utils -open Pretty - -let pr_tail f a ctx = - begin match a with - | Some a -> - pr "|"; - f a ctx; - | None -> - () - end - -let rec pr_ast (ast:Ast.ast) debug = - let ctx = if debug = Debug.Verbose then - Ctx.verbose - else - Ctx.brief - in - ast |> filter (show_item ctx) |> List.iter (fun i -> pr_item i ctx); - pr "\n"; - -and show_item (ctx:'a Ctx.t) i = - match i with - | IExternType _ | IExternDef _ when not ctx.show_externs -> false - | _ -> true - -and pr_generics gs ctx = - if gs != [] then begin - pr_brack (pr_list pr_generic gs) ctx; - end; - -and pr_generic x ctx = - pr_name x ctx; - -and pr_item i ctx = - ctx |> pr_indent; - match i with - | IVal (d, x, t, e) -> - pr_decorator d ctx; - pr "val "; - pr_name x ctx; - pr_type_annot t ctx; - pr " = "; - pr_expr e ctx; - pr ";"; - | IEnum (d, x, gs, xss) -> - pr_decorator d ctx; - pr "enum "; - pr_name x ctx; - pr_generics gs ctx; - pr " {"; - pr_list pr_variant xss (ctx |> Ctx.indent); - ctx |> pr_indent; - pr "}"; - | IExternDef (d, x, gs, ts, t) -> - pr_decorator d ctx; - pr "extern fun "; - pr_def_name x ctx; - pr_generics gs ctx; - pr_paren (pr_types ts) ctx; - pr ": "; - pr_type_annot t ctx; - pr ";"; - | IExternType (d, x, gs) -> - pr_decorator d ctx; - pr "extern type "; - pr_name x ctx; - pr_generics gs ctx; - pr ";"; - | IDef (d, x, gs, ps, t0, b) -> - pr_decorator d ctx; - pr "fun "; - pr_def_name x ctx; - pr_generics gs ctx; - pr_params ps ctx; - pr_type_annot t0 ctx; - pr_body b ctx; - | ITask (d, x, gs, ps0, ps1, b) -> - pr_decorator d ctx; - pr "task "; - pr_def_name x ctx; - pr_generics gs ctx; - pr_params ps0 ctx; - pr ":"; - pr_params ps1 ctx; - pr_body b ctx; - | ITypeAlias (a, x, gs, t) -> - pr_decorator a ctx; - pr "type "; - pr_name x ctx; - pr_generics gs ctx; - pr " = "; - pr_type t ctx; - pr ";"; - | IMod (a, x, is) -> - pr_decorator a ctx; - pr "mod "; - pr_name x ctx; - pr " {"; - pr_sep "" pr_item is ctx; - pr "}"; - | IUse (a, xs, x) -> - pr_decorator a ctx; - pr "use "; - pr_path xs ctx; - begin match x with - | Some x -> pr_name x ctx; - | None -> () - end; - pr ";"; - | IClass (d, x, gs, ds) -> - pr_decorator d ctx; - pr "class "; - pr_name x ctx; - pr_generics gs ctx; - pr_decls ds ctx; - | IInstance (d, gs, xs, ts, ds) -> - pr_decorator d ctx; - pr "instance "; - pr_generics gs ctx; - pr_path xs ctx; - pr ": "; - pr_type_args ts ctx; - pr_defs ds ctx; - -and pr_def_name d ctx = - match d with - | Ast.DName x -> pr_name x ctx; - | Ast.DUnOp op -> pr_unop op ctx; - | Ast.DBinOp op -> pr_binop op ctx; - -and pr_type_args ts ctx = - if ts != [] then begin - pr "["; - pr_list pr_type ts ctx; - pr "]"; - end - -and pr_decls ds ctx = - pr " {"; - pr_sep "" pr_decl ds ctx; - pr "}"; - -and pr_decl (x, gs, ps, t) ctx = - pr "def "; - pr_name x ctx; - pr_generics gs ctx; - pr_params ps ctx; - pr_type_annot t ctx; - pr ";"; - -and pr_defs ds ctx = - if ds != [] then begin - pr " {"; - pr_sep "" pr_def ds ctx; - pr "}"; - end; - -and pr_def (x, gs, ps, t, b) ctx = - pr "def "; - pr_name x ctx; - pr_generics gs ctx; - pr_params ps ctx; - pr_type_annot t ctx; - pr " "; - pr_block b ctx; - -and pr_body b ctx = - match b with - | Some b -> - pr " "; - pr_block b ctx - | None -> pr ";" - -and pr_variant (x, ts) ctx = - ctx |> pr_indent; - pr_name x ctx; - match ts with - | [] -> () - | ts -> - pr_paren (pr_types ts) ctx - -and pr_port (x, t) ctx = - ctx |> pr_indent; - pr_name x ctx; - pr_paren (pr_type t) ctx; - -and pr_params ps ctx = - pr_paren (pr_list pr_param ps) ctx; - -and pr_param (p, t) ctx = - pr_pat p ctx; - pr_type_annot t ctx; - -and pr_pat p ctx = - match p with - | PIgnore -> pr "_" - | POr (p0, p1) -> - pr_pat p0 ctx; - pr " | "; - pr_pat p1 ctx; - | PRecord (fps, p) -> - pr "#{"; - pr_list (pr_field_opt pr_pat) fps ctx; - pr_tail pr_pat p ctx; - pr "}"; - | PTuple ps -> - pr "("; - pr_list pr_pat ps ctx; - pr ",)"; - | PConst l -> - pr_lit l ctx; - | PVar x -> - pr_name x ctx; - | PUnwrap (xs, ps) -> - pr_path xs ctx; - pr_paren (pr_list pr_pat ps) ctx; - -and pr_type_annot t ctx = - match t with - | Some t -> - pr ": "; - pr_type t ctx - | None -> () - -and pr_types ts ctx = - pr_list pr_type ts ctx; - -and pr_type t ctx = - match t with - | TFunc (ts, t) -> - pr "fun"; - pr_paren (pr_types ts) ctx; - pr ": "; - pr_type t ctx; - | TTuple ts -> - pr "("; - pr_list pr_type ts ctx; - pr ",)"; - | TRecord (fts, t) -> - pr "#{"; - pr_list (pr_field_opt pr_type) fts ctx; - pr_tail pr_type t ctx; - pr "}"; - | TPath (xs, ts) -> - pr_type_path xs ts ctx; - | TArray t -> - pr_delim "[" "]" (pr_type t) ctx; - -and pr_type_path xs ts ctx = - pr_path xs ctx; - if ts != [] then begin - pr_delim "[" "]" (pr_list pr_type ts) ctx; - end - -and pr_block (ss, e) ctx = - let ctx' = ctx |> Ctx.indent in - pr "{"; - begin match (ss, e) with - | ([], None) -> pr " " - | ([], Some e) -> - pr " "; - pr_expr e ctx'; - pr " "; - | (ss, Some e) -> - pr_sep ";" pr_stmt ss ctx'; - pr ";"; - ctx' |> pr_indent; - pr_expr e ctx'; - ctx |> pr_indent; - | (ss, None) -> - pr_sep ";" pr_stmt ss ctx'; - pr ";"; - ctx |> pr_indent - end; - pr "}"; - -and pr_stmt s ctx = - ctx |> pr_indent; - match s with - | SNoop -> (); - | SVal ((p, t), e) -> - pr "val "; - pr_pat p ctx; - pr_type_annot t ctx; - pr " = "; - pr_expr e ctx; - | SVar ((x, t), e) -> - pr "var "; - pr_name x ctx; - pr_type_annot t ctx; - pr " = "; - pr_expr e ctx; - | SExpr e -> - pr_expr e ctx; - -and pr_expr e ctx = - let pr_expr e = - match e with - | EWhile (e, b) -> - pr "while "; - pr_expr e ctx; - pr " "; - pr_block b ctx; - | EWhileVal (p, e, b) -> - pr "while val "; - pr_pat p ctx; - pr " = "; - pr_expr e ctx; - pr " "; - pr_block b ctx; - | EAnon -> - pr "_" - | EBinOpRef op -> - pr_paren (pr_binop op) ctx - | EAccess (e, x) -> - pr_expr e ctx; - pr "."; - pr_name x ctx; - | EArray (vs, v) -> - pr "["; - pr_list pr_expr vs ctx; - pr_tail pr_expr v ctx; - pr "]"; - | EBinOp (op, v0, v1) -> - pr_expr v0 ctx; - pr " "; - pr_binop op ctx; - pr " "; - pr_expr v1 ctx; - | ECall (e, vs) -> - pr_expr e ctx; - pr_paren (pr_list pr_expr vs) ctx; - | EInvoke (e, x, vs) -> - pr_expr e ctx; - pr "."; - pr_name x ctx; - pr_paren (pr_list pr_expr vs) ctx; - | ECast (e, t) -> - pr_expr e ctx; - pr " as "; - pr_type t ctx; - | EIf (e, b0, b1) -> - pr "if "; - pr_expr e ctx; - pr " "; - pr_block b0 ctx; - begin match b1 with - | Some b1 -> - pr " else "; - pr_block b1 ctx; - | None -> () - end - | EIfVal (p, e, b0, b1) -> - pr "if let "; - pr_pat p ctx; - pr " = "; - pr_expr e ctx; - pr " "; - pr_block b0 ctx; - begin match b1 with - | Some b1 -> - pr " else "; - pr_block b1 ctx; - | None -> () - end - | ELit l -> - pr_lit l ctx; - | ELoop b -> - pr "loop "; - pr_block b ctx; - | EOn receivers -> - pr "on "; - pr "{"; - pr_sep "," pr_receiver receivers (ctx |> Ctx.indent); - ctx |> pr_indent; - pr "}"; - | EReceive e -> - pr "receive "; - pr_expr e ctx; - | EEmit (e0, e1) -> - pr_expr e0 ctx; - pr "!"; - pr_expr e1 ctx; - | ESelect (e0, e1) -> - pr_expr e0 ctx; - pr "["; - pr_expr e1 ctx; - pr "]"; - | ERecord (fvs, v) -> - pr "#{"; - pr_list (pr_field_opt pr_expr) fvs ctx; - pr_tail pr_expr v ctx; - pr "}"; - | EUnOp (op, e) -> - pr_unop op ctx; - pr_expr e ctx; - | EReturn e -> - begin match e with - | Some e -> - pr "return "; - pr_expr e ctx; - | None -> - pr "return" - end - | EBreak e -> - begin match e with - | Some e -> - pr "break "; - pr_expr e ctx; - | None -> - pr "break" - end - | EContinue -> - pr "continue" - | ETuple es -> - pr "("; - pr_list pr_expr es ctx; - pr ",)"; - | EProject (e, i) -> - pr_expr e ctx; - pr ".%d" i; - | EBlock (b) -> - pr_block b ctx; - | EFunc (ps, e) -> - pr "fun"; - pr_paren (pr_list pr_param ps) ctx; - pr ": "; - pr_block e ctx; - | ETask (ps, e) -> - pr "task: "; - pr_params ps ctx; - pr_block e ctx; - | EFor (p, e, b) -> - pr "for "; - pr_pat p ctx; - pr " in "; - pr_expr e ctx; - pr_block b ctx; - | EMatch (e, arms) -> - pr "match "; - pr_expr e ctx; - pr " {"; - pr_sep "," pr_arm arms (ctx |> Ctx.indent); - ctx |> pr_indent; - pr "}"; - | ECompr (e0, (p, e), cs) -> - pr "["; - pr_expr e0 ctx; - pr " "; - pr "on "; - pr_pat p ctx; - pr " in "; - pr_expr e ctx; - pr_sep " " pr_clause cs ctx; - pr "]"; - | EPath (xs, ts) -> - pr_path xs ctx; - if ts != [] then begin - pr "::"; - pr_brack (pr_list pr_type ts) ctx - end - | EFrom _ -> todo () - in - if ctx.show_types then begin - pr_paren pr_expr e; - end else - pr_expr e - -and pr_clause c ctx = - match c with - | CFor (p, e) -> - pr " for "; - pr_pat p ctx; - pr " in "; - pr_expr e ctx; - | CIf e -> - pr " if "; - pr_expr e ctx; - -and pr_receiver (p, e0, e1) ctx = - pr_pat p ctx; - pr " in "; - pr_expr e0 ctx; - pr " => "; - pr_expr e1 ctx - -and pr_arm (p, e) ctx = - ctx |> pr_indent; - pr_pat p ctx; - pr " => "; - pr_expr e ctx; - -and pr_suffixed x s _ctx = - match s with - | Some s -> - pr "%s%s" x s - | None -> - pr "%s" x - -and pr_binop op _ctx = - match op with - | BAdd s -> pr_suffixed "+" s _ctx - | BAnd -> pr "and" - | BBand -> pr "band" - | BBor -> pr "bor" - | BBxor -> pr "bxor" - | BDiv s -> pr_suffixed "/" s _ctx - | BEq s -> pr_suffixed "==" s _ctx - | BGeq s -> pr_suffixed ">=" s _ctx - | BGt s -> pr_suffixed ">" s _ctx - | BLeq s -> pr_suffixed "<=" s _ctx - | BLt s -> pr_suffixed "<" s _ctx - | BMod s -> pr_suffixed "%%" s _ctx - | BMul s -> pr_suffixed "*" s _ctx - | BMut -> pr "=" - | BNeq s -> pr_suffixed "!=" s _ctx - | BOr -> pr "|" - | BPow s -> pr_suffixed "**" s _ctx - | BSub s -> pr_suffixed "-" s _ctx - | BXor -> pr "xor" - | BIn -> pr "in" - | BRExc -> pr ".." - | BRInc -> pr "..=" - | BBy -> pr "by" - | BNotIn -> pr "not in" - -and pr_unop op _ctx = - match op with - | UNeg s -> pr_suffixed "-" s _ctx - | UNot -> pr "not" diff --git a/arc-lang/src/pretty_hir.ml b/arc-lang/src/pretty_hir.ml deleted file mode 100644 index 6de6452ad..000000000 --- a/arc-lang/src/pretty_hir.ml +++ /dev/null @@ -1,258 +0,0 @@ -open Hir -open Pretty -open Utils - -let rec pr_hir (hir:Hir.hir) debug = - let ctx = if debug = Debug.Verbose then - Ctx.verbose - else - Ctx.brief - in - hir |> filter (show_item ctx) |> List.iter (fun i -> pr_item i ctx); - pr "\n"; - -and show_item (ctx:'a Ctx.t) (_, i) = - match i with - | IExternType _ | IExternDef _ when not ctx.show_externs -> false - | _ -> true - -and pr_item (xs, i) ctx = - ctx |> pr_indent; - match i with - | IVal (d, t, b) -> - pr_decorator d ctx; - pr "val "; - pr_path xs ctx; - pr ": "; - pr_type t ctx; - pr " = "; - pr_block b (ctx |> Ctx.indent); - | IEnum (d, gs, xss) -> - pr_decorator d ctx; - pr "enum "; - pr_path xs ctx; - pr_generics gs ctx; - pr " {"; - (ctx |> Ctx.indent) |> pr_indent; - pr_list pr_path xss (ctx |> Ctx.indent); - ctx |> pr_indent; - pr "}"; - | IExternDef (d, gs, ts, t) -> - pr_decorator d ctx; - pr "extern def "; - pr_path xs ctx; - pr_generics gs ctx; - pr_paren (pr_types ts) ctx; - pr ": "; - pr_type t ctx; - pr ";"; - | IExternType (d, gs) -> - pr_decorator d ctx; - pr "extern type "; - pr_path xs ctx; - pr_generics gs ctx; - pr ";"; - | IDef (d, gs, ps, t, b) -> - pr_decorator d ctx; - pr "def "; - pr_path xs ctx; - pr_generics gs ctx; - pr_params ps ctx; - pr ": "; - pr_type t ctx; - pr " "; - pr_block b ctx; - | ITask (d, gs, ps0, ps1, b) -> - pr_decorator d ctx; - pr "task "; - pr_path xs ctx; - pr_generics gs ctx; - pr_params ps0 ctx; - pr ": "; - pr_params ps1 ctx; - pr " "; - pr_block b ctx; - | ITypeAlias (d, gs, t) -> - pr_decorator d ctx; - pr "type "; - pr_path xs ctx; - pr_generics gs ctx; - pr " = "; - pr_type t ctx; - pr ";"; - | IVariant t -> - pr "variant "; - pr_path xs ctx; - pr_paren (pr_type t) ctx; - pr ";"; - | IClass _ -> () - | IClassDecl _ -> () - | IInstance _ -> () - | IInstanceDef _ -> () - -and pr_interface (xs, ts) ctx = - pr_path xs ctx; - pr_brack (pr_types ts) ctx; - -and pr_generics gs ctx = - if gs != [] then begin - pr_brack (pr_list pr_generic gs) ctx; - end - -and pr_generic g ctx = - pr_name g ctx; - -and pr_params ps ctx = - pr_paren (pr_list pr_param ps) ctx - -and pr_param (x, t) ctx = - pr_name x ctx; - pr ": "; - pr_type t ctx; - -and pr_types ts ctx = - pr_list pr_type ts ctx; - -and pr_type t ctx = - match t with - | TFunc (ts, t) -> - pr "fun"; - pr_paren (pr_list pr_type ts) ctx; - pr ": "; - pr_type t ctx; - | TRecord t -> - pr "#"; - pr_brace (pr_type t) ctx; - | TRowEmpty -> - pr "∅" - | TRowExtend ((x, t), r) -> - pr_name x ctx; - pr ": "; - pr_type t ctx; - begin match r with - | TRowEmpty | TVar _ | TGeneric _ -> - pr "|"; - pr_type r ctx; - | _ -> - pr ", "; - pr_type r ctx; - end - | TNominal (xs, ts) -> - pr_path xs ctx; - if ts != [] then begin - pr_brack (pr_types ts) ctx; - end - | TVar x -> pr "'%s" x; - | TGeneric x -> pr "%s" x; - -and pr_block (ss, v) ctx = - let ctx' = ctx |> Ctx.indent in - pr "{"; - if ss != [] then begin - pr_sep ";" pr_ssa ss ctx'; - pr ";"; - end; - ctx' |> pr_indent; - pr_var v ctx'; - ctx |> pr_indent; - pr "}"; - -and pr_ssa (x, t, e) ctx = - ctx |> pr_indent; - pr "val "; - pr_name x ctx; - pr ": "; - pr_type t ctx; - pr " = "; - pr_expr e ctx; - -and pr_name x _ctx = - pr "%s" x; - -and pr_expr e ctx = - match e with - | EAccess (v, x) -> - pr_var v ctx; - pr "."; - pr_name x ctx; - | EUpdate (v0, x, v1) -> - pr_var v0 ctx; - pr "."; - pr_name x ctx; - pr " = "; - pr_var v1 ctx; - | ECall (v, vs) -> - pr_var v ctx; - pr_paren (pr_list pr_var vs) ctx; - | ECast (v, t) -> - pr_var v ctx; - pr " as "; - pr_type t ctx; - | EReceive v -> - pr "receive "; - pr_var v ctx; - | EEmit (v0, v1) -> - pr_var v0 ctx; - pr " ! "; - pr_var v1 ctx; - | EEnwrap (xs, ts, v) -> - pr "enwrap["; - pr_path xs ctx; - if ts != [] then begin - pr "["; - pr_list pr_type ts ctx; - pr "]"; - end; - pr "]"; - pr_paren (pr_var v) ctx; - | EIf (v, b0, b1) -> - pr "if "; - pr_var v ctx; - pr " "; - pr_block b0 ctx; - pr " else "; - pr_block b1 ctx; - | EIs (xs, ts, v) -> - pr "is["; - pr_path xs ctx; - if ts != [] then begin - pr "["; - pr_list pr_type ts ctx; - pr "]"; - end; - pr "]"; - pr_paren (pr_var v) ctx; - | ELit l -> - pr_lit l ctx; - | ELoop b -> - pr "loop "; - pr_block b ctx; - | EOn _ -> todo () - | ERecord fvs -> - pr "#"; - pr_brace (pr_list (pr_field pr_var) fvs) ctx; - | EUnwrap (xs, ts, v) -> - pr "unwrap["; - pr_path xs ctx; - if ts != [] then begin - pr "["; - pr_list pr_type ts ctx; - pr "]"; - end; - pr "]"; - pr_paren (pr_var v) ctx; - | EReturn v -> - pr "return "; - pr_var v ctx; - | EBreak v -> - pr "break "; - pr_var v ctx; - | EContinue -> - pr "continue" - | EItem (xs, ts) -> - pr_path xs ctx; - if ts != [] then begin - pr "["; - pr_list pr_type ts ctx; - pr "]"; - end diff --git a/arc-lang/src/pretty_mir.ml b/arc-lang/src/pretty_mir.ml deleted file mode 100644 index 222d00075..000000000 --- a/arc-lang/src/pretty_mir.ml +++ /dev/null @@ -1,216 +0,0 @@ -open Mir -open Pretty -open Utils - -let rec pr_mir (mir:Mir.mir) = - let ctx = Ctx.verbose in - mir |> filter (show_item ctx) |> List.iter (fun i -> pr_item i ctx); - pr "\n"; - -and show_item (ctx:'a Ctx.t) (_, i) = - match i with - | IExternType _ | IExternDef _ when not ctx.show_externs -> false - | _ -> true - -and pr_item ((xs, ts), i) ctx = - ctx |> pr_indent; - pr "for "; - pr_brack (pr_types ts) ctx; - pr " "; - match i with - | IVal (d, t, b) -> - pr_decorator d ctx; - pr "val "; - pr_path xs ctx; - pr ": "; - pr_type t ctx; - pr " = "; - pr_block b (ctx |> Ctx.indent); - | IEnum (d, xss) -> - pr_decorator d ctx; - pr "enum "; - pr_path xs ctx; - pr " {"; - ctx |> Ctx.indent |> pr_indent; - pr_list pr_path xss (ctx |> Ctx.indent); - ctx |> pr_indent; - pr "}"; - | IExternDef (d, ts, t) -> - pr_decorator d ctx; - pr "extern def "; - pr_path xs ctx; - pr_paren (pr_types ts) ctx; - pr ": "; - pr_type t ctx; - pr ";"; - | IExternType d -> - pr_decorator d ctx; - pr "extern type "; - pr_path xs ctx; - pr ";"; - | IDef (d, ps, t, b) -> - pr_decorator d ctx; - pr "def "; - pr_path xs ctx; - pr_params ps ctx; - pr ": "; - pr_type t ctx; - pr " "; - pr_block b ctx; - | ITask (d, ps0, ps1, b) -> - pr_decorator d ctx; - pr "task "; - pr_path xs ctx; - pr_params ps0 ctx; - pr ": "; - pr_params ps1 ctx; - pr " "; - pr_block b ctx; - | IVariant t -> - pr "variant "; - pr_path xs ctx; - pr_paren (pr_type t) ctx; - pr ";"; - -and pr_interface (xs, ts) ctx = - pr_path xs ctx; - pr_brack (pr_types ts) ctx; - -and pr_params ps ctx = - pr_paren (pr_list pr_param ps) ctx - -and pr_param (x, t) ctx = - pr_name x ctx; - pr ": "; - pr_type t ctx; - -and pr_types ts ctx = - pr_list pr_type ts ctx; - -and pr_type t ctx = - match t with - | TFunc (ts, t) -> - pr "fun"; - pr_paren (pr_list pr_type ts) ctx; - pr ": "; - pr_type t ctx; - | TRecord fts -> - pr "#"; - pr_brace (pr_list (pr_field pr_type) fts) ctx; - | TNominal (xs, ts) -> - pr_path xs ctx; - if ts != [] then begin - pr_brack (pr_types ts) ctx; - end - -and pr_block (ss, v) ctx = - let ctx' = ctx |> Ctx.indent in - pr "{"; - if ss != [] then begin - pr_sep ";" pr_ssa ss ctx'; - pr ";"; - end; - ctx' |> pr_indent; - pr_var v ctx'; - ctx |> pr_indent; - pr "}"; - -and pr_ssa (x, t, e) ctx = - ctx |> pr_indent; - pr "val "; - pr_name x ctx; - pr ": "; - pr_type t ctx; - pr " = "; - pr_expr e ctx; - -and pr_name x _ctx = - pr "%s" x; - -and pr_expr e ctx = - match e with - | EAccess (v, x) -> - pr_var v ctx; - pr "."; - pr_name x ctx; - | EUpdate (v0, x, v1) -> - pr_var v0 ctx; - pr "."; - pr_name x ctx; - pr " = "; - pr_var v1 ctx; - | ECall (v, vs) -> - pr_var v ctx; - pr_paren (pr_list pr_var vs) ctx; - | ECast (v, t) -> - pr_var v ctx; - pr " as "; - pr_type t ctx; - | EEmit (v0, v1) -> - pr_var v0 ctx; - pr " ! "; - pr_var v1 ctx; - | EEnwrap (xs, ts, v) -> - pr "enwrap["; - pr_path xs ctx; - if ts != [] then begin - pr "["; - pr_list pr_type ts ctx; - pr "]"; - end; - pr "]"; - pr_paren (pr_var v) ctx; - | EIf (v, b0, b1) -> - pr "if "; - pr_var v ctx; - pr " "; - pr_block b0 ctx; - pr " else "; - pr_block b1 ctx; - | EIs (xs, ts, v) -> - pr "is["; - pr_path xs ctx; - if ts != [] then begin - pr "["; - pr_list pr_type ts ctx; - pr "]"; - end; - pr "]"; - pr_paren (pr_var v) ctx; - | ELit l -> - pr_lit l ctx; - | ELoop b -> - pr "loop "; - pr_block b ctx; - | EReceive v -> - pr "receive "; - pr_var v ctx; - | ERecord fvs -> - pr "%%{"; - pr_list (pr_field pr_var) fvs ctx; - pr "}"; - | EUnwrap (xs, ts, v) -> - pr "unwrap["; - pr_path xs ctx; - if ts != [] then begin - pr "["; - pr_list pr_type ts ctx; - pr "]"; - end; - pr "]"; - pr_paren (pr_var v) ctx; - | EReturn v -> - pr "return "; - pr_var v ctx; - | EBreak v -> - pr "break "; - pr_var v ctx; - | EContinue -> - pr "continue" - | EItem (xs, ts) -> - pr_path xs ctx; - if ts != [] then begin - pr "["; - pr_list pr_type ts ctx; - pr "]"; - end diff --git a/arc-lang/src/pretty_mlir.ml b/arc-lang/src/pretty_mlir.ml deleted file mode 100644 index 8f43dda51..000000000 --- a/arc-lang/src/pretty_mlir.ml +++ /dev/null @@ -1,300 +0,0 @@ -open Utils -open Pretty - -let rec pr_mlir (mlir, stdlib) = - let ctx = Ctx.brief in - ctx |> pr_indent; - pr "module @toplevel {"; - ctx |> pr_indent; - ctx |> pr_indent; - prr stdlib; - let ctx' = ctx |> Ctx.indent in - mlir |> List.iter (fun i -> pr_item i ctx'); - ctx |> pr_indent; - pr "}\n"; - -and pr_item (x, i) ctx = - ctx |> pr_indent; - match i with - | Mlir.IAssign _ -> - todo () - | Mlir.IExternFunc (x_rust, ps, t) -> - pr "func.func private @"; - pr_path x ctx; - pr_params ps ctx; - pr " -> "; - pr_type t ctx; - pr " attributes { rust.declare, rust.annotation=\"#[rewrite(unmangled = \\\"%s\\\")]\"}" x_rust - | Mlir.IFunc (ps, t, b) -> - pr "func.func @"; - pr_path x ctx; - pr_params ps ctx; - begin match t with - | Some t -> pr_return_type t ctx; - | None -> () - end; - pr " attributes { rust.declare"; - begin if x = "main" then - pr ", rust.annotation = \"#[rewrite(main)]\""; - end; - pr " } "; - pr_block b ctx; - | Mlir.ITask (ps0, ps1, b) -> - pr "func.func @"; - pr_path x ctx; - pr_params ps0 ctx; - pr_params ps1 ctx; - pr " "; - pr_block b ctx; - -and pr_params ps ctx = - pr_paren (pr_list pr_param ps) ctx - -and pr_param (x, t) ctx = - prr "%"; - pr_name x ctx; - pr ": "; - pr_type t ctx; - -and pr_path x _ctx = - pr "%s" x; - -and pr_types ts ctx = - pr_list pr_type ts ctx - -and pr_return_type t ctx = - pr " -> "; - begin match t with - | Mlir.TFunc _ -> pr_paren (pr_type t) ctx - | _ -> pr_type t ctx; - end - -and pr_type t ctx = - match t with - | Mlir.TFunc (ts, t) -> - pr_paren (pr_types ts) ctx; - pr_return_type t ctx; - | Mlir.TRecord fts -> - pr "!arc.struct"; - pr_angle (pr_list (pr_field pr_type) fts) ctx; - | Mlir.TEnum vts -> - pr "!arc.enum"; - pr_angle (pr_list (pr_field pr_type) vts) ctx; - | Mlir.TAdt x -> - pr "!arc.adt"; - pr "<"; - pr_quote (pr_path x) ctx; - pr ">"; - | Mlir.TGAdt (x, ts) -> - pr "!arc.generic_adt"; - pr "<"; - pr_quote (pr_path x) ctx; - pr ", "; - pr_types ts ctx; - pr ">"; - | Mlir.TStream t -> - pr "!arc.stream"; - pr_angle (pr_type t) ctx; - | Mlir.TNative x -> - pr "%s" x; - -and pr_block ss ctx = - pr "{"; - pr_sep "" pr_ssa ss (ctx |> Ctx.indent); - ctx |> pr_indent; - pr "}"; - -and pr_lhs lhs ctx = - match lhs with - | Some (v, _) -> - pr_var v ctx; - pr " = "; - | _ -> () - -and pr_ssa (lhs, e) ctx = - ctx |> pr_indent; - pr_lhs lhs ctx; - - match e with - | Mlir.EAccess (a0, x1) -> - pr_quote pr "arc.struct_access"; - pr_paren (pr_arg_var a0) ctx; - pr " { field = "; - pr_quote (pr_name x1) ctx; - pr " } : "; - pr_paren (pr_arg_type a0) ctx; - pr " -> "; - pr_lhs_type lhs ctx; - | Mlir.EUpdate (_a0, _x1, _a1) -> - todo () - | Mlir.ECall (a0, args) -> - pr "call_indirect "; - pr_arg_var a0 ctx; - pr_paren (pr_list pr_arg_var args) ctx; - pr " : "; - pr_arg_type a0 ctx; - | Mlir.EReceive a0 -> - pr "arc.receive"; - pr_paren (pr_arg_var a0) ctx; - pr " : "; - pr_arg_type a0 ctx; - pr " -> "; - pr_paren (pr_lhs_type lhs) ctx; - | Mlir.EEmit (a0, a1) -> - pr "arc.emit"; - pr_paren (fun ctx -> - pr_arg_var a0 ctx; - prr ", "; - pr_arg_var a1 ctx; - ) ctx; - pr " : "; - pr_arg_type a1 ctx; - pr " -> "; - pr_lhs_type lhs ctx; - | Mlir.EEnwrap (x, a0) -> - pr "arc.make_enum"; - begin match a0 with - | None -> pr "()" - | Some a0 -> pr_paren (pr_arg a0) ctx; - end; - pr " as "; - pr_quote (pr_path x) ctx; - pr " : "; - pr_lhs_type lhs ctx; - | Mlir.EIs (x, a0) -> - pr "arc.enum_check"; - pr_paren (pr_arg a0) ctx; - pr " is "; - pr_quote (pr_path x) ctx; - pr " : "; - pr_lhs_type lhs ctx; - | Mlir.EUnwrap (x, a0) -> - pr "arc.enum_access "; - pr_quote (pr_path x) ctx; - pr " in "; - pr_paren (pr_arg a0) ctx; - pr " : "; - begin match lhs with - | Some (_, t) -> pr_type t ctx - | None -> pr "none" - end; - | Mlir.EIf (a0, b0, b1) -> - pr_quote pr "arc.if"; - pr_paren (pr_arg_var a0) ctx; - pr_paren (fun ctx -> - pr_block b0 ctx; - pr ","; - pr_block b1 ctx; - ) ctx; - pr " : (i1) -> "; - pr_lhs_type lhs ctx; - | Mlir.EConst c -> - begin match c with - | Mlir.CInt d -> - pr "arc.constant %d : " d; - pr_lhs_type lhs ctx; - | Mlir.CFloat f -> - pr "arith.constant %f : " f; - pr_lhs_type lhs ctx; - | Mlir.CBool b -> - pr "arith.constant %b" b; - | Mlir.CFun x -> - pr "constant @%s : " x; - pr_lhs_type lhs ctx; - | Mlir.CAdt s -> - pr "arc.adt_constant \"%s\" : " s; - pr_lhs_type lhs ctx; - end; - | Mlir.ELoop b -> - pr "scf.while : () -> () {"; - ctx |> Ctx.indent |> pr_indent; - pr "%%condition = constant 1 : i1"; - ctx |> Ctx.indent |> pr_indent; - pr "scf.condition(%%condition)"; - ctx |> pr_indent; - pr "} do "; - pr_block b ctx; - | Mlir.ERecord (vs0, ts0) -> - pr "arc.make_struct"; - pr_paren (pr_vars_types vs0 ts0) ctx; - pr " : "; - pr_lhs_type lhs ctx; - | Mlir.EReturn a0 -> - begin match a0 with - | Some a0 -> - pr "return "; - pr_arg_var a0 ctx; - pr " : "; - pr_arg_type a0 ctx; - | None -> - pr "return" - end - | Mlir.EResult a0 -> - pr_quote pr "arc.block.result"; - begin match a0 with - | Some a0 -> - pr_paren (pr_arg_var a0) ctx; - pr " : "; - pr_paren (pr_arg_type a0) ctx; - pr " -> "; - pr_lhs_type lhs ctx; - | None -> - pr "() : () -> ()" - end - | Mlir.EBreak a0 -> - pr_quote pr "arc.loop.break"; - begin match a0 with - | Some a0 -> - pr_paren (pr_arg_var a0) ctx; - pr " : "; - pr_paren (pr_arg_type a0) ctx; - pr " -> "; - pr_lhs_type lhs ctx; - | None -> pr ": () -> ()"; - end - | Mlir.EContinue -> - pr_quote pr "arc.loop.continue"; - pr "() : () -> ()" - | Mlir.EYield -> - pr "scf.yield"; - pr " : () -> ()" - | Mlir.ENoop -> - pr "// noop" - -and pr_vars_types vs0 ts0 ctx = - pr_list pr_var vs0 ctx; - pr " : "; - pr_list pr_type ts0 ctx; - -and pr_name x _ctx = - pr "%s" x; - -and pr_arg a ctx = - pr_arg_var a ctx; - pr " : "; - pr_arg_type a ctx - -and pr_arg_var (v, _) ctx = - pr_var v ctx; - -and pr_arg_type (_, t) ctx = - pr_type t ctx; - -and pr_var v _ctx = - prr "%"; - pr "%s" v; - -and pr_lhs_type v ctx = - match v with - | Some (_, t) -> pr_type t ctx - | None -> pr "()" - -and pr_field_type (x, t) ctx = - pr_name x ctx; - pr ": "; - pr_type t ctx; - -and pr_field_expr (x, v) ctx = - pr_name x ctx; - pr ": "; - pr_arg_var v ctx; diff --git a/arc-lang/src/pretty_table.ml b/arc-lang/src/pretty_table.ml deleted file mode 100644 index 90d3f7ffa..000000000 --- a/arc-lang/src/pretty_table.ml +++ /dev/null @@ -1,29 +0,0 @@ - -let rec pr fmt = Printf.printf fmt - -and pr_table t = - pr "Table {\n"; - t |> List.iter (fun (xs, d) -> - pr " "; - Pretty.pr_path xs Pretty.Ctx.brief; - pr " -> "; - pr_decl d; - pr ";\n" - ); - pr "}\n"; - -and pr_decl d = - match d with - | Table.DItem d -> begin match d with - | Table.DEnum -> pr "Enum" - | Table.DExternDef -> pr "Extern Func" - | Table.DExternType -> pr "Extern Type" - | Table.DDef -> pr "Func" - | Table.DTask -> pr "Task" - | Table.DTypeAlias -> pr "Type Alias" - | Table.DVariant -> pr "Variant" - | Table.DGlobal -> pr "Global" - | Table.DClass -> pr "Class" - | Table.DMod -> pr "Module" - end - | Table.DUse xs -> Pretty.pr_path xs Pretty.Ctx.brief; diff --git a/arc-lang/src/table.ml b/arc-lang/src/table.ml deleted file mode 100644 index 9d123b113..000000000 --- a/arc-lang/src/table.ml +++ /dev/null @@ -1,27 +0,0 @@ -open Ast - -module PathMap = Map.Make( - struct - type t = path - let compare = Stdlib.compare - end -) - -type decl = - | DItem of kind - | DUse of path (* An alias *) -and kind = - | DEnum of arity - | DExternDef of arity - | DExternType of arity - | DDef of arity - | DClass of arity - | DTask of arity - | DTypeAlias of arity * generics * ty - | DVariant of arity - | DGlobal - | DMod -and arity = int -and name = string -and path = name list -and table = decl PathMap.t diff --git a/arc-lang/src/token.ml b/arc-lang/src/token.ml deleted file mode 100644 index 44acbdfbf..000000000 --- a/arc-lang/src/token.ml +++ /dev/null @@ -1,115 +0,0 @@ -type token = - | ParenL - | ParenR - | BrackL - | BrackR - | PoundBraceL - | BraceL - | BraceR - | AngleL - | AngleR -(*= Operators ==============================================================*) - | Bang - | Neq - | Percent - | Star - | StarStar - | Plus - | Comma - | Minus - | Dot - | DotDot - | DotDotEq - | Slash - | Colon - | ColonColon - | Semi - | Leq - | Eq - | EqEq - | Imply - | Geq - | AtSign - | Underscore - | Bar -(*= Float extensions =======================================================*) - | EqEqSuffix of string - | GeqSuffix of string - | GtSuffix of string - | LeqSuffix of string - | LtSuffix of string - | MinusSuffix of string - | NeqSuffix of string - | PercentSuffix of string - | PlusSuffix of string - | SlashSuffix of string - | StarSuffix of string - | StarStarSuffix of string -(*= Keywords ================================================================*) - | And - | As - | Break - | Band - | Bor - | Bxor - | Class - | Continue - | Def - | Desc - | Duration - | Else - | Enum - | Extern - | For - | From - | Fun - | Group - | If - | In - | Instance - | Join - | Loop - | Match - | Mod - | Not - | On - | Or - | Of - | Order - | Return - | Reduce - | Step - | Task - | Type - | Val - | Var - | Where - | Window - | While - | Use - | Xor - | Yield -(*= Identifiers and Literals ================================================*) - | Name of string - | Int of int - | IntSuffix of (int * Ast.int_suffix) - | FloatSuffix of (float * Ast.float_suffix) - | Float of float - | Bool of bool - | Char of char - | String of string - | Unit -(* | DurationNs of int *) -(* | DurationUs of int *) -(* | DurationMs of int *) -(* | DurationS of int *) -(* | DurationM of int *) -(* | DurationH of int *) -(* | DurationD of int *) -(* | DurationW of int *) -(* LitDurationMo, *) -(* LitDurationY, *) -(* | Date of string *) -(* | DateTime of string *) -(* | DateTimeZone of string *) - | Eof diff --git a/arc-lang/src/tokens.mly b/arc-lang/src/tokens.mly deleted file mode 100644 index 258821c10..000000000 --- a/arc-lang/src/tokens.mly +++ /dev/null @@ -1,103 +0,0 @@ -%token ParenL "(" -%token ParenR ")" -%token BrackL "[" -%token BrackR "]" -%token PoundBraceL "#{" -%token BraceL "{" -%token BraceR "}" -%token AngleL "<" -%token AngleR ">" -(*= Operators ==============================================================*) -%token Bang "!" -%token Neq "!=" -%token Percent "%" -%token Star "*" -%token StarStar "**" -%token Plus "+" -%token Comma "," -%token Minus "-" -%token Dot "." -%token DotDot ".." -%token DotDotEq "..=" -%token Slash "/" -%token Colon ":" -%token ColonColon "::" -%token Semi ";" -%token Leq "<=" -%token Geq ">=" -%token Eq "=" -%token EqEq "==" -%token Imply "=>" -%token Underscore "_" -%token Bar "|" -%token AtSign "@" -(*= Float extensions ========================================================*) -%token NeqSuffix "!=." -%token PercentSuffix "%." -%token StarStarSuffix "**." -%token StarSuffix "*." -%token PlusSuffix "+." -%token MinusSuffix "-." -%token SlashSuffix "/." -%token LeqSuffix "<=." -%token EqEqSuffix "==." -%token GeqSuffix ">=." -%token LtSuffix "<." -%token GtSuffix ">." -(*= Keywords ================================================================*) -%token And "and" -%token As "as" -%token Break "break" -%token Band "band" -%token Bor "bor" -%token Bxor "bxor" -%token Class "class" -%token Continue "continue" -%token Def "def" -%token Desc "desc" -%token Duration "duration" -%token Else "else" -%token Enum "enum" -%token Extern "extern" -%token For "for" -%token From "from" -%token Fun "fun" -%token Group "group" -%token If "if" -%token In "in" -%token Instance "instance" -%token Join "join" -%token Loop "loop" -%token Match "match" -%token Mod "mod" -%token Not "not" -%token On "on" -%token Of "of" -%token Or "or" -%token Order "order" -%token Return "return" -%token Reduce "reduce" -%token Step "step" -%token Task "task" -%token Type "type" -%token Val "val" -%token Var "var" -%token Where "where" -%token While "while" -%token Window "window" -%token Use "use" -%token Xor "xor" -%token Yield "yield" -(*= Identifiers and Literals ================================================*) -%token Name -%token Int -%token Float -%token IntSuffix -%token FloatSuffix -%token Bool -%token Char -%token Unit "unit" -%token String -(*= Special =================================================================*) -%token Eof -%% diff --git a/arc-lang/src/utils.ml b/arc-lang/src/utils.ml deleted file mode 100644 index f765d3c06..000000000 --- a/arc-lang/src/utils.ml +++ /dev/null @@ -1,104 +0,0 @@ - -exception Compiler_error of string - -let todo () = raise (Compiler_error "Not yet implemented") -and unreachable () = raise (Compiler_error "Entered unreachable code") -and panic msg = raise (Compiler_error (Printf.sprintf "Panic: %s" msg)) - -let max_by f l = - let rec max_by f l mk mv = - match l with - | v::t -> - let k = f v in - if k > mk then - max_by f t k v - else - max_by f t mk mv - | [] -> mv in - match l with - | v::t -> max_by f t (f v) v - | [] -> assert false - -let mapm f ctx l = - let (l, ctx) = List.fold_left ( - fun (l, ctx) e -> - let (e, ctx) = f e ctx in - (e::l, ctx) - ) ([], ctx) l in - (l |> List.rev, ctx) - -let repeat f n ctx = - let rec repeat f n ctx acc = - if n = 0 then - (acc, ctx) - else - let (e, ctx) = f ctx in - repeat f (n-1) ctx (e::acc) - in - let (l, ctx) = repeat f n ctx [] in - (l |> List.rev, ctx) - -let mapm_filter f ctx l = - let (l, ctx) = mapm f ctx l in - (l |> List.filter_map (fun x -> x), ctx) - -let miter f ctx l = List.fold_left (fun ctx e -> f e ctx) ctx l - -let values l = - l |> List.map (fun (_, v) -> v) - -let zip_with_from f l0_init l1_init acc = - let rec zip l0 l1 acc = - match l0, l1 with - | h0::t0, h1::t1 -> - zip t0 t1 ((f h0 h1)::acc) - | [], [] -> - acc - | _, _ -> panic (Printf.sprintf "Zip failed, lists of different length %d and %d" - (l0_init |> List.length) - (l1_init |> List.length) - ) - in - zip l0_init l1_init acc - -let zip_with f l0_init l1_init = - zip_with_from f l0_init l1_init [] - -(* Zip two lists and append them to acc *) -let zip_from l0_init l1_init acc = - zip_with_from (fun a b -> (a, b)) l0_init l1_init acc - -(* Zip two lists and append them to acc *) -let zip l0_init l1_init = - zip_with_from (fun a b -> (a, b)) l0_init l1_init [] - -let unzip l = - let rec unzip l acc0 acc1 = - match l with - | [] -> (acc0, acc1) - | (a, b)::t -> - unzip t (a::acc0) (b::acc1) - in - let (l, r) = unzip l [] [] in - (l |> List.rev, r |> List.rev) - -let get_or x d l = match l |> List.assoc_opt x with - | Some v -> v - | None -> d - -let map = List.map -let filter = List.filter -let foldl = List.fold_left -let find_map = List.find_map -let assoc = List.assoc -let assoc_opt = List.assoc_opt -let mem = List.mem -let rev = List.rev -let tl = List.tl -let hd = List.hd -let elem = List.mem -let diff l0 l1 = l0 |> filter (fun x -> not (l1 |> elem x)) -let dom l = l |> map (fun (a, _) -> a) -let sprintf = Printf.sprintf -let exists = List.exists - diff --git a/arc-lang/stdlib/stdlib.arc b/arc-lang/stdlib/stdlib.arc deleted file mode 100644 index a50bc0f34..000000000 --- a/arc-lang/stdlib/stdlib.arc +++ /dev/null @@ -1,354 +0,0 @@ -# ANCHOR: unit -@{mlir: "none"} -extern type unit; -# ANCHOR_END: unit - -@{mlir: "si8"} -extern type i8; - -@{mlir: "si16"} -extern type i16; - -# ------------------------------------------------------ - -@{mlir: "si32"} -extern type i32; - -@{mlir: "add_i32"} -extern def +(i32, i32): i32; - -@{mlir: "sub_i32"} -extern def -(i32, i32): i32; - -@{mlir: "mul_i32"} -extern def *(i32, i32): i32; - -@{mlir: "div_i32"} -extern def /(i32, i32): i32; - -@{mlir: "pow_i32"} -extern def **(i32, i32): i32; - -@{mlir: "rem_i32"} -extern def %(i32, i32): i32; - -@{mlir: "eq_i32"} -extern def ==(i32, i32): bool; - -@{mlir: "geq_i32"} -extern def >=(i32, i32): bool; - -@{mlir: "leq_i32"} -extern def <=(i32, i32): bool; - -@{mlir: "gt_i32"} -extern def >(i32, i32): bool; - -@{mlir: "lt_i32"} -extern def <(i32, i32): bool; - -@{mlir: "or_i32"} -extern def bor(i32, i32): bool; - -@{mlir: "xor_i32"} -extern def bxor(i32, i32): bool; - -@{mlir: "and_i32"} -extern def band(i32, i32): bool; - -@{mlir: "neg_i32"} -extern def neg(i32): i32; - -@{rust: "String_from_i32"} -extern def i32_to_string(i32): String; - -# ------------------------------------------------------ - -@{mlir: "si64"} -extern type i64; - -@{mlir: "si128"} -extern type i128; - -@{mlir: "ui8"} -extern type u8; - -@{mlir: "ui16"} -extern type u16; - -@{mlir: "ui32"} -extern type u32; - -@{mlir: "add_u32"} -extern def +u32(u32, u32): u32; - -@{mlir: "sub_u32"} -extern def -u32(u32, u32): u32; - -@{mlir: "mul_u32"} -extern def *u32(u32, u32): u32; - -@{mlir: "div_u32"} -extern def /u32(u32, u32): u32; - -@{mlir: "pow_u32"} -extern def **u32(u32, u32): u32; - -@{mlir: "rem_u32"} -extern def %u32(u32, u32): u32; - -@{mlir: "eq_u32"} -extern def ==u32(u32, u32): bool; - -@{mlir: "geq_u32"} -extern def >=u32(u32, u32): bool; - -@{mlir: "leq_u32"} -extern def <=u32(u32, u32): bool; - -@{mlir: "gt_u32"} -extern def >u32(u32, u32): bool; - -@{mlir: "lt_u32"} -extern def =f32(f32, f32): bool; - -@{mlir: "leq_f32"} -extern def <=f32(f32, f32): bool; - -@{mlir: "gt_f32"} -extern def >f32(f32, f32): bool; - -@{mlir: "lt_f32"} -extern def >(); + let defs = hir_interpreter::definitions::Bifs::new(); + + for x in &decls { + assert!(defs.0.contains_key(x.as_str()), "{} is undefined", x); + } + + for x in defs.0.keys() { + assert!(decls.contains(*x), "{} is undeclared", x); + } +} diff --git a/arc-mlir/src/CMakeLists.txt b/arc-mlir/src/CMakeLists.txt index 2e6ebe942..ff99e51d9 100644 --- a/arc-mlir/src/CMakeLists.txt +++ b/arc-mlir/src/CMakeLists.txt @@ -1,4 +1,5 @@ -set(ARC_MLIR_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +set(ARC_MLIR_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + include_directories(../llvm-project/mlir/include/) include_directories(include/) include_directories(${CMAKE_CURRENT_BINARY_DIR}/../mlir/include/) @@ -20,25 +21,21 @@ get_filename_component(ARC_CARGO_BIN "../../bin" get_filename_component(ARC_TOOLS_BIN_DIR "../../bin" REALPATH BASE_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE) -get_filename_component(ARC_LANG_SRC_DIR "../../arc-lang" +get_filename_component(ARC_LANG_DIR "../../arc-lang" REALPATH BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE) -get_filename_component(ARC_LANG_BUILD_DIR "../../arc-lang/build" +get_filename_component(ARC_LANG_TARGET_DIR "../../arc-lang/target" REALPATH BASE_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE) -get_filename_component(ARC_RUNTIME_SRC_DIR "../../arc-runtime" +get_filename_component(ARC_RUNTIME_DIR "../../arc-lang/crates/runtime/" REALPATH BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE) -get_filename_component(ARC_MLIR_SRC_DIR "../" +get_filename_component(ARC_MLIR_DIR "../" REALPATH BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE) -add_custom_target(dune-build ALL - WORKING_DIRECTORY ${ARC_LANG_SRC_DIR} - COMMAND mkdir -p ${ARC_LANG_BUILD_DIR} - COMMAND ${ARC_LANG_SRC_DIR}/dune-wrapper build - --root ${ARC_LANG_SRC_DIR} - --build-dir ${ARC_LANG_BUILD_DIR} src/main.exe - COMMAND mv -f ${ARC_LANG_BUILD_DIR}/default/src/main.exe ${ARC_LANG_EXE} +add_custom_target(arc-lang ALL + COMMAND cargo build --manifest-path=${ARC_LANG_DIR}/Cargo.toml --release --target-dir=${ARC_LANG_TARGET_DIR} + COMMAND mv -f ${ARC_LANG_TARGET_DIR}/release/arc-lang ${ARC_LANG_EXE} ) add_subdirectory(include) @@ -46,11 +43,11 @@ add_subdirectory(lib) add_subdirectory(tests) add_subdirectory(tools) -add_custom_target(arc-runtime-check DEPENDS check-arc-mlir - COMMAND cd ${ARC_SCRIPT_SRC_DIR}; ${ARC_CARGO_BIN}/arc-cargo test --package=arc-runtime +add_custom_target(arc-lang-check DEPENDS check-arc-mlir + COMMAND cd ${ARC_LANG_DIR}; ${ARC_CARGO_BIN}/arc-cargo test ) -install(DIRECTORY ${ARC_LANG_SRC_DIR}/stdlib DESTINATION share/arc/) -install(DIRECTORY ${ARC_RUNTIME_SRC_DIR} DESTINATION share/arc/) +install(DIRECTORY ${ARC_LANG_DIR}/stdlib DESTINATION share/arc/) +install(DIRECTORY ${ARC_RUNTIME_DIR} DESTINATION share/arc/) install(PROGRAMS ${LLVM_TOOLS_BINARY_DIR}/arc DESTINATION bin) install(PROGRAMS ${LLVM_TOOLS_BINARY_DIR}/arc-lang DESTINATION bin) diff --git a/arc-mlir/src/include/Arc/CMakeLists.txt b/arc-mlir/src/include/Arc/CMakeLists.txt index be08d6824..328b44937 100644 --- a/arc-mlir/src/include/Arc/CMakeLists.txt +++ b/arc-mlir/src/include/Arc/CMakeLists.txt @@ -3,7 +3,7 @@ set(MLIR_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../llvm-project/mlir/include/ ) -set(LLVM_TARGET_DEFINITIONS ${ARC_MLIR_SOURCE_DIR}/include/Arc/Arc.td) +set(LLVM_TARGET_DEFINITIONS ${ARC_MLIR_SRC_DIR}/include/Arc/Arc.td) set(TBLGEN_INCDIRS "-I${CMAKE_CURRENT_SOURCE_DIR}/../../../llvm-project/mlir/include/") mlir_tablegen(ArcOps.h.inc -gen-op-decls) @@ -15,7 +15,7 @@ mlir_tablegen(ArcOpsEnums.cpp.inc -gen-enum-defs) add_public_tablegen_target(ArcDialectOpsEnumsIncGen) -set(LLVM_TARGET_DEFINITIONS ${ARC_MLIR_SOURCE_DIR}/include/Arc/Opts.td) +set(LLVM_TARGET_DEFINITIONS ${ARC_MLIR_SRC_DIR}/include/Arc/Opts.td) set(TBLGEN_INCDIRS "-I${CMAKE_CURRENT_SOURCE_DIR}/../../../llvm-project/mlir/include/") mlir_tablegen(ArcOpts.h.inc -gen-rewriters ${TBLGEN_INCDIRS} "-I${CMAKE_CURRENT_SOURCE_DIR}/include") add_public_tablegen_target(ArcDialectOptsIncGen) diff --git a/arc-mlir/src/include/Arc/Types.h b/arc-mlir/src/include/Arc/Types.h index b2a8e71ae..0a91b6bba 100644 --- a/arc-mlir/src/include/Arc/Types.h +++ b/arc-mlir/src/include/Arc/Types.h @@ -134,7 +134,7 @@ class StructType typedef std::pair FieldTy; - static StructType get(mlir::MLIRContext *ctx, bool isCompact, + static StructType get(mlir::MLIRContext *ctx, llvm::ArrayRef elementTypes); /// Returns the fields of this struct type. @@ -143,9 +143,6 @@ class StructType /// Returns the number of fields held by this struct. size_t getNumFields() const; - // Returns true if this struct is compact - bool isCompact() const; - static Type parse(DialectAsmParser &parser); void print(DialectAsmPrinter &os) const; }; diff --git a/arc-mlir/src/include/Rust/Rust.h b/arc-mlir/src/include/Rust/Rust.h index 236deacc8..7d02b6776 100644 --- a/arc-mlir/src/include/Rust/Rust.h +++ b/arc-mlir/src/include/Rust/Rust.h @@ -45,12 +45,6 @@ class RustPrinterStream; LogicalResult writeModuleAsInline(ModuleOp module, llvm::raw_ostream &o); -/// A single place to define the versions for the external crates -/// used by the Rust code generated by the backend. -struct CrateVersions { - static const char *ndarray; -}; - bool isRustFunctionType(Type type); } // namespace rust diff --git a/arc-mlir/src/include/Rust/Rust.td b/arc-mlir/src/include/Rust/Rust.td index 4fcf0f703..ae5785fc4 100644 --- a/arc-mlir/src/include/Rust/Rust.td +++ b/arc-mlir/src/include/Rust/Rust.td @@ -513,27 +513,6 @@ def Rust_RustBinaryOp : Rust_Op<"binaryop", [SameTypeOperands]> { }]; } -def Rust_RustBinaryRcOp : Rust_Op<"binaryrcop", [SameTypeOperands]> { - let summary = "a Rust binary operation operating on a Rc value."; - let description = [{ - A Rust binary operation, the op attribute is the string representation of - the operator in Rust syntax. The operands will be dereferenced and the - result wrapped in a Rc. - }]; - - let arguments = (ins StrAttr : $op, AnyRustType : $LHS, AnyRustType : $RHS); - let results = (outs AnyRustType); - - let extraClassDeclaration = [{ - StringRef getOperator() { - return (*this)->getAttrOfType("op").getValue(); - } - - // Write this operation as Rust code to the stream - void writeRust(RustPrinterStream &); - }]; -} - def Rust_RustCompOp : Rust_Op<"compop", [SameTypeOperands]> { let summary = "a Rust comparison operation."; let description = [{ diff --git a/arc-mlir/src/include/Rust/RustPrinterStream.h b/arc-mlir/src/include/Rust/RustPrinterStream.h index ee16960ca..d1fc6f293 100644 --- a/arc-mlir/src/include/Rust/RustPrinterStream.h +++ b/arc-mlir/src/include/Rust/RustPrinterStream.h @@ -84,60 +84,20 @@ class RustPrinterStream { Includefile(includefile){}; void flush(llvm::raw_ostream &o) { - o << "#![allow(non_snake_case)]\n" - << "#![allow(unused_must_use)]\n" - << "#![allow(non_camel_case_types)]" - << "#![allow(dead_code)]\n" - << "#![allow(unused_variables)]\n" - << "#![allow(unused_imports)]\n" - << "#![allow(unused_braces)]\n" - << "#![allow(non_camel_case_types)]\n"; + o << "#[allow(unused)]\n" + "#[allow(non_snake_case)]\n" + "#[allow(non_camel_case_types)]\n"; o << "pub mod " << ModuleName << "{\n" "use super::*;\n" - "pub use arc_runtime::prelude::*;\n"; - - o << "pub use hexf::*;\n"; - - if (!DeclaredFunctions.empty() || !DeclaredTasks.empty()) { - o << "declare!("; - o << "functions: [ "; - for (Operation *t : DeclaredFunctions) { - if (t->hasAttr("arc.rust_name")) - o << t->getAttrOfType("arc.rust_name").getValue(); - else - o << t->getAttrOfType("sym_name").getValue(); - o << ", "; - } - o << "],"; - o << "tasks: [ "; - for (RustFuncOp &t : DeclaredTasks) { - if (t->hasAttr("arc.rust_name")) - o << t->getAttrOfType("arc.rust_name").getValue(); - else - o << t->getAttrOfType("sym_name").getValue(); - o << "("; - unsigned numFuncArguments = t.getNumArguments(); - for (unsigned i = 0; i < numFuncArguments; i++) { - Value v = t.front().getArgument(i); - if (i != 0) - o << ", "; - o << "v" << std::to_string(Value2ID[v]) << ": "; - printType(o, v.getType()); - } - o << "), "; - } - o << "]"; - o << ");\n"; - } + "pub use runtime::prelude::*;\n"; for (auto i : CrateDirectives) o << i.second << "\n"; o << Constants.str(); o << TypeUses.str(); - std::string types = NamedTypes.str(); - o << types; + o << NamedTypes.str(); o << Body.str(); if (!Includefile.empty()) o << "include!(\"" << Includefile << "\");\n"; @@ -180,7 +140,7 @@ class RustPrinterStream { if (id < 0) return "C" + std::to_string(-id); else - return "val!(v" + std::to_string(id) + ")"; + return "v" + std::to_string(id) + ".clone()"; } std::string getConstant(RustConstantOp v); diff --git a/arc-mlir/src/include/Rust/Types.h b/arc-mlir/src/include/Rust/Types.h index e8a8ca549..eb13f9ba6 100644 --- a/arc-mlir/src/include/Rust/Types.h +++ b/arc-mlir/src/include/Rust/Types.h @@ -133,10 +133,9 @@ class RustStructType unsigned getNumFields() const; StringRef getFieldName(unsigned idx) const; Type getFieldType(unsigned idx) const; - bool isCompact() const; typedef std::pair StructFieldTy; - static RustStructType get(RustDialect *dialect, bool isCompact, + static RustStructType get(RustDialect *dialect, ArrayRef fields); std::string getMangledName(rust::RustPrinterStream &ps); }; diff --git a/arc-mlir/src/lib/Arc/Dialect.cpp b/arc-mlir/src/lib/Arc/Dialect.cpp index ce0dd05c9..84de1cf79 100644 --- a/arc-mlir/src/lib/Arc/Dialect.cpp +++ b/arc-mlir/src/lib/Arc/Dialect.cpp @@ -1122,42 +1122,38 @@ void EnumType::print(DialectAsmPrinter &os) const { // StructType //===----------------------------------------------------------------------===// struct StructTypeStorage : public mlir::TypeStorage { - using KeyTy = std::pair>; + using KeyTy = llvm::ArrayRef; - StructTypeStorage(bool isCompact, - llvm::ArrayRef elementTypes) - : isCompact(isCompact), fields(elementTypes) {} + StructTypeStorage(llvm::ArrayRef elementTypes) + : fields(elementTypes) {} bool operator==(const KeyTy &key) const { - return key.first == isCompact && key.second == fields; + return key == fields; } static llvm::hash_code hashKey(const KeyTy &key) { - return llvm::hash_combine(llvm::hash_value(key.first), - llvm::hash_value(key.second)); + return llvm::hash_combine(key); } - static KeyTy getKey(bool isCompact, - llvm::ArrayRef elementTypes) { - return KeyTy(isCompact, elementTypes); + static KeyTy getKey(llvm::ArrayRef elementTypes) { + return KeyTy(elementTypes); } static StructTypeStorage *construct(mlir::TypeStorageAllocator &allocator, const KeyTy &key) { llvm::ArrayRef elementTypes = - allocator.copyInto(key.second); + allocator.copyInto(key); return new (allocator.allocate()) - StructTypeStorage(key.first, elementTypes); + StructTypeStorage(elementTypes); } - bool isCompact; llvm::ArrayRef fields; }; -StructType StructType::get(mlir::MLIRContext *ctx, bool isCompact, +StructType StructType::get(mlir::MLIRContext *ctx, llvm::ArrayRef elementTypes) { - return Base::get(ctx, isCompact, elementTypes); + return Base::get(ctx, elementTypes); } /// Returns the element types of this struct type. @@ -1168,17 +1164,11 @@ llvm::ArrayRef StructType::getFields() const { size_t StructType::getNumFields() const { return getFields().size(); } -bool StructType::isCompact() const { return getImpl()->isCompact; } - Type StructType::parse(DialectAsmParser &parser) { - bool isCompact = false; if (parser.parseLess()) return nullptr; - if (!parser.parseOptionalLess()) - isCompact = true; - Builder &builder = parser.getBuilder(); SmallVector elementTypes; @@ -1186,11 +1176,7 @@ Type StructType::parse(DialectAsmParser &parser) { StringRef name; if (succeeded(parser.parseOptionalGreater())) { - if (isCompact && parser.parseGreater()) - return nullptr; - - return StructType::get(parser.getBuilder().getContext(), isCompact, - elementTypes); + return StructType::get(parser.getBuilder().getContext(), elementTypes); } if (parser.parseKeyword(&name) || parser.parseColon()) @@ -1209,8 +1195,6 @@ Type StructType::parse(DialectAsmParser &parser) { void StructType::print(DialectAsmPrinter &os) const { // Print the struct type according to the parser format. os << "struct"; - if (isCompact()) - os << "<"; os << "<"; auto fields = getFields(); for (unsigned i = 0; i < getNumFields(); i++) { @@ -1219,8 +1203,6 @@ void StructType::print(DialectAsmPrinter &os) const { os << fields[i].first.getValue() << " : " << fields[i].second; } os << '>'; - if (isCompact()) - os << ">"; } } // namespace types diff --git a/arc-mlir/src/lib/Arc/LowerToRust.cpp b/arc-mlir/src/lib/Arc/LowerToRust.cpp index 7bb971702..fb411413a 100644 --- a/arc-mlir/src/lib/Arc/LowerToRust.cpp +++ b/arc-mlir/src/lib/Arc/LowerToRust.cpp @@ -267,7 +267,7 @@ struct ArithConstantOpLowering : public OpConversionPattern { } } - Twine str = "hexf" + Twine(width) + "!(\"" + hex + "\")"; + Twine str = "hexf::hexf" + Twine(width) + "!(\"" + hex + "\")"; std::string cst = str.str(); return returnResult(op, rustTy, cst, rewriter); @@ -1007,7 +1007,7 @@ Type RustTypeConverter::convertStructType(arc::types::StructType type) { Type t = convertType(f.second); fields.push_back(std::make_pair(f.first, t)); } - return rust::types::RustStructType::get(Dialect, type.isCompact(), fields); + return rust::types::RustStructType::get(Dialect, fields); } FunctionType diff --git a/arc-mlir/src/lib/Arc/ToSCF.cpp b/arc-mlir/src/lib/Arc/ToSCF.cpp index 547e82cac..f06e2ee21 100644 --- a/arc-mlir/src/lib/Arc/ToSCF.cpp +++ b/arc-mlir/src/lib/Arc/ToSCF.cpp @@ -176,8 +176,7 @@ struct FunPattern : public OpRewritePattern { for (auto v : liveOut) LLVM_DEBUG(llvm::dbgs() << " " << v << "\n"); // We need a struct for each block - types::StructType t = - types::StructType::get(getContext(), false, elements); + types::StructType t = types::StructType::get(getContext(), elements); block2variantStruct[b] = t; LLVM_DEBUG(llvm::dbgs() << "Entry struct type " << t << "\n"); StringAttr variantName = getBlockVariantName(i); diff --git a/arc-mlir/src/lib/Rust/Dialect.cpp b/arc-mlir/src/lib/Rust/Dialect.cpp index acd6434a6..27fd803ad 100644 --- a/arc-mlir/src/lib/Rust/Dialect.cpp +++ b/arc-mlir/src/lib/Rust/Dialect.cpp @@ -82,7 +82,7 @@ void RustDialect::initialize() { u16Ty = RustType::get(ctx, "u16"); u32Ty = RustType::get(ctx, "u32"); u64Ty = RustType::get(ctx, "u64"); - noneTy = RustType::get(ctx, "unit"); + noneTy = RustType::get(ctx, "Unit"); } //===----------------------------------------------------------------------===// @@ -274,8 +274,6 @@ static RustPrinterStream &writeRust(Operation &operation, op.writeRust(PS); else if (RustBinaryOp op = dyn_cast(operation)) op.writeRust(PS); - else if (RustBinaryRcOp op = dyn_cast(operation)) - op.writeRust(PS); else if (RustCallOp op = dyn_cast(operation)) op.writeRust(PS); else if (RustCallIndirectOp op = dyn_cast(operation)) @@ -329,8 +327,6 @@ std::string RustPrinterStream::getConstant(RustConstantOp v) { if (Operation *target = SymbolTable::lookupNearestSymbolFrom(v, str)) { if (target->hasAttr("arc.rust_name")) str = target->getAttrOfType("arc.rust_name"); - if (target->hasAttr("rust.declare")) - DeclaredFunctions.insert(target); } auto found = Value2ID.find(v); @@ -339,10 +335,8 @@ std::string RustPrinterStream::getConstant(RustConstantOp v) { id = NextID++; Value2ID[v] = id; // A function constant has uses, or else we would not ouput it. - Body << "let v" << id << " : "; - - Body << ::getMangledName(fType, *this); - Body << " = function!(" << str.getValue() << ");\n"; + Body << "let v" << id << " : " << ::getMangledName(fType, *this) + << " = " << str.getValue() << ";\n"; } else id = found->second; return "v" + std::to_string(id); @@ -373,14 +367,10 @@ void RustCallOp::writeRust(RustPrinterStream &PS) { if (target && target->hasAttr("arc.rust_name")) callee = target->getAttrOfType("arc.rust_name").getValue(); - if (target && target->hasAttr("rust.async")) - PS << "call_async!("; - else - PS << "call!("; PS << callee << "("; for (auto a : getOperands()) PS << a << ", "; - PS << "));\n"; + PS << ");\n"; } void RustCallIndirectOp::writeRust(RustPrinterStream &PS) { @@ -389,29 +379,18 @@ void RustCallIndirectOp::writeRust(RustPrinterStream &PS) { auto r = getResult(0); PS.let(r); } - PS << "call_indirect!((" << getCallee() << ")("; + PS << "(" << getCallee() << ")("; for (auto a : getArgOperands()) PS << a << ", "; - PS << "));\n"; + PS << ");\n"; } // Write this function as Rust code to os void RustFuncOp::writeRust(RustPrinterStream &PS) { - if ((*this)->hasAttr("arc.is_task")) - PS.addTask(*this); - - if ((*this)->hasAttr("rust.declare")) - PS.addDeclaredFunction(getOperation()); - if ((*this)->hasAttr("rust.annotation")) PS << (*this)->getAttrOfType("rust.annotation").getValue() << "\n"; - else - PS << "#[rewrite]\n"; - PS << "pub "; - if ((*this)->hasAttr("rust.async")) - PS << "async "; - PS << "fn "; + PS << "pub fn "; if ((*this)->hasAttr("arc.rust_name")) PS << (*this)->getAttrOfType("arc.rust_name").getValue(); else @@ -422,14 +401,7 @@ void RustFuncOp::writeRust(RustPrinterStream &PS) { unsigned numFuncArguments = getNumArguments(); for (unsigned i = 0; i < numFuncArguments; i++) { Value v = front().getArgument(i); - Type t = v.getType(); - if (i != 0) - PS << ", "; - if ((*this)->hasAttr("arc.is_task")) { - if (RustSinkStreamType st = t.dyn_cast()) - PS << "#[output]"; - } - PS.printAsArg(v) << ": " << v.getType(); + PS.printAsArg(v) << ": " << v.getType() << ", "; } PS << ") "; FunctionType funcTy = getFunctionType(); @@ -458,19 +430,14 @@ void RustExtFuncOp::writeRust(RustPrinterStream &PS) { return; PS << (*this)->getAttrOfType("rust.annotation").getValue() - << "\npub "; - if ((*this)->hasAttr("rust.async")) - PS << "async "; - PS << "fn " << getName() << "("; + << "\npub fn " << getName() << "("; FunctionType fType = getFunctionType(); unsigned numFuncArguments = fType.getNumInputs(); for (unsigned i = 0; i < numFuncArguments; i++) { Type t = fType.getInput(i); - if (i != 0) - PS << ", "; - PS << "arg" << i << " : " << t; + PS << "arg" << i << " : " << t << ", "; } PS << ") "; if (fType.getNumResults()) { // The return type @@ -480,7 +447,7 @@ void RustExtFuncOp::writeRust(RustPrinterStream &PS) { } void RustReturnOp::writeRust(RustPrinterStream &PS) { - if (getNumOperands()) + if (getNumOperands() > 0) PS << "return " << getOperand(0) << ";\n"; else PS << "return;\n"; @@ -624,7 +591,7 @@ void RustLoopYieldOp::writeRust(RustPrinterStream &PS) { void RustMakeEnumOp::writeRust(RustPrinterStream &PS) { auto r = getResult(); RustEnumType et = r.getType().cast(); - PS.let(r) << "enwrap!(" << et << "::" << getVariant() << ", "; + PS.let(r) << et << "::" << getVariant() << "("; if (getValues().size()) PS << getValues()[0]; else @@ -635,15 +602,13 @@ void RustMakeEnumOp::writeRust(RustPrinterStream &PS) { void RustMakeStructOp::writeRust(RustPrinterStream &PS) { auto r = getResult(); RustStructType st = r.getType().cast(); - PS.let(r) << "new!(" << st << " { "; + PS.let(r) << st << " { "; auto args = getOperands(); for (unsigned i = 0; i < args.size(); i++) { - if (i != 0) - PS << ", "; auto v = args[i]; - PS << st.getFieldName(i) << " : " << v; + PS << st.getFieldName(i) << " : " << v << ", "; } - PS << "});\n"; + PS << "};\n"; } void RustMethodCallOp::writeRust(RustPrinterStream &PS) { @@ -653,8 +618,7 @@ void RustMethodCallOp::writeRust(RustPrinterStream &PS) { for (unsigned i = 0; i < args.size(); i++) { if (i != 0) PS << ", "; - auto v = args[i]; - PS << v; + PS << args[i]; } PS << ");\n"; } @@ -664,12 +628,6 @@ void RustBinaryOp::writeRust(RustPrinterStream &PS) { PS.let(r) << getLHS() << " " << getOperator() << " " << getRHS() << ";\n"; } -void RustBinaryRcOp::writeRust(RustPrinterStream &PS) { - auto r = getResult(); - PS.let(r) << "Rc::new(&*" << getLHS() << " " << getOperator() << " &*" - << getRHS() << ");\n"; -} - void RustCompOp::writeRust(RustPrinterStream &PS) { auto r = getResult(); PS.let(r) << getLHS() << " " << getOperator() << " " << getRHS() << ";\n"; @@ -678,20 +636,20 @@ void RustCompOp::writeRust(RustPrinterStream &PS) { void RustEnumAccessOp::writeRust(RustPrinterStream &PS) { auto r = getResult(); RustEnumType et = getTheEnum().getType().cast(); - PS.let(r) << "unwrap!(" << et << "::" << getVariant() << ", " << getTheEnum() + PS.let(r) << "unwrap!(" << getTheEnum() << ", " << et << "::" << getVariant() << ");\n"; } void RustEnumCheckOp::writeRust(RustPrinterStream &PS) { auto r = getResult(); RustEnumType et = getTheEnum().getType().cast(); - PS.let(r) << "is!(" << et << "::" << getVariant() << ", " << getTheEnum() - << ");\n"; + PS.let(r) << "matches!(" << getTheEnum() << ", " << et << "::" << getVariant() + << "(_)" << ");\n"; } void RustFieldAccessOp::writeRust(RustPrinterStream &PS) { auto r = getResult(); - PS.let(r) << "access!(" << getAggregate() << ", " << getField() << ");\n"; + PS.let(r) << getAggregate() << "." << getField() << ";\n"; } void RustIfOp::writeRust(RustPrinterStream &PS) { @@ -753,6 +711,7 @@ void RustPanicOp::writeRust(RustPrinterStream &PS) { PS << ");\n"; } +// TODO: The runtime right now requires code to be synchronous. void RustReceiveOp::writeRust(RustPrinterStream &PS) { auto r = getResult(); PS.let(r) << "pull!(" << getSource(); @@ -764,10 +723,12 @@ void RustReceiveOp::writeRust(RustPrinterStream &PS) { PS << ");\n"; } +// TODO: The runtime right now requires code to be synchronous. void RustSendOp::writeRust(RustPrinterStream &PS) { PS << "push!(" << getValue() << "," << getSink() << ");\n"; } +// TODO: The runtime right now requires code to be synchronous. void RustSpawnOp::writeRust(RustPrinterStream &PS) { StringRef callee = getCallee(); StringAttr calleeName = StringAttr::get(this->getContext(), getCallee()); @@ -781,13 +742,6 @@ void RustSpawnOp::writeRust(RustPrinterStream &PS) { PS << ");\n"; } -//===----------------------------------------------------------------------===// -// Crate versions -//===----------------------------------------------------------------------===// -namespace rust { -const char *CrateVersions::ndarray = "0.13.0"; -} // namespace rust - //===----------------------------------------------------------------------===// // Rust types //===----------------------------------------------------------------------===// @@ -798,6 +752,10 @@ struct RustTypeStorage : public TypeStorage { RustTypeStorage(std::string type) : rustType(type), mangledName(type) { if (rustType[0] == '"') mangledName = rustType.substr(1, rustType.length() - 2); + // TODO: Find a way to handle unit type so we can print "()" syntax and use "unit" for mangled. + // The below does not work since ::printAsRust() prints the mangledName + // if (rustType == "()") + // mangledName = "unit"; } std::string rustType; @@ -933,8 +891,8 @@ void RustEnumTypeStorage::printAsMLIR(DialectAsmPrinter &os) const { for (unsigned i = 0; i < enumVariants.size(); i++) { if (i != 0) os << ", "; - os << enumVariants[i].first.getValue(); - os << " : "; + os << enumVariants[i].first.getValue() + << " : "; ::printAsMLIR(enumVariants[i].second, os); } os << ">"; @@ -994,11 +952,13 @@ std::string RustEnumTypeStorage::getMangledName(rust::RustPrinterStream &ps) { mangledName = mangled.str(); llvm::raw_ostream &tyStream = ps.getNamedTypesStream(); - tyStream << "#[rewrite]\n"; + tyStream << "#[data]\n"; tyStream << "pub enum " << mangledName << " {\n"; for (unsigned i = 0; i < enumVariants.size(); i++) { + if (i != 0) + tyStream << ",\n"; tyStream << " " << enumVariants[i].first.getValue() << "(" - << ::getMangledName(enumVariants[i].second, ps) << "),\n"; + << ::getMangledName(enumVariants[i].second, ps) << ")"; } tyStream << "\n}\n"; @@ -1258,28 +1218,26 @@ Type RustSourceStreamTypeStorage::getType() const { return item; } //===----------------------------------------------------------------------===// struct RustStructTypeStorage : public TypeStorage { - RustStructTypeStorage(bool isCompact, - ArrayRef fields) - : structFields(fields.begin(), fields.end()), compact(isCompact) {} + RustStructTypeStorage(ArrayRef fields) + : structFields(fields.begin(), fields.end()) {} SmallVector structFields; - using KeyTy = std::pair>; + using KeyTy = ArrayRef; bool operator==(const KeyTy &key) const { - KeyTy self(compact, structFields); - return key.first == self.first && key.second == self.second; + KeyTy self(structFields); + return key == self; } static llvm::hash_code hashKey(const KeyTy &key) { - return llvm::hash_combine(llvm::hash_value(key.first), - llvm::hash_value(key.second)); + return llvm::hash_combine(key); } static RustStructTypeStorage *construct(TypeStorageAllocator &allocator, const KeyTy &key) { return new (allocator.allocate()) - RustStructTypeStorage(key.first, key.second); + RustStructTypeStorage(key); } void printAsRust(llvm::raw_ostream &o, rust::RustPrinterStream &ps); @@ -1289,33 +1247,26 @@ struct RustStructTypeStorage : public TypeStorage { unsigned getNumFields() const; StringRef getFieldName(unsigned idx) const; Type getFieldType(unsigned idx) const; - bool isCompact() const { return compact; } std::string getMangledName(rust::RustPrinterStream &ps); private: - bool compact; std::string mangledName; }; -RustStructType RustStructType::get(RustDialect *dialect, bool isCompact, +RustStructType RustStructType::get(RustDialect *dialect, ArrayRef fields) { - return Base::get(dialect->getContext(), isCompact, fields); + return Base::get(dialect->getContext(), fields); } void RustStructTypeStorage::printAsMLIR(DialectAsmPrinter &os) const { os << "struct<"; - if (isCompact()) - os << "<"; for (unsigned i = 0; i < structFields.size(); i++) { if (i != 0) os << ", "; - os << structFields[i].first.getValue(); - os << " : "; + os << structFields[i].first.getValue() << " : "; ::printAsMLIR(structFields[i].second, os); } - if (isCompact()) - os << "<"; os << ">"; } @@ -1352,8 +1303,6 @@ Type RustStructTypeStorage::getFieldType(unsigned idx) const { return structFields[idx].second; } -bool RustStructType::isCompact() const { return getImpl()->isCompact(); } - std::string RustStructType::getMangledName(rust::RustPrinterStream &ps) { return getImpl()->getMangledName(ps); } @@ -1365,8 +1314,6 @@ std::string RustStructTypeStorage::getMangledName(rust::RustPrinterStream &ps) { std::string buffer; llvm::raw_string_ostream mangled(buffer); - if (isCompact()) - mangled << "Compact"; mangled << "Struct"; for (auto &f : structFields) { @@ -1380,17 +1327,14 @@ std::string RustStructTypeStorage::getMangledName(rust::RustPrinterStream &ps) { llvm::raw_ostream &tyStream = ps.getNamedTypesStream(); - if (isCompact()) - tyStream << "#[rewrite(compact)]\n"; - else - tyStream << "#[rewrite]\n"; - tyStream << "pub struct " << mangledName << " {\n "; + tyStream << "#[data]\n"; + tyStream << "pub struct " << mangledName << " {\n"; for (unsigned i = 0; i < structFields.size(); i++) { if (i != 0) - tyStream << ",\n "; + tyStream << ",\n"; - tyStream << " " << structFields[i].first.getValue() << " : "; + tyStream << " pub " << structFields[i].first.getValue() << ": "; tyStream << ::getMangledName(structFields[i].second, ps); } tyStream << "\n}\n"; @@ -1613,13 +1557,13 @@ std::string RustPrinterStream::getMangledName(FunctionType fTy) { FunctionTypes[fTy] = mn; llvm::raw_ostream &tyStream = getNamedTypesStream(); - tyStream << "type " << mn << " = function!(("; + tyStream << "type " << mn << " = fn("; for (Type t : fTy.getInputs()) tyStream << ::getMangledName(t, *this) << ", "; tyStream << ")"; if (fTy.getNumResults()) tyStream << " -> " << ::getMangledName(fTy.getResult(0), *this); - tyStream << ");\n"; + tyStream << ";\n"; return mn; } diff --git a/arc-mlir/src/tests/CMakeLists.txt b/arc-mlir/src/tests/CMakeLists.txt index dd7d70b7c..870f84868 100644 --- a/arc-mlir/src/tests/CMakeLists.txt +++ b/arc-mlir/src/tests/CMakeLists.txt @@ -12,8 +12,11 @@ configure_lit_site_cfg( ) set(ARC_MLIR_TEST_DEPENDS - FileCheck count not - arc-mlir dune-build + FileCheck + count + not + arc-mlir + arc-lang ) add_lit_testsuite(check-arc-mlir "Running the ARC-MLIR regression tests" diff --git a/arc-mlir/src/tests/arc-to-rust/adt.mlir b/arc-mlir/src/tests/arc-to-rust/adt.mlir index dabe19c1a..6116ebd7b 100644 --- a/arc-mlir/src/tests/arc-to-rust/adt.mlir +++ b/arc-mlir/src/tests/arc-to-rust/adt.mlir @@ -3,7 +3,6 @@ // RUN: arc-mlir-rust-test %t-roundtrip-scf %s -rustinclude %s.rust-tests -canonicalize -remove-scf -canonicalize -to-scf -canonicalize module @arctorustadt { - func.func @ok0(%in : !arc.adt<"i32">) -> () { return } @@ -17,23 +16,23 @@ module @arctorustadt { return %out : !arc.adt<"i32"> } - func.func @ok6(%in : !arc.generic_adt<"crate::arctorustadt::tests::sharable_Foo::Foo", ui32>) - -> !arc.generic_adt<"crate::arctorustadt::tests::sharable_Foo::Foo", ui32> { - return %in : !arc.generic_adt<"crate::arctorustadt::tests::sharable_Foo::Foo", ui32> + func.func @ok6(%in : !arc.generic_adt<"crate::arctorustadt::tests::Foo", ui32>) + -> !arc.generic_adt<"crate::arctorustadt::tests::Foo", ui32> { + return %in : !arc.generic_adt<"crate::arctorustadt::tests::Foo", ui32> } - func.func @ok7(%in : !arc.generic_adt<"crate::arctorustadt::tests::sharable_Bar::Bar", ui32, !arc.generic_adt<"crate::arctorustadt::tests::sharable_Foo::Foo", f64>>) - -> !arc.generic_adt<"crate::arctorustadt::tests::sharable_Bar::Bar", ui32, !arc.generic_adt<"crate::arctorustadt::tests::sharable_Foo::Foo", f64>> { - return %in : !arc.generic_adt<"crate::arctorustadt::tests::sharable_Bar::Bar", ui32, !arc.generic_adt<"crate::arctorustadt::tests::sharable_Foo::Foo", f64>> + func.func @ok7(%in : !arc.generic_adt<"crate::arctorustadt::tests::Bar", ui32, !arc.generic_adt<"crate::arctorustadt::tests::Foo", f64>>) + -> !arc.generic_adt<"crate::arctorustadt::tests::Bar", ui32, !arc.generic_adt<"crate::arctorustadt::tests::Foo", f64>> { + return %in : !arc.generic_adt<"crate::arctorustadt::tests::Bar", ui32, !arc.generic_adt<"crate::arctorustadt::tests::Foo", f64>> } - func.func @ok8(%in : !arc.generic_adt<"crate::arctorustadt::tests::sharable_Bar::Bar", ui32, !arc.adt<"i32">>) - -> !arc.generic_adt<"crate::arctorustadt::tests::sharable_Bar::Bar", ui32, !arc.adt<"i32">> { - return %in : !arc.generic_adt<"crate::arctorustadt::tests::sharable_Bar::Bar", ui32, !arc.adt<"i32">> + func.func @ok8(%in : !arc.generic_adt<"crate::arctorustadt::tests::Bar", ui32, !arc.adt<"i32">>) + -> !arc.generic_adt<"crate::arctorustadt::tests::Bar", ui32, !arc.adt<"i32">> { + return %in : !arc.generic_adt<"crate::arctorustadt::tests::Bar", ui32, !arc.adt<"i32">> } - func.func @ok9(%in : !arc.struct>>) - -> !arc.struct>> { - return %in : !arc.struct>> + func.func @ok9(%in : !arc.struct>>) + -> !arc.struct>> { + return %in : !arc.struct>> } } diff --git a/arc-mlir/src/tests/arc-to-rust/adt.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/adt.mlir.rust-tests index ef30d7b65..d4b1032ee 100644 --- a/arc-mlir/src/tests/arc-to-rust/adt.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/adt.mlir.rust-tests @@ -1,25 +1,21 @@ #[cfg(test)] mod tests { - use crate::arctorustadt::*; + use crate::arctorustadt::*; - #[rewrite] - pub struct Foo { - pub a: A, - } + #[data] + pub struct Foo { + pub a: A, + } - #[rewrite] - pub struct Bar { - pub a: A, - pub b: B, - } + #[data] + pub struct Bar { + pub a: A, + pub b: B, + } - #[rewrite(main)] - #[test] - fn test() { - let tmp0 = call!(ok2(4711)); - assert_eq!(tmp0, 4711); - - let tmp2 = call!(ok4()); - assert_eq!(tmp2, 4711); - } + #[test] + fn test() { + assert_eq!(ok2(4711), 4711); + assert_eq!(ok4(), 4711); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/arc-cmpf.mlir b/arc-mlir/src/tests/arc-to-rust/arc-cmpf.mlir index 8971e5625..44dca3755 100644 --- a/arc-mlir/src/tests/arc-to-rust/arc-cmpf.mlir +++ b/arc-mlir/src/tests/arc-to-rust/arc-cmpf.mlir @@ -2,64 +2,63 @@ // RUN: arc-mlir-rust-test %t-roundtrip-scf %s -rustinclude %s.rust-tests -canonicalize -remove-scf -canonicalize -to-scf -canonicalize module @arctorustarcarccmpf { -func.func @oeq_f32(%a : f32, %b : f32) -> i1 { - %r = arith.cmpf "oeq", %a, %b : f32 - return %r : i1 -} + func.func @oeq_f32(%a : f32, %b : f32) -> i1 { + %r = arith.cmpf "oeq", %a, %b : f32 + return %r : i1 + } -func.func @one_f32(%a : f32, %b : f32) -> i1 { - %r = arith.cmpf "one", %a, %b : f32 - return %r : i1 -} + func.func @one_f32(%a : f32, %b : f32) -> i1 { + %r = arith.cmpf "one", %a, %b : f32 + return %r : i1 + } -func.func @olt_f32(%a : f32, %b : f32) -> i1 { - %r = arith.cmpf "olt", %a, %b : f32 - return %r : i1 -} + func.func @olt_f32(%a : f32, %b : f32) -> i1 { + %r = arith.cmpf "olt", %a, %b : f32 + return %r : i1 + } -func.func @ole_f32(%a : f32, %b : f32) -> i1 { - %r = arith.cmpf "ole", %a, %b : f32 - return %r : i1 -} + func.func @ole_f32(%a : f32, %b : f32) -> i1 { + %r = arith.cmpf "ole", %a, %b : f32 + return %r : i1 + } -func.func @ogt_f32(%a : f32, %b : f32) -> i1 { - %r = arith.cmpf "ogt", %a, %b : f32 - return %r : i1 -} + func.func @ogt_f32(%a : f32, %b : f32) -> i1 { + %r = arith.cmpf "ogt", %a, %b : f32 + return %r : i1 + } -func.func @oge_f32(%a : f32, %b : f32) -> i1 { - %r = arith.cmpf "oge", %a, %b : f32 - return %r : i1 -} + func.func @oge_f32(%a : f32, %b : f32) -> i1 { + %r = arith.cmpf "oge", %a, %b : f32 + return %r : i1 + } -func.func @oeq_f64(%a : f64, %b : f64) -> i1 { - %r = arith.cmpf "oeq", %a, %b : f64 - return %r : i1 -} + func.func @oeq_f64(%a : f64, %b : f64) -> i1 { + %r = arith.cmpf "oeq", %a, %b : f64 + return %r : i1 + } -func.func @one_f64(%a : f64, %b : f64) -> i1 { - %r = arith.cmpf "one", %a, %b : f64 - return %r : i1 -} - -func.func @olt_f64(%a : f64, %b : f64) -> i1 { - %r = arith.cmpf "olt", %a, %b : f64 - return %r : i1 -} + func.func @one_f64(%a : f64, %b : f64) -> i1 { + %r = arith.cmpf "one", %a, %b : f64 + return %r : i1 + } -func.func @ole_f64(%a : f64, %b : f64) -> i1 { - %r = arith.cmpf "ole", %a, %b : f64 - return %r : i1 -} + func.func @olt_f64(%a : f64, %b : f64) -> i1 { + %r = arith.cmpf "olt", %a, %b : f64 + return %r : i1 + } -func.func @ogt_f64(%a : f64, %b : f64) -> i1 { - %r = arith.cmpf "ogt", %a, %b : f64 - return %r : i1 -} + func.func @ole_f64(%a : f64, %b : f64) -> i1 { + %r = arith.cmpf "ole", %a, %b : f64 + return %r : i1 + } -func.func @oge_f64(%a : f64, %b : f64) -> i1 { - %r = arith.cmpf "oge", %a, %b : f64 - return %r : i1 -} + func.func @ogt_f64(%a : f64, %b : f64) -> i1 { + %r = arith.cmpf "ogt", %a, %b : f64 + return %r : i1 + } + func.func @oge_f64(%a : f64, %b : f64) -> i1 { + %r = arith.cmpf "oge", %a, %b : f64 + return %r : i1 + } } diff --git a/arc-mlir/src/tests/arc-to-rust/arc-cmpf.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/arc-cmpf.mlir.rust-tests index bfd364166..b2afdd259 100644 --- a/arc-mlir/src/tests/arc-to-rust/arc-cmpf.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/arc-cmpf.mlir.rust-tests @@ -1,425 +1,1295 @@ #[cfg(test)] mod tests { -use crate::arctorustarcarccmpf::*; + use crate::arctorustarcarccmpf::*; -#[rewrite(main)] -#[test] - fn test_0() { - assert_eq!(call!(oeq_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_1() { - assert_eq!(call!(oeq_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_2() { - assert_eq!(call!(oeq_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oeq_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(oeq_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(oeq_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(oeq_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(oeq_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_3() { - assert_eq!(call!(oeq_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_4() { - assert_eq!(call!(oeq_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(oeq_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oeq_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oeq_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(oeq_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(oeq_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(oeq_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_5() { - assert_eq!(call!(oge_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oge_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oge_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oge_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_6() { - assert_eq!(call!(oge_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_7() { - assert_eq!(call!(oge_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oge_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_8() { - assert_eq!(call!(oge_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oge_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(oge_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oge_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(oge_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_9() { - assert_eq!(call!(oge_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(oge_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(oge_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_10() { - assert_eq!(call!(ogt_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_11() { - assert_eq!(call!(ogt_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ogt_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ogt_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ogt_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_12() { - assert_eq!(call!(ogt_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ogt_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_13() { - assert_eq!(call!(ogt_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(ogt_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(ogt_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_14() { - assert_eq!(call!(ogt_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ogt_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ogt_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ogt_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ogt_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(ogt_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_15() { - assert_eq!(call!(ole_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ole_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ole_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ole_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ole_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_16() { - assert_eq!(call!(ole_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_17() { - assert_eq!(call!(ole_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ole_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ole_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ole_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_18() { - assert_eq!(call!(ole_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(ole_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(ole_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_19() { - assert_eq!(call!(ole_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(ole_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(ole_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_20() { - assert_eq!(call!(olt_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_21() { - assert_eq!(call!(olt_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(olt_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_22() { - assert_eq!(call!(olt_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(olt_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(olt_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(olt_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_23() { - assert_eq!(call!(olt_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(olt_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(olt_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_24() { - assert_eq!(call!(olt_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(olt_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(olt_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(olt_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(olt_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_25() { - assert_eq!(call!(one_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(one_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(one_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(one_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(one_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - assert_eq!(call!(one_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_26() { - assert_eq!(call!(one_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_27() { - assert_eq!(call!(one_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(one_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00)), false); - assert_eq!(call!(one_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00)), false); - assert_eq!(call!(one_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00)), false); - assert_eq!(call!(one_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00)), false); - assert_eq!(call!(one_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00)), false); - } - #[rewrite(main)] - #[test] - fn test_28() { - assert_eq!(call!(one_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - } - #[rewrite(main)] - #[test] - fn test_29() { - assert_eq!(call!(one_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00)), true); - assert_eq!(call!(one_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00)), true); - assert_eq!(call!(one_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00)), true); - } + #[test] + fn test_0() { + assert_eq!( + oeq_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + } + #[test] + fn test_1() { + assert_eq!( + oeq_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + } + #[test] + fn test_2() { + assert_eq!( + oeq_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oeq_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + oeq_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + oeq_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + oeq_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + oeq_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + } + #[test] + fn test_3() { + assert_eq!( + oeq_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + } + #[test] + fn test_4() { + assert_eq!( + oeq_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + oeq_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oeq_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oeq_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + oeq_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + oeq_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + oeq_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + } + #[test] + fn test_5() { + assert_eq!( + oge_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oge_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oge_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oge_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + } + #[test] + fn test_6() { + assert_eq!( + oge_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + } + #[test] + fn test_7() { + assert_eq!( + oge_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oge_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + } + #[test] + fn test_8() { + assert_eq!( + oge_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oge_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + oge_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oge_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + oge_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + } + #[test] + fn test_9() { + assert_eq!( + oge_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + oge_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + oge_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + } + #[test] + fn test_10() { + assert_eq!( + ogt_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + } + #[test] + fn test_11() { + assert_eq!( + ogt_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ogt_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ogt_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ogt_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + } + #[test] + fn test_12() { + assert_eq!( + ogt_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ogt_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + } + #[test] + fn test_13() { + assert_eq!( + ogt_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + ogt_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + ogt_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + } + #[test] + fn test_14() { + assert_eq!( + ogt_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ogt_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ogt_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ogt_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ogt_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + ogt_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + } + #[test] + fn test_15() { + assert_eq!( + ole_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ole_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ole_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ole_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ole_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + } + #[test] + fn test_16() { + assert_eq!( + ole_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + } + #[test] + fn test_17() { + assert_eq!( + ole_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ole_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ole_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ole_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + } + #[test] + fn test_18() { + assert_eq!( + ole_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + ole_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + ole_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + } + #[test] + fn test_19() { + assert_eq!( + ole_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + ole_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + ole_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + } + #[test] + fn test_20() { + assert_eq!( + olt_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + } + #[test] + fn test_21() { + assert_eq!( + olt_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + olt_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + } + #[test] + fn test_22() { + assert_eq!( + olt_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + olt_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + olt_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + olt_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + } + #[test] + fn test_23() { + assert_eq!( + olt_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + olt_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + olt_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + } + #[test] + fn test_24() { + assert_eq!( + olt_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + olt_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + olt_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + olt_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + olt_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + } + #[test] + fn test_25() { + assert_eq!( + one_f32(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + one_f32(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + one_f32(0.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + one_f32(1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + one_f32(3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + assert_eq!( + one_f32(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f32(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + } + #[test] + fn test_26() { + assert_eq!( + one_f32(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f32(0.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f32(0.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(0.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(0.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f32(1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f32(1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + } + #[test] + fn test_27() { + assert_eq!( + one_f32(1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f32(3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f32(3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + one_f32(3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(-3.14000000000000012434e+00, -3.14000000000000012434e+00), + false + ); + assert_eq!( + one_f64(-1.00000000000000000000e+00, -1.00000000000000000000e+00), + false + ); + assert_eq!( + one_f64(0.00000000000000000000e+00, 0.00000000000000000000e+00), + false + ); + assert_eq!( + one_f64(1.00000000000000000000e+00, 1.00000000000000000000e+00), + false + ); + assert_eq!( + one_f64(3.14000000000000012434e+00, 3.14000000000000012434e+00), + false + ); + } + #[test] + fn test_28() { + assert_eq!( + one_f64(-3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(-3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(-3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(-3.14000000000000012434e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f64(-1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f64(-1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(-1.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(-1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f64(0.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f64(0.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + } + #[test] + fn test_29() { + assert_eq!( + one_f64(0.00000000000000000000e+00, 1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(0.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f64(1.00000000000000000000e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f64(1.00000000000000000000e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(1.00000000000000000000e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(1.00000000000000000000e+00, 3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f64(3.14000000000000012434e+00, -3.14000000000000012434e+00), + true + ); + assert_eq!( + one_f64(3.14000000000000012434e+00, -1.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(3.14000000000000012434e+00, 0.00000000000000000000e+00), + true + ); + assert_eq!( + one_f64(3.14000000000000012434e+00, 1.00000000000000000000e+00), + true + ); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/arc-cmpi.mlir b/arc-mlir/src/tests/arc-to-rust/arc-cmpi.mlir index 7f1c640c7..27b672c86 100644 --- a/arc-mlir/src/tests/arc-to-rust/arc-cmpi.mlir +++ b/arc-mlir/src/tests/arc-to-rust/arc-cmpi.mlir @@ -2,244 +2,243 @@ // RUN: arc-mlir-rust-test %t-roundtrip-scf %s -rustinclude %s.rust-tests -canonicalize -remove-scf -canonicalize -to-scf -canonicalize module @arctorustcmpi { -func.func @eq_ui8(%a : ui8, %b : ui8) -> i1 { - %r = arc.cmpi "eq", %a, %b : ui8 - return %r : i1 -} - -func.func @ne_ui8(%a : ui8, %b : ui8) -> i1 { - %r = arc.cmpi "ne", %a, %b : ui8 - return %r : i1 -} - -func.func @lt_ui8(%a : ui8, %b : ui8) -> i1 { - %r = arc.cmpi "lt", %a, %b : ui8 - return %r : i1 -} - -func.func @le_ui8(%a : ui8, %b : ui8) -> i1 { - %r = arc.cmpi "le", %a, %b : ui8 - return %r : i1 -} - -func.func @gt_ui8(%a : ui8, %b : ui8) -> i1 { - %r = arc.cmpi "gt", %a, %b : ui8 - return %r : i1 -} - -func.func @ge_ui8(%a : ui8, %b : ui8) -> i1 { - %r = arc.cmpi "ge", %a, %b : ui8 - return %r : i1 -} - -func.func @eq_ui16(%a : ui16, %b : ui16) -> i1 { - %r = arc.cmpi "eq", %a, %b : ui16 - return %r : i1 -} - -func.func @ne_ui16(%a : ui16, %b : ui16) -> i1 { - %r = arc.cmpi "ne", %a, %b : ui16 - return %r : i1 -} - -func.func @lt_ui16(%a : ui16, %b : ui16) -> i1 { - %r = arc.cmpi "lt", %a, %b : ui16 - return %r : i1 -} - -func.func @le_ui16(%a : ui16, %b : ui16) -> i1 { - %r = arc.cmpi "le", %a, %b : ui16 - return %r : i1 -} - -func.func @gt_ui16(%a : ui16, %b : ui16) -> i1 { - %r = arc.cmpi "gt", %a, %b : ui16 - return %r : i1 -} - -func.func @ge_ui16(%a : ui16, %b : ui16) -> i1 { - %r = arc.cmpi "ge", %a, %b : ui16 - return %r : i1 -} - -func.func @eq_ui32(%a : ui32, %b : ui32) -> i1 { - %r = arc.cmpi "eq", %a, %b : ui32 - return %r : i1 -} - -func.func @ne_ui32(%a : ui32, %b : ui32) -> i1 { - %r = arc.cmpi "ne", %a, %b : ui32 - return %r : i1 -} - -func.func @lt_ui32(%a : ui32, %b : ui32) -> i1 { - %r = arc.cmpi "lt", %a, %b : ui32 - return %r : i1 -} - -func.func @le_ui32(%a : ui32, %b : ui32) -> i1 { - %r = arc.cmpi "le", %a, %b : ui32 - return %r : i1 -} - -func.func @gt_ui32(%a : ui32, %b : ui32) -> i1 { - %r = arc.cmpi "gt", %a, %b : ui32 - return %r : i1 -} - -func.func @ge_ui32(%a : ui32, %b : ui32) -> i1 { - %r = arc.cmpi "ge", %a, %b : ui32 - return %r : i1 -} - -func.func @eq_ui64(%a : ui64, %b : ui64) -> i1 { - %r = arc.cmpi "eq", %a, %b : ui64 - return %r : i1 -} - -func.func @ne_ui64(%a : ui64, %b : ui64) -> i1 { - %r = arc.cmpi "ne", %a, %b : ui64 - return %r : i1 -} - -func.func @lt_ui64(%a : ui64, %b : ui64) -> i1 { - %r = arc.cmpi "lt", %a, %b : ui64 - return %r : i1 -} - -func.func @le_ui64(%a : ui64, %b : ui64) -> i1 { - %r = arc.cmpi "le", %a, %b : ui64 - return %r : i1 -} - -func.func @gt_ui64(%a : ui64, %b : ui64) -> i1 { - %r = arc.cmpi "gt", %a, %b : ui64 - return %r : i1 -} - -func.func @ge_ui64(%a : ui64, %b : ui64) -> i1 { - %r = arc.cmpi "ge", %a, %b : ui64 - return %r : i1 -} - -func.func @eq_si8(%a : si8, %b : si8) -> i1 { - %r = arc.cmpi "eq", %a, %b : si8 - return %r : i1 -} - -func.func @ne_si8(%a : si8, %b : si8) -> i1 { - %r = arc.cmpi "ne", %a, %b : si8 - return %r : i1 -} - -func.func @lt_si8(%a : si8, %b : si8) -> i1 { - %r = arc.cmpi "lt", %a, %b : si8 - return %r : i1 -} - -func.func @le_si8(%a : si8, %b : si8) -> i1 { - %r = arc.cmpi "le", %a, %b : si8 - return %r : i1 -} - -func.func @gt_si8(%a : si8, %b : si8) -> i1 { - %r = arc.cmpi "gt", %a, %b : si8 - return %r : i1 -} - -func.func @ge_si8(%a : si8, %b : si8) -> i1 { - %r = arc.cmpi "ge", %a, %b : si8 - return %r : i1 -} - -func.func @eq_si16(%a : si16, %b : si16) -> i1 { - %r = arc.cmpi "eq", %a, %b : si16 - return %r : i1 -} - -func.func @ne_si16(%a : si16, %b : si16) -> i1 { - %r = arc.cmpi "ne", %a, %b : si16 - return %r : i1 -} - -func.func @lt_si16(%a : si16, %b : si16) -> i1 { - %r = arc.cmpi "lt", %a, %b : si16 - return %r : i1 -} - -func.func @le_si16(%a : si16, %b : si16) -> i1 { - %r = arc.cmpi "le", %a, %b : si16 - return %r : i1 -} - -func.func @gt_si16(%a : si16, %b : si16) -> i1 { - %r = arc.cmpi "gt", %a, %b : si16 - return %r : i1 -} - -func.func @ge_si16(%a : si16, %b : si16) -> i1 { - %r = arc.cmpi "ge", %a, %b : si16 - return %r : i1 -} - -func.func @eq_si32(%a : si32, %b : si32) -> i1 { - %r = arc.cmpi "eq", %a, %b : si32 - return %r : i1 -} - -func.func @ne_si32(%a : si32, %b : si32) -> i1 { - %r = arc.cmpi "ne", %a, %b : si32 - return %r : i1 -} - -func.func @lt_si32(%a : si32, %b : si32) -> i1 { - %r = arc.cmpi "lt", %a, %b : si32 - return %r : i1 -} - -func.func @le_si32(%a : si32, %b : si32) -> i1 { - %r = arc.cmpi "le", %a, %b : si32 - return %r : i1 -} - -func.func @gt_si32(%a : si32, %b : si32) -> i1 { - %r = arc.cmpi "gt", %a, %b : si32 - return %r : i1 -} - -func.func @ge_si32(%a : si32, %b : si32) -> i1 { - %r = arc.cmpi "ge", %a, %b : si32 - return %r : i1 -} - -func.func @eq_si64(%a : si64, %b : si64) -> i1 { - %r = arc.cmpi "eq", %a, %b : si64 - return %r : i1 -} - -func.func @ne_si64(%a : si64, %b : si64) -> i1 { - %r = arc.cmpi "ne", %a, %b : si64 - return %r : i1 -} - -func.func @lt_si64(%a : si64, %b : si64) -> i1 { - %r = arc.cmpi "lt", %a, %b : si64 - return %r : i1 -} - -func.func @le_si64(%a : si64, %b : si64) -> i1 { - %r = arc.cmpi "le", %a, %b : si64 - return %r : i1 -} - -func.func @gt_si64(%a : si64, %b : si64) -> i1 { - %r = arc.cmpi "gt", %a, %b : si64 - return %r : i1 -} - -func.func @ge_si64(%a : si64, %b : si64) -> i1 { - %r = arc.cmpi "ge", %a, %b : si64 - return %r : i1 -} - + func.func @eq_ui8(%a : ui8, %b : ui8) -> i1 { + %r = arc.cmpi "eq", %a, %b : ui8 + return %r : i1 + } + + func.func @ne_ui8(%a : ui8, %b : ui8) -> i1 { + %r = arc.cmpi "ne", %a, %b : ui8 + return %r : i1 + } + + func.func @lt_ui8(%a : ui8, %b : ui8) -> i1 { + %r = arc.cmpi "lt", %a, %b : ui8 + return %r : i1 + } + + func.func @le_ui8(%a : ui8, %b : ui8) -> i1 { + %r = arc.cmpi "le", %a, %b : ui8 + return %r : i1 + } + + func.func @gt_ui8(%a : ui8, %b : ui8) -> i1 { + %r = arc.cmpi "gt", %a, %b : ui8 + return %r : i1 + } + + func.func @ge_ui8(%a : ui8, %b : ui8) -> i1 { + %r = arc.cmpi "ge", %a, %b : ui8 + return %r : i1 + } + + func.func @eq_ui16(%a : ui16, %b : ui16) -> i1 { + %r = arc.cmpi "eq", %a, %b : ui16 + return %r : i1 + } + + func.func @ne_ui16(%a : ui16, %b : ui16) -> i1 { + %r = arc.cmpi "ne", %a, %b : ui16 + return %r : i1 + } + + func.func @lt_ui16(%a : ui16, %b : ui16) -> i1 { + %r = arc.cmpi "lt", %a, %b : ui16 + return %r : i1 + } + + func.func @le_ui16(%a : ui16, %b : ui16) -> i1 { + %r = arc.cmpi "le", %a, %b : ui16 + return %r : i1 + } + + func.func @gt_ui16(%a : ui16, %b : ui16) -> i1 { + %r = arc.cmpi "gt", %a, %b : ui16 + return %r : i1 + } + + func.func @ge_ui16(%a : ui16, %b : ui16) -> i1 { + %r = arc.cmpi "ge", %a, %b : ui16 + return %r : i1 + } + + func.func @eq_ui32(%a : ui32, %b : ui32) -> i1 { + %r = arc.cmpi "eq", %a, %b : ui32 + return %r : i1 + } + + func.func @ne_ui32(%a : ui32, %b : ui32) -> i1 { + %r = arc.cmpi "ne", %a, %b : ui32 + return %r : i1 + } + + func.func @lt_ui32(%a : ui32, %b : ui32) -> i1 { + %r = arc.cmpi "lt", %a, %b : ui32 + return %r : i1 + } + + func.func @le_ui32(%a : ui32, %b : ui32) -> i1 { + %r = arc.cmpi "le", %a, %b : ui32 + return %r : i1 + } + + func.func @gt_ui32(%a : ui32, %b : ui32) -> i1 { + %r = arc.cmpi "gt", %a, %b : ui32 + return %r : i1 + } + + func.func @ge_ui32(%a : ui32, %b : ui32) -> i1 { + %r = arc.cmpi "ge", %a, %b : ui32 + return %r : i1 + } + + func.func @eq_ui64(%a : ui64, %b : ui64) -> i1 { + %r = arc.cmpi "eq", %a, %b : ui64 + return %r : i1 + } + + func.func @ne_ui64(%a : ui64, %b : ui64) -> i1 { + %r = arc.cmpi "ne", %a, %b : ui64 + return %r : i1 + } + + func.func @lt_ui64(%a : ui64, %b : ui64) -> i1 { + %r = arc.cmpi "lt", %a, %b : ui64 + return %r : i1 + } + + func.func @le_ui64(%a : ui64, %b : ui64) -> i1 { + %r = arc.cmpi "le", %a, %b : ui64 + return %r : i1 + } + + func.func @gt_ui64(%a : ui64, %b : ui64) -> i1 { + %r = arc.cmpi "gt", %a, %b : ui64 + return %r : i1 + } + + func.func @ge_ui64(%a : ui64, %b : ui64) -> i1 { + %r = arc.cmpi "ge", %a, %b : ui64 + return %r : i1 + } + + func.func @eq_si8(%a : si8, %b : si8) -> i1 { + %r = arc.cmpi "eq", %a, %b : si8 + return %r : i1 + } + + func.func @ne_si8(%a : si8, %b : si8) -> i1 { + %r = arc.cmpi "ne", %a, %b : si8 + return %r : i1 + } + + func.func @lt_si8(%a : si8, %b : si8) -> i1 { + %r = arc.cmpi "lt", %a, %b : si8 + return %r : i1 + } + + func.func @le_si8(%a : si8, %b : si8) -> i1 { + %r = arc.cmpi "le", %a, %b : si8 + return %r : i1 + } + + func.func @gt_si8(%a : si8, %b : si8) -> i1 { + %r = arc.cmpi "gt", %a, %b : si8 + return %r : i1 + } + + func.func @ge_si8(%a : si8, %b : si8) -> i1 { + %r = arc.cmpi "ge", %a, %b : si8 + return %r : i1 + } + + func.func @eq_si16(%a : si16, %b : si16) -> i1 { + %r = arc.cmpi "eq", %a, %b : si16 + return %r : i1 + } + + func.func @ne_si16(%a : si16, %b : si16) -> i1 { + %r = arc.cmpi "ne", %a, %b : si16 + return %r : i1 + } + + func.func @lt_si16(%a : si16, %b : si16) -> i1 { + %r = arc.cmpi "lt", %a, %b : si16 + return %r : i1 + } + + func.func @le_si16(%a : si16, %b : si16) -> i1 { + %r = arc.cmpi "le", %a, %b : si16 + return %r : i1 + } + + func.func @gt_si16(%a : si16, %b : si16) -> i1 { + %r = arc.cmpi "gt", %a, %b : si16 + return %r : i1 + } + + func.func @ge_si16(%a : si16, %b : si16) -> i1 { + %r = arc.cmpi "ge", %a, %b : si16 + return %r : i1 + } + + func.func @eq_si32(%a : si32, %b : si32) -> i1 { + %r = arc.cmpi "eq", %a, %b : si32 + return %r : i1 + } + + func.func @ne_si32(%a : si32, %b : si32) -> i1 { + %r = arc.cmpi "ne", %a, %b : si32 + return %r : i1 + } + + func.func @lt_si32(%a : si32, %b : si32) -> i1 { + %r = arc.cmpi "lt", %a, %b : si32 + return %r : i1 + } + + func.func @le_si32(%a : si32, %b : si32) -> i1 { + %r = arc.cmpi "le", %a, %b : si32 + return %r : i1 + } + + func.func @gt_si32(%a : si32, %b : si32) -> i1 { + %r = arc.cmpi "gt", %a, %b : si32 + return %r : i1 + } + + func.func @ge_si32(%a : si32, %b : si32) -> i1 { + %r = arc.cmpi "ge", %a, %b : si32 + return %r : i1 + } + + func.func @eq_si64(%a : si64, %b : si64) -> i1 { + %r = arc.cmpi "eq", %a, %b : si64 + return %r : i1 + } + + func.func @ne_si64(%a : si64, %b : si64) -> i1 { + %r = arc.cmpi "ne", %a, %b : si64 + return %r : i1 + } + + func.func @lt_si64(%a : si64, %b : si64) -> i1 { + %r = arc.cmpi "lt", %a, %b : si64 + return %r : i1 + } + + func.func @le_si64(%a : si64, %b : si64) -> i1 { + %r = arc.cmpi "le", %a, %b : si64 + return %r : i1 + } + + func.func @gt_si64(%a : si64, %b : si64) -> i1 { + %r = arc.cmpi "gt", %a, %b : si64 + return %r : i1 + } + + func.func @ge_si64(%a : si64, %b : si64) -> i1 { + %r = arc.cmpi "ge", %a, %b : si64 + return %r : i1 + } } diff --git a/arc-mlir/src/tests/arc-to-rust/arc-cmpi.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/arc-cmpi.mlir.rust-tests index e43e83358..6b073f8c6 100644 --- a/arc-mlir/src/tests/arc-to-rust/arc-cmpi.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/arc-cmpi.mlir.rust-tests @@ -1,7836 +1,7276 @@ #[cfg(test)] mod tests { - use crate::arctorustcmpi::*; - #[rewrite(main)] - #[test] - fn test_0() { - assert_eq!(call!(eq_si16(-32768, -32767)), false); - assert_eq!(call!(eq_si16(-32768, -32547)), false); - assert_eq!(call!(eq_si16(-32768, 0)), false); - assert_eq!(call!(eq_si16(-32768, 1)), false); - assert_eq!(call!(eq_si16(-32768, 2)), false); - assert_eq!(call!(eq_si16(-32768, 3)), false); - assert_eq!(call!(eq_si16(-32768, 4)), false); - assert_eq!(call!(eq_si16(-32768, 10486)), false); - assert_eq!(call!(eq_si16(-32768, 16514)), false); - assert_eq!(call!(eq_si16(-32768, 32766)), false); - } - #[rewrite(main)] - #[test] - fn test_1() { - assert_eq!(call!(eq_si16(-32768, 32767)), false); - assert_eq!(call!(eq_si16(-32767, -32768)), false); - assert_eq!(call!(eq_si16(-32767, -32547)), false); - assert_eq!(call!(eq_si16(-32767, 0)), false); - assert_eq!(call!(eq_si16(-32767, 1)), false); - assert_eq!(call!(eq_si16(-32767, 2)), false); - assert_eq!(call!(eq_si16(-32767, 3)), false); - assert_eq!(call!(eq_si16(-32767, 4)), false); - assert_eq!(call!(eq_si16(-32767, 10486)), false); - assert_eq!(call!(eq_si16(-32767, 16514)), false); - } - #[rewrite(main)] - #[test] - fn test_2() { - assert_eq!(call!(eq_si16(-32767, 32766)), false); - assert_eq!(call!(eq_si16(-32767, 32767)), false); - assert_eq!(call!(eq_si16(-32547, -32768)), false); - assert_eq!(call!(eq_si16(-32547, -32767)), false); - assert_eq!(call!(eq_si16(-32547, 0)), false); - assert_eq!(call!(eq_si16(-32547, 1)), false); - assert_eq!(call!(eq_si16(-32547, 2)), false); - assert_eq!(call!(eq_si16(-32547, 3)), false); - assert_eq!(call!(eq_si16(-32547, 4)), false); - assert_eq!(call!(eq_si16(-32547, 10486)), false); - } - #[rewrite(main)] - #[test] - fn test_3() { - assert_eq!(call!(eq_si16(-32547, 16514)), false); - assert_eq!(call!(eq_si16(-32547, 32766)), false); - assert_eq!(call!(eq_si16(-32547, 32767)), false); - assert_eq!(call!(eq_si16(0, -32768)), false); - assert_eq!(call!(eq_si16(0, -32767)), false); - assert_eq!(call!(eq_si16(0, -32547)), false); - assert_eq!(call!(eq_si16(0, 1)), false); - assert_eq!(call!(eq_si16(0, 2)), false); - assert_eq!(call!(eq_si16(0, 3)), false); - assert_eq!(call!(eq_si16(0, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_4() { - assert_eq!(call!(eq_si16(0, 10486)), false); - assert_eq!(call!(eq_si16(0, 16514)), false); - assert_eq!(call!(eq_si16(0, 32766)), false); - assert_eq!(call!(eq_si16(0, 32767)), false); - assert_eq!(call!(eq_si16(1, -32768)), false); - assert_eq!(call!(eq_si16(1, -32767)), false); - assert_eq!(call!(eq_si16(1, -32547)), false); - assert_eq!(call!(eq_si16(1, 0)), false); - assert_eq!(call!(eq_si16(1, 2)), false); - assert_eq!(call!(eq_si16(1, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_5() { - assert_eq!(call!(eq_si16(1, 4)), false); - assert_eq!(call!(eq_si16(1, 10486)), false); - assert_eq!(call!(eq_si16(1, 16514)), false); - assert_eq!(call!(eq_si16(1, 32766)), false); - assert_eq!(call!(eq_si16(1, 32767)), false); - assert_eq!(call!(eq_si16(2, -32768)), false); - assert_eq!(call!(eq_si16(2, -32767)), false); - assert_eq!(call!(eq_si16(2, -32547)), false); - assert_eq!(call!(eq_si16(2, 0)), false); - assert_eq!(call!(eq_si16(2, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_6() { - assert_eq!(call!(eq_si16(2, 3)), false); - assert_eq!(call!(eq_si16(2, 4)), false); - assert_eq!(call!(eq_si16(2, 10486)), false); - assert_eq!(call!(eq_si16(2, 16514)), false); - assert_eq!(call!(eq_si16(2, 32766)), false); - assert_eq!(call!(eq_si16(2, 32767)), false); - assert_eq!(call!(eq_si16(3, -32768)), false); - assert_eq!(call!(eq_si16(3, -32767)), false); - assert_eq!(call!(eq_si16(3, -32547)), false); - assert_eq!(call!(eq_si16(3, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_7() { - assert_eq!(call!(eq_si16(3, 1)), false); - assert_eq!(call!(eq_si16(3, 2)), false); - assert_eq!(call!(eq_si16(3, 4)), false); - assert_eq!(call!(eq_si16(3, 10486)), false); - assert_eq!(call!(eq_si16(3, 16514)), false); - assert_eq!(call!(eq_si16(3, 32766)), false); - assert_eq!(call!(eq_si16(3, 32767)), false); - assert_eq!(call!(eq_si16(4, -32768)), false); - assert_eq!(call!(eq_si16(4, -32767)), false); - assert_eq!(call!(eq_si16(4, -32547)), false); - } - #[rewrite(main)] - #[test] - fn test_8() { - assert_eq!(call!(eq_si16(4, 0)), false); - assert_eq!(call!(eq_si16(4, 1)), false); - assert_eq!(call!(eq_si16(4, 2)), false); - assert_eq!(call!(eq_si16(4, 3)), false); - assert_eq!(call!(eq_si16(4, 10486)), false); - assert_eq!(call!(eq_si16(4, 16514)), false); - assert_eq!(call!(eq_si16(4, 32766)), false); - assert_eq!(call!(eq_si16(4, 32767)), false); - assert_eq!(call!(eq_si16(10486, -32768)), false); - assert_eq!(call!(eq_si16(10486, -32767)), false); - } - #[rewrite(main)] - #[test] - fn test_9() { - assert_eq!(call!(eq_si16(10486, -32547)), false); - assert_eq!(call!(eq_si16(10486, 0)), false); - assert_eq!(call!(eq_si16(10486, 1)), false); - assert_eq!(call!(eq_si16(10486, 2)), false); - assert_eq!(call!(eq_si16(10486, 3)), false); - assert_eq!(call!(eq_si16(10486, 4)), false); - assert_eq!(call!(eq_si16(10486, 16514)), false); - assert_eq!(call!(eq_si16(10486, 32766)), false); - assert_eq!(call!(eq_si16(10486, 32767)), false); - assert_eq!(call!(eq_si16(16514, -32768)), false); - } - #[rewrite(main)] - #[test] - fn test_10() { - assert_eq!(call!(eq_si16(16514, -32767)), false); - assert_eq!(call!(eq_si16(16514, -32547)), false); - assert_eq!(call!(eq_si16(16514, 0)), false); - assert_eq!(call!(eq_si16(16514, 1)), false); - assert_eq!(call!(eq_si16(16514, 2)), false); - assert_eq!(call!(eq_si16(16514, 3)), false); - assert_eq!(call!(eq_si16(16514, 4)), false); - assert_eq!(call!(eq_si16(16514, 10486)), false); - assert_eq!(call!(eq_si16(16514, 32766)), false); - assert_eq!(call!(eq_si16(16514, 32767)), false); - } - #[rewrite(main)] - #[test] - fn test_11() { - assert_eq!(call!(eq_si16(32766, -32768)), false); - assert_eq!(call!(eq_si16(32766, -32767)), false); - assert_eq!(call!(eq_si16(32766, -32547)), false); - assert_eq!(call!(eq_si16(32766, 0)), false); - assert_eq!(call!(eq_si16(32766, 1)), false); - assert_eq!(call!(eq_si16(32766, 2)), false); - assert_eq!(call!(eq_si16(32766, 3)), false); - assert_eq!(call!(eq_si16(32766, 4)), false); - assert_eq!(call!(eq_si16(32766, 10486)), false); - assert_eq!(call!(eq_si16(32766, 16514)), false); - } - #[rewrite(main)] - #[test] - fn test_12() { - assert_eq!(call!(eq_si16(32766, 32767)), false); - assert_eq!(call!(eq_si16(32767, -32768)), false); - assert_eq!(call!(eq_si16(32767, -32767)), false); - assert_eq!(call!(eq_si16(32767, -32547)), false); - assert_eq!(call!(eq_si16(32767, 0)), false); - assert_eq!(call!(eq_si16(32767, 1)), false); - assert_eq!(call!(eq_si16(32767, 2)), false); - assert_eq!(call!(eq_si16(32767, 3)), false); - assert_eq!(call!(eq_si16(32767, 4)), false); - assert_eq!(call!(eq_si16(32767, 10486)), false); - } - #[rewrite(main)] - #[test] - fn test_13() { - assert_eq!(call!(eq_si16(32767, 16514)), false); - assert_eq!(call!(eq_si16(32767, 32766)), false); - assert_eq!(call!(eq_si16(-32768, -32768)), true); - assert_eq!(call!(eq_si16(-32767, -32767)), true); - assert_eq!(call!(eq_si16(-32547, -32547)), true); - assert_eq!(call!(eq_si16(0, 0)), true); - assert_eq!(call!(eq_si16(1, 1)), true); - assert_eq!(call!(eq_si16(2, 2)), true); - assert_eq!(call!(eq_si16(3, 3)), true); - assert_eq!(call!(eq_si16(4, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_14() { - assert_eq!(call!(eq_si16(10486, 10486)), true); - assert_eq!(call!(eq_si16(16514, 16514)), true); - assert_eq!(call!(eq_si16(32766, 32766)), true); - assert_eq!(call!(eq_si16(32767, 32767)), true); - assert_eq!(call!(eq_si32(-2147483648, -2147483647)), false); - assert_eq!(call!(eq_si32(-2147483648, -1713183800)), false); - assert_eq!(call!(eq_si32(-2147483648, -1252582164)), false); - assert_eq!(call!(eq_si32(-2147483648, -1035405763)), false); - assert_eq!(call!(eq_si32(-2147483648, 0)), false); - assert_eq!(call!(eq_si32(-2147483648, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_15() { - assert_eq!(call!(eq_si32(-2147483648, 2)), false); - assert_eq!(call!(eq_si32(-2147483648, 3)), false); - assert_eq!(call!(eq_si32(-2147483648, 4)), false); - assert_eq!(call!(eq_si32(-2147483648, 2147483646)), false); - assert_eq!(call!(eq_si32(-2147483648, 2147483647)), false); - assert_eq!(call!(eq_si32(-2147483647, -2147483648)), false); - assert_eq!(call!(eq_si32(-2147483647, -1713183800)), false); - assert_eq!(call!(eq_si32(-2147483647, -1252582164)), false); - assert_eq!(call!(eq_si32(-2147483647, -1035405763)), false); - assert_eq!(call!(eq_si32(-2147483647, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_16() { - assert_eq!(call!(eq_si32(-2147483647, 1)), false); - assert_eq!(call!(eq_si32(-2147483647, 2)), false); - assert_eq!(call!(eq_si32(-2147483647, 3)), false); - assert_eq!(call!(eq_si32(-2147483647, 4)), false); - assert_eq!(call!(eq_si32(-2147483647, 2147483646)), false); - assert_eq!(call!(eq_si32(-2147483647, 2147483647)), false); - assert_eq!(call!(eq_si32(-1713183800, -2147483648)), false); - assert_eq!(call!(eq_si32(-1713183800, -2147483647)), false); - assert_eq!(call!(eq_si32(-1713183800, -1252582164)), false); - assert_eq!(call!(eq_si32(-1713183800, -1035405763)), false); - } - #[rewrite(main)] - #[test] - fn test_17() { - assert_eq!(call!(eq_si32(-1713183800, 0)), false); - assert_eq!(call!(eq_si32(-1713183800, 1)), false); - assert_eq!(call!(eq_si32(-1713183800, 2)), false); - assert_eq!(call!(eq_si32(-1713183800, 3)), false); - assert_eq!(call!(eq_si32(-1713183800, 4)), false); - assert_eq!(call!(eq_si32(-1713183800, 2147483646)), false); - assert_eq!(call!(eq_si32(-1713183800, 2147483647)), false); - assert_eq!(call!(eq_si32(-1252582164, -2147483648)), false); - assert_eq!(call!(eq_si32(-1252582164, -2147483647)), false); - assert_eq!(call!(eq_si32(-1252582164, -1713183800)), false); - } - #[rewrite(main)] - #[test] - fn test_18() { - assert_eq!(call!(eq_si32(-1252582164, -1035405763)), false); - assert_eq!(call!(eq_si32(-1252582164, 0)), false); - assert_eq!(call!(eq_si32(-1252582164, 1)), false); - assert_eq!(call!(eq_si32(-1252582164, 2)), false); - assert_eq!(call!(eq_si32(-1252582164, 3)), false); - assert_eq!(call!(eq_si32(-1252582164, 4)), false); - assert_eq!(call!(eq_si32(-1252582164, 2147483646)), false); - assert_eq!(call!(eq_si32(-1252582164, 2147483647)), false); - assert_eq!(call!(eq_si32(-1035405763, -2147483648)), false); - assert_eq!(call!(eq_si32(-1035405763, -2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_19() { - assert_eq!(call!(eq_si32(-1035405763, -1713183800)), false); - assert_eq!(call!(eq_si32(-1035405763, -1252582164)), false); - assert_eq!(call!(eq_si32(-1035405763, 0)), false); - assert_eq!(call!(eq_si32(-1035405763, 1)), false); - assert_eq!(call!(eq_si32(-1035405763, 2)), false); - assert_eq!(call!(eq_si32(-1035405763, 3)), false); - assert_eq!(call!(eq_si32(-1035405763, 4)), false); - assert_eq!(call!(eq_si32(-1035405763, 2147483646)), false); - assert_eq!(call!(eq_si32(-1035405763, 2147483647)), false); - assert_eq!(call!(eq_si32(0, -2147483648)), false); - } - #[rewrite(main)] - #[test] - fn test_20() { - assert_eq!(call!(eq_si32(0, -2147483647)), false); - assert_eq!(call!(eq_si32(0, -1713183800)), false); - assert_eq!(call!(eq_si32(0, -1252582164)), false); - assert_eq!(call!(eq_si32(0, -1035405763)), false); - assert_eq!(call!(eq_si32(0, 1)), false); - assert_eq!(call!(eq_si32(0, 2)), false); - assert_eq!(call!(eq_si32(0, 3)), false); - assert_eq!(call!(eq_si32(0, 4)), false); - assert_eq!(call!(eq_si32(0, 2147483646)), false); - assert_eq!(call!(eq_si32(0, 2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_21() { - assert_eq!(call!(eq_si32(1, -2147483648)), false); - assert_eq!(call!(eq_si32(1, -2147483647)), false); - assert_eq!(call!(eq_si32(1, -1713183800)), false); - assert_eq!(call!(eq_si32(1, -1252582164)), false); - assert_eq!(call!(eq_si32(1, -1035405763)), false); - assert_eq!(call!(eq_si32(1, 0)), false); - assert_eq!(call!(eq_si32(1, 2)), false); - assert_eq!(call!(eq_si32(1, 3)), false); - assert_eq!(call!(eq_si32(1, 4)), false); - assert_eq!(call!(eq_si32(1, 2147483646)), false); - } - #[rewrite(main)] - #[test] - fn test_22() { - assert_eq!(call!(eq_si32(1, 2147483647)), false); - assert_eq!(call!(eq_si32(2, -2147483648)), false); - assert_eq!(call!(eq_si32(2, -2147483647)), false); - assert_eq!(call!(eq_si32(2, -1713183800)), false); - assert_eq!(call!(eq_si32(2, -1252582164)), false); - assert_eq!(call!(eq_si32(2, -1035405763)), false); - assert_eq!(call!(eq_si32(2, 0)), false); - assert_eq!(call!(eq_si32(2, 1)), false); - assert_eq!(call!(eq_si32(2, 3)), false); - assert_eq!(call!(eq_si32(2, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_23() { - assert_eq!(call!(eq_si32(2, 2147483646)), false); - assert_eq!(call!(eq_si32(2, 2147483647)), false); - assert_eq!(call!(eq_si32(3, -2147483648)), false); - assert_eq!(call!(eq_si32(3, -2147483647)), false); - assert_eq!(call!(eq_si32(3, -1713183800)), false); - assert_eq!(call!(eq_si32(3, -1252582164)), false); - assert_eq!(call!(eq_si32(3, -1035405763)), false); - assert_eq!(call!(eq_si32(3, 0)), false); - assert_eq!(call!(eq_si32(3, 1)), false); - assert_eq!(call!(eq_si32(3, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_24() { - assert_eq!(call!(eq_si32(3, 4)), false); - assert_eq!(call!(eq_si32(3, 2147483646)), false); - assert_eq!(call!(eq_si32(3, 2147483647)), false); - assert_eq!(call!(eq_si32(4, -2147483648)), false); - assert_eq!(call!(eq_si32(4, -2147483647)), false); - assert_eq!(call!(eq_si32(4, -1713183800)), false); - assert_eq!(call!(eq_si32(4, -1252582164)), false); - assert_eq!(call!(eq_si32(4, -1035405763)), false); - assert_eq!(call!(eq_si32(4, 0)), false); - assert_eq!(call!(eq_si32(4, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_25() { - assert_eq!(call!(eq_si32(4, 2)), false); - assert_eq!(call!(eq_si32(4, 3)), false); - assert_eq!(call!(eq_si32(4, 2147483646)), false); - assert_eq!(call!(eq_si32(4, 2147483647)), false); - assert_eq!(call!(eq_si32(2147483646, -2147483648)), false); - assert_eq!(call!(eq_si32(2147483646, -2147483647)), false); - assert_eq!(call!(eq_si32(2147483646, -1713183800)), false); - assert_eq!(call!(eq_si32(2147483646, -1252582164)), false); - assert_eq!(call!(eq_si32(2147483646, -1035405763)), false); - assert_eq!(call!(eq_si32(2147483646, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_26() { - assert_eq!(call!(eq_si32(2147483646, 1)), false); - assert_eq!(call!(eq_si32(2147483646, 2)), false); - assert_eq!(call!(eq_si32(2147483646, 3)), false); - assert_eq!(call!(eq_si32(2147483646, 4)), false); - assert_eq!(call!(eq_si32(2147483646, 2147483647)), false); - assert_eq!(call!(eq_si32(2147483647, -2147483648)), false); - assert_eq!(call!(eq_si32(2147483647, -2147483647)), false); - assert_eq!(call!(eq_si32(2147483647, -1713183800)), false); - assert_eq!(call!(eq_si32(2147483647, -1252582164)), false); - assert_eq!(call!(eq_si32(2147483647, -1035405763)), false); - } - #[rewrite(main)] - #[test] - fn test_27() { - assert_eq!(call!(eq_si32(2147483647, 0)), false); - assert_eq!(call!(eq_si32(2147483647, 1)), false); - assert_eq!(call!(eq_si32(2147483647, 2)), false); - assert_eq!(call!(eq_si32(2147483647, 3)), false); - assert_eq!(call!(eq_si32(2147483647, 4)), false); - assert_eq!(call!(eq_si32(2147483647, 2147483646)), false); - assert_eq!(call!(eq_si32(-2147483648, -2147483648)), true); - assert_eq!(call!(eq_si32(-2147483647, -2147483647)), true); - assert_eq!(call!(eq_si32(-1713183800, -1713183800)), true); - assert_eq!(call!(eq_si32(-1252582164, -1252582164)), true); - } - #[rewrite(main)] - #[test] - fn test_28() { - assert_eq!(call!(eq_si32(-1035405763, -1035405763)), true); - assert_eq!(call!(eq_si32(0, 0)), true); - assert_eq!(call!(eq_si32(1, 1)), true); - assert_eq!(call!(eq_si32(2, 2)), true); - assert_eq!(call!(eq_si32(3, 3)), true); - assert_eq!(call!(eq_si32(4, 4)), true); - assert_eq!(call!(eq_si32(2147483646, 2147483646)), true); - assert_eq!(call!(eq_si32(2147483647, 2147483647)), true); - assert_eq!(call!(eq_si64(-9223372036854775808, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(-9223372036854775808, -1741927215160008704)), false); - } - #[rewrite(main)] - #[test] - fn test_29() { - assert_eq!(call!(eq_si64(-9223372036854775808, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(-9223372036854775808, 0)), false); - assert_eq!(call!(eq_si64(-9223372036854775808, 1)), false); - assert_eq!(call!(eq_si64(-9223372036854775808, 2)), false); - assert_eq!(call!(eq_si64(-9223372036854775808, 3)), false); - assert_eq!(call!(eq_si64(-9223372036854775808, 4)), false); - assert_eq!(call!(eq_si64(-9223372036854775808, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(-9223372036854775808, 9223372036854775806)), false); - assert_eq!(call!(eq_si64(-9223372036854775808, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, -9223372036854775808)), false); - } - #[rewrite(main)] - #[test] - fn test_30() { - assert_eq!(call!(eq_si64(-9223372036854775807, -1741927215160008704)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, 0)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, 1)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, 2)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, 3)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, 4)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, 9223372036854775806)), false); - assert_eq!(call!(eq_si64(-9223372036854775807, 9223372036854775807)), false); - } - #[rewrite(main)] - #[test] - fn test_31() { - assert_eq!(call!(eq_si64(-1741927215160008704, -9223372036854775808)), false); - assert_eq!(call!(eq_si64(-1741927215160008704, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(-1741927215160008704, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(-1741927215160008704, 0)), false); - assert_eq!(call!(eq_si64(-1741927215160008704, 1)), false); - assert_eq!(call!(eq_si64(-1741927215160008704, 2)), false); - assert_eq!(call!(eq_si64(-1741927215160008704, 3)), false); - assert_eq!(call!(eq_si64(-1741927215160008704, 4)), false); - assert_eq!(call!(eq_si64(-1741927215160008704, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(-1741927215160008704, 9223372036854775806)), false); - } - #[rewrite(main)] - #[test] - fn test_32() { - assert_eq!(call!(eq_si64(-1741927215160008704, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, -9223372036854775808)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, -1741927215160008704)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, 0)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, 1)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, 2)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, 3)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, 4)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, 5577148965131116544)), false); - } - #[rewrite(main)] - #[test] - fn test_33() { - assert_eq!(call!(eq_si64(-1328271339354574848, 9223372036854775806)), false); - assert_eq!(call!(eq_si64(-1328271339354574848, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(0, -9223372036854775808)), false); - assert_eq!(call!(eq_si64(0, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(0, -1741927215160008704)), false); - assert_eq!(call!(eq_si64(0, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(0, 1)), false); - assert_eq!(call!(eq_si64(0, 2)), false); - assert_eq!(call!(eq_si64(0, 3)), false); - assert_eq!(call!(eq_si64(0, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_34() { - assert_eq!(call!(eq_si64(0, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(0, 9223372036854775806)), false); - assert_eq!(call!(eq_si64(0, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(1, -9223372036854775808)), false); - assert_eq!(call!(eq_si64(1, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(1, -1741927215160008704)), false); - assert_eq!(call!(eq_si64(1, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(1, 0)), false); - assert_eq!(call!(eq_si64(1, 2)), false); - assert_eq!(call!(eq_si64(1, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_35() { - assert_eq!(call!(eq_si64(1, 4)), false); - assert_eq!(call!(eq_si64(1, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(1, 9223372036854775806)), false); - assert_eq!(call!(eq_si64(1, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(2, -9223372036854775808)), false); - assert_eq!(call!(eq_si64(2, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(2, -1741927215160008704)), false); - assert_eq!(call!(eq_si64(2, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(2, 0)), false); - assert_eq!(call!(eq_si64(2, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_36() { - assert_eq!(call!(eq_si64(2, 3)), false); - assert_eq!(call!(eq_si64(2, 4)), false); - assert_eq!(call!(eq_si64(2, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(2, 9223372036854775806)), false); - assert_eq!(call!(eq_si64(2, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(3, -9223372036854775808)), false); - assert_eq!(call!(eq_si64(3, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(3, -1741927215160008704)), false); - assert_eq!(call!(eq_si64(3, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(3, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_37() { - assert_eq!(call!(eq_si64(3, 1)), false); - assert_eq!(call!(eq_si64(3, 2)), false); - assert_eq!(call!(eq_si64(3, 4)), false); - assert_eq!(call!(eq_si64(3, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(3, 9223372036854775806)), false); - assert_eq!(call!(eq_si64(3, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(4, -9223372036854775808)), false); - assert_eq!(call!(eq_si64(4, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(4, -1741927215160008704)), false); - assert_eq!(call!(eq_si64(4, -1328271339354574848)), false); - } - #[rewrite(main)] - #[test] - fn test_38() { - assert_eq!(call!(eq_si64(4, 0)), false); - assert_eq!(call!(eq_si64(4, 1)), false); - assert_eq!(call!(eq_si64(4, 2)), false); - assert_eq!(call!(eq_si64(4, 3)), false); - assert_eq!(call!(eq_si64(4, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(4, 9223372036854775806)), false); - assert_eq!(call!(eq_si64(4, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(5577148965131116544, -9223372036854775808)), false); - assert_eq!(call!(eq_si64(5577148965131116544, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(5577148965131116544, -1741927215160008704)), false); - } - #[rewrite(main)] - #[test] - fn test_39() { - assert_eq!(call!(eq_si64(5577148965131116544, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(5577148965131116544, 0)), false); - assert_eq!(call!(eq_si64(5577148965131116544, 1)), false); - assert_eq!(call!(eq_si64(5577148965131116544, 2)), false); - assert_eq!(call!(eq_si64(5577148965131116544, 3)), false); - assert_eq!(call!(eq_si64(5577148965131116544, 4)), false); - assert_eq!(call!(eq_si64(5577148965131116544, 9223372036854775806)), false); - assert_eq!(call!(eq_si64(5577148965131116544, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(9223372036854775806, -9223372036854775808)), false); - assert_eq!(call!(eq_si64(9223372036854775806, -9223372036854775807)), false); - } - #[rewrite(main)] - #[test] - fn test_40() { - assert_eq!(call!(eq_si64(9223372036854775806, -1741927215160008704)), false); - assert_eq!(call!(eq_si64(9223372036854775806, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(9223372036854775806, 0)), false); - assert_eq!(call!(eq_si64(9223372036854775806, 1)), false); - assert_eq!(call!(eq_si64(9223372036854775806, 2)), false); - assert_eq!(call!(eq_si64(9223372036854775806, 3)), false); - assert_eq!(call!(eq_si64(9223372036854775806, 4)), false); - assert_eq!(call!(eq_si64(9223372036854775806, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(9223372036854775806, 9223372036854775807)), false); - assert_eq!(call!(eq_si64(9223372036854775807, -9223372036854775808)), false); - } - #[rewrite(main)] - #[test] - fn test_41() { - assert_eq!(call!(eq_si64(9223372036854775807, -9223372036854775807)), false); - assert_eq!(call!(eq_si64(9223372036854775807, -1741927215160008704)), false); - assert_eq!(call!(eq_si64(9223372036854775807, -1328271339354574848)), false); - assert_eq!(call!(eq_si64(9223372036854775807, 0)), false); - assert_eq!(call!(eq_si64(9223372036854775807, 1)), false); - assert_eq!(call!(eq_si64(9223372036854775807, 2)), false); - assert_eq!(call!(eq_si64(9223372036854775807, 3)), false); - assert_eq!(call!(eq_si64(9223372036854775807, 4)), false); - assert_eq!(call!(eq_si64(9223372036854775807, 5577148965131116544)), false); - assert_eq!(call!(eq_si64(9223372036854775807, 9223372036854775806)), false); - } - #[rewrite(main)] - #[test] - fn test_42() { - assert_eq!(call!(eq_si64(-9223372036854775808, -9223372036854775808)), true); - assert_eq!(call!(eq_si64(-9223372036854775807, -9223372036854775807)), true); - assert_eq!(call!(eq_si64(-1741927215160008704, -1741927215160008704)), true); - assert_eq!(call!(eq_si64(-1328271339354574848, -1328271339354574848)), true); - assert_eq!(call!(eq_si64(0, 0)), true); - assert_eq!(call!(eq_si64(1, 1)), true); - assert_eq!(call!(eq_si64(2, 2)), true); - assert_eq!(call!(eq_si64(3, 3)), true); - assert_eq!(call!(eq_si64(4, 4)), true); - assert_eq!(call!(eq_si64(5577148965131116544, 5577148965131116544)), true); - } - #[rewrite(main)] - #[test] - fn test_43() { - assert_eq!(call!(eq_si64(9223372036854775806, 9223372036854775806)), true); - assert_eq!(call!(eq_si64(9223372036854775807, 9223372036854775807)), true); - assert_eq!(call!(eq_si8(-128, -127)), false); - assert_eq!(call!(eq_si8(-128, 0)), false); - assert_eq!(call!(eq_si8(-128, 1)), false); - assert_eq!(call!(eq_si8(-128, 2)), false); - assert_eq!(call!(eq_si8(-128, 3)), false); - assert_eq!(call!(eq_si8(-128, 4)), false); - assert_eq!(call!(eq_si8(-128, 16)), false); - assert_eq!(call!(eq_si8(-128, 126)), false); - } - #[rewrite(main)] - #[test] - fn test_44() { - assert_eq!(call!(eq_si8(-128, 127)), false); - assert_eq!(call!(eq_si8(-127, -128)), false); - assert_eq!(call!(eq_si8(-127, 0)), false); - assert_eq!(call!(eq_si8(-127, 1)), false); - assert_eq!(call!(eq_si8(-127, 2)), false); - assert_eq!(call!(eq_si8(-127, 3)), false); - assert_eq!(call!(eq_si8(-127, 4)), false); - assert_eq!(call!(eq_si8(-127, 16)), false); - assert_eq!(call!(eq_si8(-127, 126)), false); - assert_eq!(call!(eq_si8(-127, 127)), false); - } - #[rewrite(main)] - #[test] - fn test_45() { - assert_eq!(call!(eq_si8(0, -128)), false); - assert_eq!(call!(eq_si8(0, -127)), false); - assert_eq!(call!(eq_si8(0, 1)), false); - assert_eq!(call!(eq_si8(0, 2)), false); - assert_eq!(call!(eq_si8(0, 3)), false); - assert_eq!(call!(eq_si8(0, 4)), false); - assert_eq!(call!(eq_si8(0, 16)), false); - assert_eq!(call!(eq_si8(0, 126)), false); - assert_eq!(call!(eq_si8(0, 127)), false); - assert_eq!(call!(eq_si8(1, -128)), false); - } - #[rewrite(main)] - #[test] - fn test_46() { - assert_eq!(call!(eq_si8(1, -127)), false); - assert_eq!(call!(eq_si8(1, 0)), false); - assert_eq!(call!(eq_si8(1, 2)), false); - assert_eq!(call!(eq_si8(1, 3)), false); - assert_eq!(call!(eq_si8(1, 4)), false); - assert_eq!(call!(eq_si8(1, 16)), false); - assert_eq!(call!(eq_si8(1, 126)), false); - assert_eq!(call!(eq_si8(1, 127)), false); - assert_eq!(call!(eq_si8(2, -128)), false); - assert_eq!(call!(eq_si8(2, -127)), false); - } - #[rewrite(main)] - #[test] - fn test_47() { - assert_eq!(call!(eq_si8(2, 0)), false); - assert_eq!(call!(eq_si8(2, 1)), false); - assert_eq!(call!(eq_si8(2, 3)), false); - assert_eq!(call!(eq_si8(2, 4)), false); - assert_eq!(call!(eq_si8(2, 16)), false); - assert_eq!(call!(eq_si8(2, 126)), false); - assert_eq!(call!(eq_si8(2, 127)), false); - assert_eq!(call!(eq_si8(3, -128)), false); - assert_eq!(call!(eq_si8(3, -127)), false); - assert_eq!(call!(eq_si8(3, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_48() { - assert_eq!(call!(eq_si8(3, 1)), false); - assert_eq!(call!(eq_si8(3, 2)), false); - assert_eq!(call!(eq_si8(3, 4)), false); - assert_eq!(call!(eq_si8(3, 16)), false); - assert_eq!(call!(eq_si8(3, 126)), false); - assert_eq!(call!(eq_si8(3, 127)), false); - assert_eq!(call!(eq_si8(4, -128)), false); - assert_eq!(call!(eq_si8(4, -127)), false); - assert_eq!(call!(eq_si8(4, 0)), false); - assert_eq!(call!(eq_si8(4, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_49() { - assert_eq!(call!(eq_si8(4, 2)), false); - assert_eq!(call!(eq_si8(4, 3)), false); - assert_eq!(call!(eq_si8(4, 16)), false); - assert_eq!(call!(eq_si8(4, 126)), false); - assert_eq!(call!(eq_si8(4, 127)), false); - assert_eq!(call!(eq_si8(16, -128)), false); - assert_eq!(call!(eq_si8(16, -127)), false); - assert_eq!(call!(eq_si8(16, 0)), false); - assert_eq!(call!(eq_si8(16, 1)), false); - assert_eq!(call!(eq_si8(16, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_50() { - assert_eq!(call!(eq_si8(16, 3)), false); - assert_eq!(call!(eq_si8(16, 4)), false); - assert_eq!(call!(eq_si8(16, 126)), false); - assert_eq!(call!(eq_si8(16, 127)), false); - assert_eq!(call!(eq_si8(126, -128)), false); - assert_eq!(call!(eq_si8(126, -127)), false); - assert_eq!(call!(eq_si8(126, 0)), false); - assert_eq!(call!(eq_si8(126, 1)), false); - assert_eq!(call!(eq_si8(126, 2)), false); - assert_eq!(call!(eq_si8(126, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_51() { - assert_eq!(call!(eq_si8(126, 4)), false); - assert_eq!(call!(eq_si8(126, 16)), false); - assert_eq!(call!(eq_si8(126, 127)), false); - assert_eq!(call!(eq_si8(127, -128)), false); - assert_eq!(call!(eq_si8(127, -127)), false); - assert_eq!(call!(eq_si8(127, 0)), false); - assert_eq!(call!(eq_si8(127, 1)), false); - assert_eq!(call!(eq_si8(127, 2)), false); - assert_eq!(call!(eq_si8(127, 3)), false); - assert_eq!(call!(eq_si8(127, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_52() { - assert_eq!(call!(eq_si8(127, 16)), false); - assert_eq!(call!(eq_si8(127, 126)), false); - assert_eq!(call!(eq_si8(-128, -128)), true); - assert_eq!(call!(eq_si8(-127, -127)), true); - assert_eq!(call!(eq_si8(0, 0)), true); - assert_eq!(call!(eq_si8(1, 1)), true); - assert_eq!(call!(eq_si8(2, 2)), true); - assert_eq!(call!(eq_si8(3, 3)), true); - assert_eq!(call!(eq_si8(4, 4)), true); - assert_eq!(call!(eq_si8(16, 16)), true); - } - #[rewrite(main)] - #[test] - fn test_53() { - assert_eq!(call!(eq_si8(126, 126)), true); - assert_eq!(call!(eq_si8(127, 127)), true); - assert_eq!(call!(eq_ui16(0, 1)), false); - assert_eq!(call!(eq_ui16(0, 2)), false); - assert_eq!(call!(eq_ui16(0, 3)), false); - assert_eq!(call!(eq_ui16(0, 4)), false); - assert_eq!(call!(eq_ui16(0, 1717)), false); - assert_eq!(call!(eq_ui16(0, 17988)), false); - assert_eq!(call!(eq_ui16(0, 65096)), false); - assert_eq!(call!(eq_ui16(0, 65534)), false); - } - #[rewrite(main)] - #[test] - fn test_54() { - assert_eq!(call!(eq_ui16(0, 65535)), false); - assert_eq!(call!(eq_ui16(1, 0)), false); - assert_eq!(call!(eq_ui16(1, 2)), false); - assert_eq!(call!(eq_ui16(1, 3)), false); - assert_eq!(call!(eq_ui16(1, 4)), false); - assert_eq!(call!(eq_ui16(1, 1717)), false); - assert_eq!(call!(eq_ui16(1, 17988)), false); - assert_eq!(call!(eq_ui16(1, 65096)), false); - assert_eq!(call!(eq_ui16(1, 65534)), false); - assert_eq!(call!(eq_ui16(1, 65535)), false); - } - #[rewrite(main)] - #[test] - fn test_55() { - assert_eq!(call!(eq_ui16(2, 0)), false); - assert_eq!(call!(eq_ui16(2, 1)), false); - assert_eq!(call!(eq_ui16(2, 3)), false); - assert_eq!(call!(eq_ui16(2, 4)), false); - assert_eq!(call!(eq_ui16(2, 1717)), false); - assert_eq!(call!(eq_ui16(2, 17988)), false); - assert_eq!(call!(eq_ui16(2, 65096)), false); - assert_eq!(call!(eq_ui16(2, 65534)), false); - assert_eq!(call!(eq_ui16(2, 65535)), false); - assert_eq!(call!(eq_ui16(3, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_56() { - assert_eq!(call!(eq_ui16(3, 1)), false); - assert_eq!(call!(eq_ui16(3, 2)), false); - assert_eq!(call!(eq_ui16(3, 4)), false); - assert_eq!(call!(eq_ui16(3, 1717)), false); - assert_eq!(call!(eq_ui16(3, 17988)), false); - assert_eq!(call!(eq_ui16(3, 65096)), false); - assert_eq!(call!(eq_ui16(3, 65534)), false); - assert_eq!(call!(eq_ui16(3, 65535)), false); - assert_eq!(call!(eq_ui16(4, 0)), false); - assert_eq!(call!(eq_ui16(4, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_57() { - assert_eq!(call!(eq_ui16(4, 2)), false); - assert_eq!(call!(eq_ui16(4, 3)), false); - assert_eq!(call!(eq_ui16(4, 1717)), false); - assert_eq!(call!(eq_ui16(4, 17988)), false); - assert_eq!(call!(eq_ui16(4, 65096)), false); - assert_eq!(call!(eq_ui16(4, 65534)), false); - assert_eq!(call!(eq_ui16(4, 65535)), false); - assert_eq!(call!(eq_ui16(1717, 0)), false); - assert_eq!(call!(eq_ui16(1717, 1)), false); - assert_eq!(call!(eq_ui16(1717, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_58() { - assert_eq!(call!(eq_ui16(1717, 3)), false); - assert_eq!(call!(eq_ui16(1717, 4)), false); - assert_eq!(call!(eq_ui16(1717, 17988)), false); - assert_eq!(call!(eq_ui16(1717, 65096)), false); - assert_eq!(call!(eq_ui16(1717, 65534)), false); - assert_eq!(call!(eq_ui16(1717, 65535)), false); - assert_eq!(call!(eq_ui16(17988, 0)), false); - assert_eq!(call!(eq_ui16(17988, 1)), false); - assert_eq!(call!(eq_ui16(17988, 2)), false); - assert_eq!(call!(eq_ui16(17988, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_59() { - assert_eq!(call!(eq_ui16(17988, 4)), false); - assert_eq!(call!(eq_ui16(17988, 1717)), false); - assert_eq!(call!(eq_ui16(17988, 65096)), false); - assert_eq!(call!(eq_ui16(17988, 65534)), false); - assert_eq!(call!(eq_ui16(17988, 65535)), false); - assert_eq!(call!(eq_ui16(65096, 0)), false); - assert_eq!(call!(eq_ui16(65096, 1)), false); - assert_eq!(call!(eq_ui16(65096, 2)), false); - assert_eq!(call!(eq_ui16(65096, 3)), false); - assert_eq!(call!(eq_ui16(65096, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_60() { - assert_eq!(call!(eq_ui16(65096, 1717)), false); - assert_eq!(call!(eq_ui16(65096, 17988)), false); - assert_eq!(call!(eq_ui16(65096, 65534)), false); - assert_eq!(call!(eq_ui16(65096, 65535)), false); - assert_eq!(call!(eq_ui16(65534, 0)), false); - assert_eq!(call!(eq_ui16(65534, 1)), false); - assert_eq!(call!(eq_ui16(65534, 2)), false); - assert_eq!(call!(eq_ui16(65534, 3)), false); - assert_eq!(call!(eq_ui16(65534, 4)), false); - assert_eq!(call!(eq_ui16(65534, 1717)), false); - } - #[rewrite(main)] - #[test] - fn test_61() { - assert_eq!(call!(eq_ui16(65534, 17988)), false); - assert_eq!(call!(eq_ui16(65534, 65096)), false); - assert_eq!(call!(eq_ui16(65534, 65535)), false); - assert_eq!(call!(eq_ui16(65535, 0)), false); - assert_eq!(call!(eq_ui16(65535, 1)), false); - assert_eq!(call!(eq_ui16(65535, 2)), false); - assert_eq!(call!(eq_ui16(65535, 3)), false); - assert_eq!(call!(eq_ui16(65535, 4)), false); - assert_eq!(call!(eq_ui16(65535, 1717)), false); - assert_eq!(call!(eq_ui16(65535, 17988)), false); - } - #[rewrite(main)] - #[test] - fn test_62() { - assert_eq!(call!(eq_ui16(65535, 65096)), false); - assert_eq!(call!(eq_ui16(65535, 65534)), false); - assert_eq!(call!(eq_ui16(0, 0)), true); - assert_eq!(call!(eq_ui16(1, 1)), true); - assert_eq!(call!(eq_ui16(2, 2)), true); - assert_eq!(call!(eq_ui16(3, 3)), true); - assert_eq!(call!(eq_ui16(4, 4)), true); - assert_eq!(call!(eq_ui16(1717, 1717)), true); - assert_eq!(call!(eq_ui16(17988, 17988)), true); - assert_eq!(call!(eq_ui16(65096, 65096)), true); - } - #[rewrite(main)] - #[test] - fn test_63() { - assert_eq!(call!(eq_ui16(65534, 65534)), true); - assert_eq!(call!(eq_ui16(65535, 65535)), true); - assert_eq!(call!(eq_ui32(0, 1)), false); - assert_eq!(call!(eq_ui32(0, 2)), false); - assert_eq!(call!(eq_ui32(0, 3)), false); - assert_eq!(call!(eq_ui32(0, 4)), false); - assert_eq!(call!(eq_ui32(0, 2119154652)), false); - assert_eq!(call!(eq_ui32(0, 3002788344)), false); - assert_eq!(call!(eq_ui32(0, 3482297128)), false); - assert_eq!(call!(eq_ui32(0, 4294967294)), false); - } - #[rewrite(main)] - #[test] - fn test_64() { - assert_eq!(call!(eq_ui32(0, 4294967295)), false); - assert_eq!(call!(eq_ui32(1, 0)), false); - assert_eq!(call!(eq_ui32(1, 2)), false); - assert_eq!(call!(eq_ui32(1, 3)), false); - assert_eq!(call!(eq_ui32(1, 4)), false); - assert_eq!(call!(eq_ui32(1, 2119154652)), false); - assert_eq!(call!(eq_ui32(1, 3002788344)), false); - assert_eq!(call!(eq_ui32(1, 3482297128)), false); - assert_eq!(call!(eq_ui32(1, 4294967294)), false); - assert_eq!(call!(eq_ui32(1, 4294967295)), false); - } - #[rewrite(main)] - #[test] - fn test_65() { - assert_eq!(call!(eq_ui32(2, 0)), false); - assert_eq!(call!(eq_ui32(2, 1)), false); - assert_eq!(call!(eq_ui32(2, 3)), false); - assert_eq!(call!(eq_ui32(2, 4)), false); - assert_eq!(call!(eq_ui32(2, 2119154652)), false); - assert_eq!(call!(eq_ui32(2, 3002788344)), false); - assert_eq!(call!(eq_ui32(2, 3482297128)), false); - assert_eq!(call!(eq_ui32(2, 4294967294)), false); - assert_eq!(call!(eq_ui32(2, 4294967295)), false); - assert_eq!(call!(eq_ui32(3, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_66() { - assert_eq!(call!(eq_ui32(3, 1)), false); - assert_eq!(call!(eq_ui32(3, 2)), false); - assert_eq!(call!(eq_ui32(3, 4)), false); - assert_eq!(call!(eq_ui32(3, 2119154652)), false); - assert_eq!(call!(eq_ui32(3, 3002788344)), false); - assert_eq!(call!(eq_ui32(3, 3482297128)), false); - assert_eq!(call!(eq_ui32(3, 4294967294)), false); - assert_eq!(call!(eq_ui32(3, 4294967295)), false); - assert_eq!(call!(eq_ui32(4, 0)), false); - assert_eq!(call!(eq_ui32(4, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_67() { - assert_eq!(call!(eq_ui32(4, 2)), false); - assert_eq!(call!(eq_ui32(4, 3)), false); - assert_eq!(call!(eq_ui32(4, 2119154652)), false); - assert_eq!(call!(eq_ui32(4, 3002788344)), false); - assert_eq!(call!(eq_ui32(4, 3482297128)), false); - assert_eq!(call!(eq_ui32(4, 4294967294)), false); - assert_eq!(call!(eq_ui32(4, 4294967295)), false); - assert_eq!(call!(eq_ui32(2119154652, 0)), false); - assert_eq!(call!(eq_ui32(2119154652, 1)), false); - assert_eq!(call!(eq_ui32(2119154652, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_68() { - assert_eq!(call!(eq_ui32(2119154652, 3)), false); - assert_eq!(call!(eq_ui32(2119154652, 4)), false); - assert_eq!(call!(eq_ui32(2119154652, 3002788344)), false); - assert_eq!(call!(eq_ui32(2119154652, 3482297128)), false); - assert_eq!(call!(eq_ui32(2119154652, 4294967294)), false); - assert_eq!(call!(eq_ui32(2119154652, 4294967295)), false); - assert_eq!(call!(eq_ui32(3002788344, 0)), false); - assert_eq!(call!(eq_ui32(3002788344, 1)), false); - assert_eq!(call!(eq_ui32(3002788344, 2)), false); - assert_eq!(call!(eq_ui32(3002788344, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_69() { - assert_eq!(call!(eq_ui32(3002788344, 4)), false); - assert_eq!(call!(eq_ui32(3002788344, 2119154652)), false); - assert_eq!(call!(eq_ui32(3002788344, 3482297128)), false); - assert_eq!(call!(eq_ui32(3002788344, 4294967294)), false); - assert_eq!(call!(eq_ui32(3002788344, 4294967295)), false); - assert_eq!(call!(eq_ui32(3482297128, 0)), false); - assert_eq!(call!(eq_ui32(3482297128, 1)), false); - assert_eq!(call!(eq_ui32(3482297128, 2)), false); - assert_eq!(call!(eq_ui32(3482297128, 3)), false); - assert_eq!(call!(eq_ui32(3482297128, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_70() { - assert_eq!(call!(eq_ui32(3482297128, 2119154652)), false); - assert_eq!(call!(eq_ui32(3482297128, 3002788344)), false); - assert_eq!(call!(eq_ui32(3482297128, 4294967294)), false); - assert_eq!(call!(eq_ui32(3482297128, 4294967295)), false); - assert_eq!(call!(eq_ui32(4294967294, 0)), false); - assert_eq!(call!(eq_ui32(4294967294, 1)), false); - assert_eq!(call!(eq_ui32(4294967294, 2)), false); - assert_eq!(call!(eq_ui32(4294967294, 3)), false); - assert_eq!(call!(eq_ui32(4294967294, 4)), false); - assert_eq!(call!(eq_ui32(4294967294, 2119154652)), false); - } - #[rewrite(main)] - #[test] - fn test_71() { - assert_eq!(call!(eq_ui32(4294967294, 3002788344)), false); - assert_eq!(call!(eq_ui32(4294967294, 3482297128)), false); - assert_eq!(call!(eq_ui32(4294967294, 4294967295)), false); - assert_eq!(call!(eq_ui32(4294967295, 0)), false); - assert_eq!(call!(eq_ui32(4294967295, 1)), false); - assert_eq!(call!(eq_ui32(4294967295, 2)), false); - assert_eq!(call!(eq_ui32(4294967295, 3)), false); - assert_eq!(call!(eq_ui32(4294967295, 4)), false); - assert_eq!(call!(eq_ui32(4294967295, 2119154652)), false); - assert_eq!(call!(eq_ui32(4294967295, 3002788344)), false); - } - #[rewrite(main)] - #[test] - fn test_72() { - assert_eq!(call!(eq_ui32(4294967295, 3482297128)), false); - assert_eq!(call!(eq_ui32(4294967295, 4294967294)), false); - assert_eq!(call!(eq_ui32(0, 0)), true); - assert_eq!(call!(eq_ui32(1, 1)), true); - assert_eq!(call!(eq_ui32(2, 2)), true); - assert_eq!(call!(eq_ui32(3, 3)), true); - assert_eq!(call!(eq_ui32(4, 4)), true); - assert_eq!(call!(eq_ui32(2119154652, 2119154652)), true); - assert_eq!(call!(eq_ui32(3002788344, 3002788344)), true); - assert_eq!(call!(eq_ui32(3482297128, 3482297128)), true); - } - #[rewrite(main)] - #[test] - fn test_73() { - assert_eq!(call!(eq_ui32(4294967294, 4294967294)), true); - assert_eq!(call!(eq_ui32(4294967295, 4294967295)), true); - assert_eq!(call!(eq_ui64(0, 1)), false); - assert_eq!(call!(eq_ui64(0, 2)), false); - assert_eq!(call!(eq_ui64(0, 3)), false); - assert_eq!(call!(eq_ui64(0, 4)), false); - assert_eq!(call!(eq_ui64(0, 191084152064409600)), false); - assert_eq!(call!(eq_ui64(0, 11015955194427482112)), false); - assert_eq!(call!(eq_ui64(0, 16990600415051759616)), false); - assert_eq!(call!(eq_ui64(0, 18446744073709551614)), false); - } - #[rewrite(main)] - #[test] - fn test_74() { - assert_eq!(call!(eq_ui64(0, 18446744073709551615)), false); - assert_eq!(call!(eq_ui64(1, 0)), false); - assert_eq!(call!(eq_ui64(1, 2)), false); - assert_eq!(call!(eq_ui64(1, 3)), false); - assert_eq!(call!(eq_ui64(1, 4)), false); - assert_eq!(call!(eq_ui64(1, 191084152064409600)), false); - assert_eq!(call!(eq_ui64(1, 11015955194427482112)), false); - assert_eq!(call!(eq_ui64(1, 16990600415051759616)), false); - assert_eq!(call!(eq_ui64(1, 18446744073709551614)), false); - assert_eq!(call!(eq_ui64(1, 18446744073709551615)), false); - } - #[rewrite(main)] - #[test] - fn test_75() { - assert_eq!(call!(eq_ui64(2, 0)), false); - assert_eq!(call!(eq_ui64(2, 1)), false); - assert_eq!(call!(eq_ui64(2, 3)), false); - assert_eq!(call!(eq_ui64(2, 4)), false); - assert_eq!(call!(eq_ui64(2, 191084152064409600)), false); - assert_eq!(call!(eq_ui64(2, 11015955194427482112)), false); - assert_eq!(call!(eq_ui64(2, 16990600415051759616)), false); - assert_eq!(call!(eq_ui64(2, 18446744073709551614)), false); - assert_eq!(call!(eq_ui64(2, 18446744073709551615)), false); - assert_eq!(call!(eq_ui64(3, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_76() { - assert_eq!(call!(eq_ui64(3, 1)), false); - assert_eq!(call!(eq_ui64(3, 2)), false); - assert_eq!(call!(eq_ui64(3, 4)), false); - assert_eq!(call!(eq_ui64(3, 191084152064409600)), false); - assert_eq!(call!(eq_ui64(3, 11015955194427482112)), false); - assert_eq!(call!(eq_ui64(3, 16990600415051759616)), false); - assert_eq!(call!(eq_ui64(3, 18446744073709551614)), false); - assert_eq!(call!(eq_ui64(3, 18446744073709551615)), false); - assert_eq!(call!(eq_ui64(4, 0)), false); - assert_eq!(call!(eq_ui64(4, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_77() { - assert_eq!(call!(eq_ui64(4, 2)), false); - assert_eq!(call!(eq_ui64(4, 3)), false); - assert_eq!(call!(eq_ui64(4, 191084152064409600)), false); - assert_eq!(call!(eq_ui64(4, 11015955194427482112)), false); - assert_eq!(call!(eq_ui64(4, 16990600415051759616)), false); - assert_eq!(call!(eq_ui64(4, 18446744073709551614)), false); - assert_eq!(call!(eq_ui64(4, 18446744073709551615)), false); - assert_eq!(call!(eq_ui64(191084152064409600, 0)), false); - assert_eq!(call!(eq_ui64(191084152064409600, 1)), false); - assert_eq!(call!(eq_ui64(191084152064409600, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_78() { - assert_eq!(call!(eq_ui64(191084152064409600, 3)), false); - assert_eq!(call!(eq_ui64(191084152064409600, 4)), false); - assert_eq!(call!(eq_ui64(191084152064409600, 11015955194427482112)), false); - assert_eq!(call!(eq_ui64(191084152064409600, 16990600415051759616)), false); - assert_eq!(call!(eq_ui64(191084152064409600, 18446744073709551614)), false); - assert_eq!(call!(eq_ui64(191084152064409600, 18446744073709551615)), false); - assert_eq!(call!(eq_ui64(11015955194427482112, 0)), false); - assert_eq!(call!(eq_ui64(11015955194427482112, 1)), false); - assert_eq!(call!(eq_ui64(11015955194427482112, 2)), false); - assert_eq!(call!(eq_ui64(11015955194427482112, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_79() { - assert_eq!(call!(eq_ui64(11015955194427482112, 4)), false); - assert_eq!(call!(eq_ui64(11015955194427482112, 191084152064409600)), false); - assert_eq!(call!(eq_ui64(11015955194427482112, 16990600415051759616)), false); - assert_eq!(call!(eq_ui64(11015955194427482112, 18446744073709551614)), false); - assert_eq!(call!(eq_ui64(11015955194427482112, 18446744073709551615)), false); - assert_eq!(call!(eq_ui64(16990600415051759616, 0)), false); - assert_eq!(call!(eq_ui64(16990600415051759616, 1)), false); - assert_eq!(call!(eq_ui64(16990600415051759616, 2)), false); - assert_eq!(call!(eq_ui64(16990600415051759616, 3)), false); - assert_eq!(call!(eq_ui64(16990600415051759616, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_80() { - assert_eq!(call!(eq_ui64(16990600415051759616, 191084152064409600)), false); - assert_eq!(call!(eq_ui64(16990600415051759616, 11015955194427482112)), false); - assert_eq!(call!(eq_ui64(16990600415051759616, 18446744073709551614)), false); - assert_eq!(call!(eq_ui64(16990600415051759616, 18446744073709551615)), false); - assert_eq!(call!(eq_ui64(18446744073709551614, 0)), false); - assert_eq!(call!(eq_ui64(18446744073709551614, 1)), false); - assert_eq!(call!(eq_ui64(18446744073709551614, 2)), false); - assert_eq!(call!(eq_ui64(18446744073709551614, 3)), false); - assert_eq!(call!(eq_ui64(18446744073709551614, 4)), false); - assert_eq!(call!(eq_ui64(18446744073709551614, 191084152064409600)), false); - } - #[rewrite(main)] - #[test] - fn test_81() { - assert_eq!(call!(eq_ui64(18446744073709551614, 11015955194427482112)), false); - assert_eq!(call!(eq_ui64(18446744073709551614, 16990600415051759616)), false); - assert_eq!(call!(eq_ui64(18446744073709551614, 18446744073709551615)), false); - assert_eq!(call!(eq_ui64(18446744073709551615, 0)), false); - assert_eq!(call!(eq_ui64(18446744073709551615, 1)), false); - assert_eq!(call!(eq_ui64(18446744073709551615, 2)), false); - assert_eq!(call!(eq_ui64(18446744073709551615, 3)), false); - assert_eq!(call!(eq_ui64(18446744073709551615, 4)), false); - assert_eq!(call!(eq_ui64(18446744073709551615, 191084152064409600)), false); - assert_eq!(call!(eq_ui64(18446744073709551615, 11015955194427482112)), false); - } - #[rewrite(main)] - #[test] - fn test_82() { - assert_eq!(call!(eq_ui64(18446744073709551615, 16990600415051759616)), false); - assert_eq!(call!(eq_ui64(18446744073709551615, 18446744073709551614)), false); - assert_eq!(call!(eq_ui64(0, 0)), true); - assert_eq!(call!(eq_ui64(1, 1)), true); - assert_eq!(call!(eq_ui64(2, 2)), true); - assert_eq!(call!(eq_ui64(3, 3)), true); - assert_eq!(call!(eq_ui64(4, 4)), true); - assert_eq!(call!(eq_ui64(191084152064409600, 191084152064409600)), true); - assert_eq!(call!(eq_ui64(11015955194427482112, 11015955194427482112)), true); - assert_eq!(call!(eq_ui64(16990600415051759616, 16990600415051759616)), true); - } - #[rewrite(main)] - #[test] - fn test_83() { - assert_eq!(call!(eq_ui64(18446744073709551614, 18446744073709551614)), true); - assert_eq!(call!(eq_ui64(18446744073709551615, 18446744073709551615)), true); - assert_eq!(call!(eq_ui8(0, 1)), false); - assert_eq!(call!(eq_ui8(0, 2)), false); - assert_eq!(call!(eq_ui8(0, 3)), false); - assert_eq!(call!(eq_ui8(0, 4)), false); - assert_eq!(call!(eq_ui8(0, 72)), false); - assert_eq!(call!(eq_ui8(0, 100)), false); - assert_eq!(call!(eq_ui8(0, 162)), false); - assert_eq!(call!(eq_ui8(0, 254)), false); - } - #[rewrite(main)] - #[test] - fn test_84() { - assert_eq!(call!(eq_ui8(0, 255)), false); - assert_eq!(call!(eq_ui8(1, 0)), false); - assert_eq!(call!(eq_ui8(1, 2)), false); - assert_eq!(call!(eq_ui8(1, 3)), false); - assert_eq!(call!(eq_ui8(1, 4)), false); - assert_eq!(call!(eq_ui8(1, 72)), false); - assert_eq!(call!(eq_ui8(1, 100)), false); - assert_eq!(call!(eq_ui8(1, 162)), false); - assert_eq!(call!(eq_ui8(1, 254)), false); - assert_eq!(call!(eq_ui8(1, 255)), false); - } - #[rewrite(main)] - #[test] - fn test_85() { - assert_eq!(call!(eq_ui8(2, 0)), false); - assert_eq!(call!(eq_ui8(2, 1)), false); - assert_eq!(call!(eq_ui8(2, 3)), false); - assert_eq!(call!(eq_ui8(2, 4)), false); - assert_eq!(call!(eq_ui8(2, 72)), false); - assert_eq!(call!(eq_ui8(2, 100)), false); - assert_eq!(call!(eq_ui8(2, 162)), false); - assert_eq!(call!(eq_ui8(2, 254)), false); - assert_eq!(call!(eq_ui8(2, 255)), false); - assert_eq!(call!(eq_ui8(3, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_86() { - assert_eq!(call!(eq_ui8(3, 1)), false); - assert_eq!(call!(eq_ui8(3, 2)), false); - assert_eq!(call!(eq_ui8(3, 4)), false); - assert_eq!(call!(eq_ui8(3, 72)), false); - assert_eq!(call!(eq_ui8(3, 100)), false); - assert_eq!(call!(eq_ui8(3, 162)), false); - assert_eq!(call!(eq_ui8(3, 254)), false); - assert_eq!(call!(eq_ui8(3, 255)), false); - assert_eq!(call!(eq_ui8(4, 0)), false); - assert_eq!(call!(eq_ui8(4, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_87() { - assert_eq!(call!(eq_ui8(4, 2)), false); - assert_eq!(call!(eq_ui8(4, 3)), false); - assert_eq!(call!(eq_ui8(4, 72)), false); - assert_eq!(call!(eq_ui8(4, 100)), false); - assert_eq!(call!(eq_ui8(4, 162)), false); - assert_eq!(call!(eq_ui8(4, 254)), false); - assert_eq!(call!(eq_ui8(4, 255)), false); - assert_eq!(call!(eq_ui8(72, 0)), false); - assert_eq!(call!(eq_ui8(72, 1)), false); - assert_eq!(call!(eq_ui8(72, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_88() { - assert_eq!(call!(eq_ui8(72, 3)), false); - assert_eq!(call!(eq_ui8(72, 4)), false); - assert_eq!(call!(eq_ui8(72, 100)), false); - assert_eq!(call!(eq_ui8(72, 162)), false); - assert_eq!(call!(eq_ui8(72, 254)), false); - assert_eq!(call!(eq_ui8(72, 255)), false); - assert_eq!(call!(eq_ui8(100, 0)), false); - assert_eq!(call!(eq_ui8(100, 1)), false); - assert_eq!(call!(eq_ui8(100, 2)), false); - assert_eq!(call!(eq_ui8(100, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_89() { - assert_eq!(call!(eq_ui8(100, 4)), false); - assert_eq!(call!(eq_ui8(100, 72)), false); - assert_eq!(call!(eq_ui8(100, 162)), false); - assert_eq!(call!(eq_ui8(100, 254)), false); - assert_eq!(call!(eq_ui8(100, 255)), false); - assert_eq!(call!(eq_ui8(162, 0)), false); - assert_eq!(call!(eq_ui8(162, 1)), false); - assert_eq!(call!(eq_ui8(162, 2)), false); - assert_eq!(call!(eq_ui8(162, 3)), false); - assert_eq!(call!(eq_ui8(162, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_90() { - assert_eq!(call!(eq_ui8(162, 72)), false); - assert_eq!(call!(eq_ui8(162, 100)), false); - assert_eq!(call!(eq_ui8(162, 254)), false); - assert_eq!(call!(eq_ui8(162, 255)), false); - assert_eq!(call!(eq_ui8(254, 0)), false); - assert_eq!(call!(eq_ui8(254, 1)), false); - assert_eq!(call!(eq_ui8(254, 2)), false); - assert_eq!(call!(eq_ui8(254, 3)), false); - assert_eq!(call!(eq_ui8(254, 4)), false); - assert_eq!(call!(eq_ui8(254, 72)), false); - } - #[rewrite(main)] - #[test] - fn test_91() { - assert_eq!(call!(eq_ui8(254, 100)), false); - assert_eq!(call!(eq_ui8(254, 162)), false); - assert_eq!(call!(eq_ui8(254, 255)), false); - assert_eq!(call!(eq_ui8(255, 0)), false); - assert_eq!(call!(eq_ui8(255, 1)), false); - assert_eq!(call!(eq_ui8(255, 2)), false); - assert_eq!(call!(eq_ui8(255, 3)), false); - assert_eq!(call!(eq_ui8(255, 4)), false); - assert_eq!(call!(eq_ui8(255, 72)), false); - assert_eq!(call!(eq_ui8(255, 100)), false); - } - #[rewrite(main)] - #[test] - fn test_92() { - assert_eq!(call!(eq_ui8(255, 162)), false); - assert_eq!(call!(eq_ui8(255, 254)), false); - assert_eq!(call!(eq_ui8(0, 0)), true); - assert_eq!(call!(eq_ui8(1, 1)), true); - assert_eq!(call!(eq_ui8(2, 2)), true); - assert_eq!(call!(eq_ui8(3, 3)), true); - assert_eq!(call!(eq_ui8(4, 4)), true); - assert_eq!(call!(eq_ui8(72, 72)), true); - assert_eq!(call!(eq_ui8(100, 100)), true); - assert_eq!(call!(eq_ui8(162, 162)), true); - } - #[rewrite(main)] - #[test] - fn test_93() { - assert_eq!(call!(eq_ui8(254, 254)), true); - assert_eq!(call!(eq_ui8(255, 255)), true); - assert_eq!(call!(ge_si16(-32768, -32767)), false); - assert_eq!(call!(ge_si16(-32768, -32547)), false); - assert_eq!(call!(ge_si16(-32768, 0)), false); - assert_eq!(call!(ge_si16(-32768, 1)), false); - assert_eq!(call!(ge_si16(-32768, 2)), false); - assert_eq!(call!(ge_si16(-32768, 3)), false); - assert_eq!(call!(ge_si16(-32768, 4)), false); - assert_eq!(call!(ge_si16(-32768, 10486)), false); - } - #[rewrite(main)] - #[test] - fn test_94() { - assert_eq!(call!(ge_si16(-32768, 16514)), false); - assert_eq!(call!(ge_si16(-32768, 32766)), false); - assert_eq!(call!(ge_si16(-32768, 32767)), false); - assert_eq!(call!(ge_si16(-32767, -32547)), false); - assert_eq!(call!(ge_si16(-32767, 0)), false); - assert_eq!(call!(ge_si16(-32767, 1)), false); - assert_eq!(call!(ge_si16(-32767, 2)), false); - assert_eq!(call!(ge_si16(-32767, 3)), false); - assert_eq!(call!(ge_si16(-32767, 4)), false); - assert_eq!(call!(ge_si16(-32767, 10486)), false); - } - #[rewrite(main)] - #[test] - fn test_95() { - assert_eq!(call!(ge_si16(-32767, 16514)), false); - assert_eq!(call!(ge_si16(-32767, 32766)), false); - assert_eq!(call!(ge_si16(-32767, 32767)), false); - assert_eq!(call!(ge_si16(-32547, 0)), false); - assert_eq!(call!(ge_si16(-32547, 1)), false); - assert_eq!(call!(ge_si16(-32547, 2)), false); - assert_eq!(call!(ge_si16(-32547, 3)), false); - assert_eq!(call!(ge_si16(-32547, 4)), false); - assert_eq!(call!(ge_si16(-32547, 10486)), false); - assert_eq!(call!(ge_si16(-32547, 16514)), false); - } - #[rewrite(main)] - #[test] - fn test_96() { - assert_eq!(call!(ge_si16(-32547, 32766)), false); - assert_eq!(call!(ge_si16(-32547, 32767)), false); - assert_eq!(call!(ge_si16(0, 1)), false); - assert_eq!(call!(ge_si16(0, 2)), false); - assert_eq!(call!(ge_si16(0, 3)), false); - assert_eq!(call!(ge_si16(0, 4)), false); - assert_eq!(call!(ge_si16(0, 10486)), false); - assert_eq!(call!(ge_si16(0, 16514)), false); - assert_eq!(call!(ge_si16(0, 32766)), false); - assert_eq!(call!(ge_si16(0, 32767)), false); - } - #[rewrite(main)] - #[test] - fn test_97() { - assert_eq!(call!(ge_si16(1, 2)), false); - assert_eq!(call!(ge_si16(1, 3)), false); - assert_eq!(call!(ge_si16(1, 4)), false); - assert_eq!(call!(ge_si16(1, 10486)), false); - assert_eq!(call!(ge_si16(1, 16514)), false); - assert_eq!(call!(ge_si16(1, 32766)), false); - assert_eq!(call!(ge_si16(1, 32767)), false); - assert_eq!(call!(ge_si16(2, 3)), false); - assert_eq!(call!(ge_si16(2, 4)), false); - assert_eq!(call!(ge_si16(2, 10486)), false); - } - #[rewrite(main)] - #[test] - fn test_98() { - assert_eq!(call!(ge_si16(2, 16514)), false); - assert_eq!(call!(ge_si16(2, 32766)), false); - assert_eq!(call!(ge_si16(2, 32767)), false); - assert_eq!(call!(ge_si16(3, 4)), false); - assert_eq!(call!(ge_si16(3, 10486)), false); - assert_eq!(call!(ge_si16(3, 16514)), false); - assert_eq!(call!(ge_si16(3, 32766)), false); - assert_eq!(call!(ge_si16(3, 32767)), false); - assert_eq!(call!(ge_si16(4, 10486)), false); - assert_eq!(call!(ge_si16(4, 16514)), false); - } - #[rewrite(main)] - #[test] - fn test_99() { - assert_eq!(call!(ge_si16(4, 32766)), false); - assert_eq!(call!(ge_si16(4, 32767)), false); - assert_eq!(call!(ge_si16(10486, 16514)), false); - assert_eq!(call!(ge_si16(10486, 32766)), false); - assert_eq!(call!(ge_si16(10486, 32767)), false); - assert_eq!(call!(ge_si16(16514, 32766)), false); - assert_eq!(call!(ge_si16(16514, 32767)), false); - assert_eq!(call!(ge_si16(32766, 32767)), false); - assert_eq!(call!(ge_si16(-32768, -32768)), true); - assert_eq!(call!(ge_si16(-32767, -32768)), true); - } - #[rewrite(main)] - #[test] - fn test_100() { - assert_eq!(call!(ge_si16(-32767, -32767)), true); - assert_eq!(call!(ge_si16(-32547, -32768)), true); - assert_eq!(call!(ge_si16(-32547, -32767)), true); - assert_eq!(call!(ge_si16(-32547, -32547)), true); - assert_eq!(call!(ge_si16(0, -32768)), true); - assert_eq!(call!(ge_si16(0, -32767)), true); - assert_eq!(call!(ge_si16(0, -32547)), true); - assert_eq!(call!(ge_si16(0, 0)), true); - assert_eq!(call!(ge_si16(1, -32768)), true); - assert_eq!(call!(ge_si16(1, -32767)), true); - } - #[rewrite(main)] - #[test] - fn test_101() { - assert_eq!(call!(ge_si16(1, -32547)), true); - assert_eq!(call!(ge_si16(1, 0)), true); - assert_eq!(call!(ge_si16(1, 1)), true); - assert_eq!(call!(ge_si16(2, -32768)), true); - assert_eq!(call!(ge_si16(2, -32767)), true); - assert_eq!(call!(ge_si16(2, -32547)), true); - assert_eq!(call!(ge_si16(2, 0)), true); - assert_eq!(call!(ge_si16(2, 1)), true); - assert_eq!(call!(ge_si16(2, 2)), true); - assert_eq!(call!(ge_si16(3, -32768)), true); - } - #[rewrite(main)] - #[test] - fn test_102() { - assert_eq!(call!(ge_si16(3, -32767)), true); - assert_eq!(call!(ge_si16(3, -32547)), true); - assert_eq!(call!(ge_si16(3, 0)), true); - assert_eq!(call!(ge_si16(3, 1)), true); - assert_eq!(call!(ge_si16(3, 2)), true); - assert_eq!(call!(ge_si16(3, 3)), true); - assert_eq!(call!(ge_si16(4, -32768)), true); - assert_eq!(call!(ge_si16(4, -32767)), true); - assert_eq!(call!(ge_si16(4, -32547)), true); - assert_eq!(call!(ge_si16(4, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_103() { - assert_eq!(call!(ge_si16(4, 1)), true); - assert_eq!(call!(ge_si16(4, 2)), true); - assert_eq!(call!(ge_si16(4, 3)), true); - assert_eq!(call!(ge_si16(4, 4)), true); - assert_eq!(call!(ge_si16(10486, -32768)), true); - assert_eq!(call!(ge_si16(10486, -32767)), true); - assert_eq!(call!(ge_si16(10486, -32547)), true); - assert_eq!(call!(ge_si16(10486, 0)), true); - assert_eq!(call!(ge_si16(10486, 1)), true); - assert_eq!(call!(ge_si16(10486, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_104() { - assert_eq!(call!(ge_si16(10486, 3)), true); - assert_eq!(call!(ge_si16(10486, 4)), true); - assert_eq!(call!(ge_si16(10486, 10486)), true); - assert_eq!(call!(ge_si16(16514, -32768)), true); - assert_eq!(call!(ge_si16(16514, -32767)), true); - assert_eq!(call!(ge_si16(16514, -32547)), true); - assert_eq!(call!(ge_si16(16514, 0)), true); - assert_eq!(call!(ge_si16(16514, 1)), true); - assert_eq!(call!(ge_si16(16514, 2)), true); - assert_eq!(call!(ge_si16(16514, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_105() { - assert_eq!(call!(ge_si16(16514, 4)), true); - assert_eq!(call!(ge_si16(16514, 10486)), true); - assert_eq!(call!(ge_si16(16514, 16514)), true); - assert_eq!(call!(ge_si16(32766, -32768)), true); - assert_eq!(call!(ge_si16(32766, -32767)), true); - assert_eq!(call!(ge_si16(32766, -32547)), true); - assert_eq!(call!(ge_si16(32766, 0)), true); - assert_eq!(call!(ge_si16(32766, 1)), true); - assert_eq!(call!(ge_si16(32766, 2)), true); - assert_eq!(call!(ge_si16(32766, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_106() { - assert_eq!(call!(ge_si16(32766, 4)), true); - assert_eq!(call!(ge_si16(32766, 10486)), true); - assert_eq!(call!(ge_si16(32766, 16514)), true); - assert_eq!(call!(ge_si16(32766, 32766)), true); - assert_eq!(call!(ge_si16(32767, -32768)), true); - assert_eq!(call!(ge_si16(32767, -32767)), true); - assert_eq!(call!(ge_si16(32767, -32547)), true); - assert_eq!(call!(ge_si16(32767, 0)), true); - assert_eq!(call!(ge_si16(32767, 1)), true); - assert_eq!(call!(ge_si16(32767, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_107() { - assert_eq!(call!(ge_si16(32767, 3)), true); - assert_eq!(call!(ge_si16(32767, 4)), true); - assert_eq!(call!(ge_si16(32767, 10486)), true); - assert_eq!(call!(ge_si16(32767, 16514)), true); - assert_eq!(call!(ge_si16(32767, 32766)), true); - assert_eq!(call!(ge_si16(32767, 32767)), true); - assert_eq!(call!(ge_si32(-2147483648, -2147483647)), false); - assert_eq!(call!(ge_si32(-2147483648, -1713183800)), false); - assert_eq!(call!(ge_si32(-2147483648, -1252582164)), false); - assert_eq!(call!(ge_si32(-2147483648, -1035405763)), false); - } - #[rewrite(main)] - #[test] - fn test_108() { - assert_eq!(call!(ge_si32(-2147483648, 0)), false); - assert_eq!(call!(ge_si32(-2147483648, 1)), false); - assert_eq!(call!(ge_si32(-2147483648, 2)), false); - assert_eq!(call!(ge_si32(-2147483648, 3)), false); - assert_eq!(call!(ge_si32(-2147483648, 4)), false); - assert_eq!(call!(ge_si32(-2147483648, 2147483646)), false); - assert_eq!(call!(ge_si32(-2147483648, 2147483647)), false); - assert_eq!(call!(ge_si32(-2147483647, -1713183800)), false); - assert_eq!(call!(ge_si32(-2147483647, -1252582164)), false); - assert_eq!(call!(ge_si32(-2147483647, -1035405763)), false); - } - #[rewrite(main)] - #[test] - fn test_109() { - assert_eq!(call!(ge_si32(-2147483647, 0)), false); - assert_eq!(call!(ge_si32(-2147483647, 1)), false); - assert_eq!(call!(ge_si32(-2147483647, 2)), false); - assert_eq!(call!(ge_si32(-2147483647, 3)), false); - assert_eq!(call!(ge_si32(-2147483647, 4)), false); - assert_eq!(call!(ge_si32(-2147483647, 2147483646)), false); - assert_eq!(call!(ge_si32(-2147483647, 2147483647)), false); - assert_eq!(call!(ge_si32(-1713183800, -1252582164)), false); - assert_eq!(call!(ge_si32(-1713183800, -1035405763)), false); - assert_eq!(call!(ge_si32(-1713183800, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_110() { - assert_eq!(call!(ge_si32(-1713183800, 1)), false); - assert_eq!(call!(ge_si32(-1713183800, 2)), false); - assert_eq!(call!(ge_si32(-1713183800, 3)), false); - assert_eq!(call!(ge_si32(-1713183800, 4)), false); - assert_eq!(call!(ge_si32(-1713183800, 2147483646)), false); - assert_eq!(call!(ge_si32(-1713183800, 2147483647)), false); - assert_eq!(call!(ge_si32(-1252582164, -1035405763)), false); - assert_eq!(call!(ge_si32(-1252582164, 0)), false); - assert_eq!(call!(ge_si32(-1252582164, 1)), false); - assert_eq!(call!(ge_si32(-1252582164, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_111() { - assert_eq!(call!(ge_si32(-1252582164, 3)), false); - assert_eq!(call!(ge_si32(-1252582164, 4)), false); - assert_eq!(call!(ge_si32(-1252582164, 2147483646)), false); - assert_eq!(call!(ge_si32(-1252582164, 2147483647)), false); - assert_eq!(call!(ge_si32(-1035405763, 0)), false); - assert_eq!(call!(ge_si32(-1035405763, 1)), false); - assert_eq!(call!(ge_si32(-1035405763, 2)), false); - assert_eq!(call!(ge_si32(-1035405763, 3)), false); - assert_eq!(call!(ge_si32(-1035405763, 4)), false); - assert_eq!(call!(ge_si32(-1035405763, 2147483646)), false); - } - #[rewrite(main)] - #[test] - fn test_112() { - assert_eq!(call!(ge_si32(-1035405763, 2147483647)), false); - assert_eq!(call!(ge_si32(0, 1)), false); - assert_eq!(call!(ge_si32(0, 2)), false); - assert_eq!(call!(ge_si32(0, 3)), false); - assert_eq!(call!(ge_si32(0, 4)), false); - assert_eq!(call!(ge_si32(0, 2147483646)), false); - assert_eq!(call!(ge_si32(0, 2147483647)), false); - assert_eq!(call!(ge_si32(1, 2)), false); - assert_eq!(call!(ge_si32(1, 3)), false); - assert_eq!(call!(ge_si32(1, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_113() { - assert_eq!(call!(ge_si32(1, 2147483646)), false); - assert_eq!(call!(ge_si32(1, 2147483647)), false); - assert_eq!(call!(ge_si32(2, 3)), false); - assert_eq!(call!(ge_si32(2, 4)), false); - assert_eq!(call!(ge_si32(2, 2147483646)), false); - assert_eq!(call!(ge_si32(2, 2147483647)), false); - assert_eq!(call!(ge_si32(3, 4)), false); - assert_eq!(call!(ge_si32(3, 2147483646)), false); - assert_eq!(call!(ge_si32(3, 2147483647)), false); - assert_eq!(call!(ge_si32(4, 2147483646)), false); - } - #[rewrite(main)] - #[test] - fn test_114() { - assert_eq!(call!(ge_si32(4, 2147483647)), false); - assert_eq!(call!(ge_si32(2147483646, 2147483647)), false); - assert_eq!(call!(ge_si32(-2147483648, -2147483648)), true); - assert_eq!(call!(ge_si32(-2147483647, -2147483648)), true); - assert_eq!(call!(ge_si32(-2147483647, -2147483647)), true); - assert_eq!(call!(ge_si32(-1713183800, -2147483648)), true); - assert_eq!(call!(ge_si32(-1713183800, -2147483647)), true); - assert_eq!(call!(ge_si32(-1713183800, -1713183800)), true); - assert_eq!(call!(ge_si32(-1252582164, -2147483648)), true); - assert_eq!(call!(ge_si32(-1252582164, -2147483647)), true); - } - #[rewrite(main)] - #[test] - fn test_115() { - assert_eq!(call!(ge_si32(-1252582164, -1713183800)), true); - assert_eq!(call!(ge_si32(-1252582164, -1252582164)), true); - assert_eq!(call!(ge_si32(-1035405763, -2147483648)), true); - assert_eq!(call!(ge_si32(-1035405763, -2147483647)), true); - assert_eq!(call!(ge_si32(-1035405763, -1713183800)), true); - assert_eq!(call!(ge_si32(-1035405763, -1252582164)), true); - assert_eq!(call!(ge_si32(-1035405763, -1035405763)), true); - assert_eq!(call!(ge_si32(0, -2147483648)), true); - assert_eq!(call!(ge_si32(0, -2147483647)), true); - assert_eq!(call!(ge_si32(0, -1713183800)), true); - } - #[rewrite(main)] - #[test] - fn test_116() { - assert_eq!(call!(ge_si32(0, -1252582164)), true); - assert_eq!(call!(ge_si32(0, -1035405763)), true); - assert_eq!(call!(ge_si32(0, 0)), true); - assert_eq!(call!(ge_si32(1, -2147483648)), true); - assert_eq!(call!(ge_si32(1, -2147483647)), true); - assert_eq!(call!(ge_si32(1, -1713183800)), true); - assert_eq!(call!(ge_si32(1, -1252582164)), true); - assert_eq!(call!(ge_si32(1, -1035405763)), true); - assert_eq!(call!(ge_si32(1, 0)), true); - assert_eq!(call!(ge_si32(1, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_117() { - assert_eq!(call!(ge_si32(2, -2147483648)), true); - assert_eq!(call!(ge_si32(2, -2147483647)), true); - assert_eq!(call!(ge_si32(2, -1713183800)), true); - assert_eq!(call!(ge_si32(2, -1252582164)), true); - assert_eq!(call!(ge_si32(2, -1035405763)), true); - assert_eq!(call!(ge_si32(2, 0)), true); - assert_eq!(call!(ge_si32(2, 1)), true); - assert_eq!(call!(ge_si32(2, 2)), true); - assert_eq!(call!(ge_si32(3, -2147483648)), true); - assert_eq!(call!(ge_si32(3, -2147483647)), true); - } - #[rewrite(main)] - #[test] - fn test_118() { - assert_eq!(call!(ge_si32(3, -1713183800)), true); - assert_eq!(call!(ge_si32(3, -1252582164)), true); - assert_eq!(call!(ge_si32(3, -1035405763)), true); - assert_eq!(call!(ge_si32(3, 0)), true); - assert_eq!(call!(ge_si32(3, 1)), true); - assert_eq!(call!(ge_si32(3, 2)), true); - assert_eq!(call!(ge_si32(3, 3)), true); - assert_eq!(call!(ge_si32(4, -2147483648)), true); - assert_eq!(call!(ge_si32(4, -2147483647)), true); - assert_eq!(call!(ge_si32(4, -1713183800)), true); - } - #[rewrite(main)] - #[test] - fn test_119() { - assert_eq!(call!(ge_si32(4, -1252582164)), true); - assert_eq!(call!(ge_si32(4, -1035405763)), true); - assert_eq!(call!(ge_si32(4, 0)), true); - assert_eq!(call!(ge_si32(4, 1)), true); - assert_eq!(call!(ge_si32(4, 2)), true); - assert_eq!(call!(ge_si32(4, 3)), true); - assert_eq!(call!(ge_si32(4, 4)), true); - assert_eq!(call!(ge_si32(2147483646, -2147483648)), true); - assert_eq!(call!(ge_si32(2147483646, -2147483647)), true); - assert_eq!(call!(ge_si32(2147483646, -1713183800)), true); - } - #[rewrite(main)] - #[test] - fn test_120() { - assert_eq!(call!(ge_si32(2147483646, -1252582164)), true); - assert_eq!(call!(ge_si32(2147483646, -1035405763)), true); - assert_eq!(call!(ge_si32(2147483646, 0)), true); - assert_eq!(call!(ge_si32(2147483646, 1)), true); - assert_eq!(call!(ge_si32(2147483646, 2)), true); - assert_eq!(call!(ge_si32(2147483646, 3)), true); - assert_eq!(call!(ge_si32(2147483646, 4)), true); - assert_eq!(call!(ge_si32(2147483646, 2147483646)), true); - assert_eq!(call!(ge_si32(2147483647, -2147483648)), true); - assert_eq!(call!(ge_si32(2147483647, -2147483647)), true); - } - #[rewrite(main)] - #[test] - fn test_121() { - assert_eq!(call!(ge_si32(2147483647, -1713183800)), true); - assert_eq!(call!(ge_si32(2147483647, -1252582164)), true); - assert_eq!(call!(ge_si32(2147483647, -1035405763)), true); - assert_eq!(call!(ge_si32(2147483647, 0)), true); - assert_eq!(call!(ge_si32(2147483647, 1)), true); - assert_eq!(call!(ge_si32(2147483647, 2)), true); - assert_eq!(call!(ge_si32(2147483647, 3)), true); - assert_eq!(call!(ge_si32(2147483647, 4)), true); - assert_eq!(call!(ge_si32(2147483647, 2147483646)), true); - assert_eq!(call!(ge_si32(2147483647, 2147483647)), true); - } - #[rewrite(main)] - #[test] - fn test_122() { - assert_eq!(call!(ge_si64(-9223372036854775808, -9223372036854775807)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, -1741927215160008704)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, -1328271339354574848)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, 0)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, 1)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, 2)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, 3)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, 4)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, 5577148965131116544)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, 9223372036854775806)), false); - } - #[rewrite(main)] - #[test] - fn test_123() { - assert_eq!(call!(ge_si64(-9223372036854775808, 9223372036854775807)), false); - assert_eq!(call!(ge_si64(-9223372036854775807, -1741927215160008704)), false); - assert_eq!(call!(ge_si64(-9223372036854775807, -1328271339354574848)), false); - assert_eq!(call!(ge_si64(-9223372036854775807, 0)), false); - assert_eq!(call!(ge_si64(-9223372036854775807, 1)), false); - assert_eq!(call!(ge_si64(-9223372036854775807, 2)), false); - assert_eq!(call!(ge_si64(-9223372036854775807, 3)), false); - assert_eq!(call!(ge_si64(-9223372036854775807, 4)), false); - assert_eq!(call!(ge_si64(-9223372036854775807, 5577148965131116544)), false); - assert_eq!(call!(ge_si64(-9223372036854775807, 9223372036854775806)), false); - } - #[rewrite(main)] - #[test] - fn test_124() { - assert_eq!(call!(ge_si64(-9223372036854775807, 9223372036854775807)), false); - assert_eq!(call!(ge_si64(-1741927215160008704, -1328271339354574848)), false); - assert_eq!(call!(ge_si64(-1741927215160008704, 0)), false); - assert_eq!(call!(ge_si64(-1741927215160008704, 1)), false); - assert_eq!(call!(ge_si64(-1741927215160008704, 2)), false); - assert_eq!(call!(ge_si64(-1741927215160008704, 3)), false); - assert_eq!(call!(ge_si64(-1741927215160008704, 4)), false); - assert_eq!(call!(ge_si64(-1741927215160008704, 5577148965131116544)), false); - assert_eq!(call!(ge_si64(-1741927215160008704, 9223372036854775806)), false); - assert_eq!(call!(ge_si64(-1741927215160008704, 9223372036854775807)), false); - } - #[rewrite(main)] - #[test] - fn test_125() { - assert_eq!(call!(ge_si64(-1328271339354574848, 0)), false); - assert_eq!(call!(ge_si64(-1328271339354574848, 1)), false); - assert_eq!(call!(ge_si64(-1328271339354574848, 2)), false); - assert_eq!(call!(ge_si64(-1328271339354574848, 3)), false); - assert_eq!(call!(ge_si64(-1328271339354574848, 4)), false); - assert_eq!(call!(ge_si64(-1328271339354574848, 5577148965131116544)), false); - assert_eq!(call!(ge_si64(-1328271339354574848, 9223372036854775806)), false); - assert_eq!(call!(ge_si64(-1328271339354574848, 9223372036854775807)), false); - assert_eq!(call!(ge_si64(0, 1)), false); - assert_eq!(call!(ge_si64(0, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_126() { - assert_eq!(call!(ge_si64(0, 3)), false); - assert_eq!(call!(ge_si64(0, 4)), false); - assert_eq!(call!(ge_si64(0, 5577148965131116544)), false); - assert_eq!(call!(ge_si64(0, 9223372036854775806)), false); - assert_eq!(call!(ge_si64(0, 9223372036854775807)), false); - assert_eq!(call!(ge_si64(1, 2)), false); - assert_eq!(call!(ge_si64(1, 3)), false); - assert_eq!(call!(ge_si64(1, 4)), false); - assert_eq!(call!(ge_si64(1, 5577148965131116544)), false); - assert_eq!(call!(ge_si64(1, 9223372036854775806)), false); - } - #[rewrite(main)] - #[test] - fn test_127() { - assert_eq!(call!(ge_si64(1, 9223372036854775807)), false); - assert_eq!(call!(ge_si64(2, 3)), false); - assert_eq!(call!(ge_si64(2, 4)), false); - assert_eq!(call!(ge_si64(2, 5577148965131116544)), false); - assert_eq!(call!(ge_si64(2, 9223372036854775806)), false); - assert_eq!(call!(ge_si64(2, 9223372036854775807)), false); - assert_eq!(call!(ge_si64(3, 4)), false); - assert_eq!(call!(ge_si64(3, 5577148965131116544)), false); - assert_eq!(call!(ge_si64(3, 9223372036854775806)), false); - assert_eq!(call!(ge_si64(3, 9223372036854775807)), false); - } - #[rewrite(main)] - #[test] - fn test_128() { - assert_eq!(call!(ge_si64(4, 5577148965131116544)), false); - assert_eq!(call!(ge_si64(4, 9223372036854775806)), false); - assert_eq!(call!(ge_si64(4, 9223372036854775807)), false); - assert_eq!(call!(ge_si64(5577148965131116544, 9223372036854775806)), false); - assert_eq!(call!(ge_si64(5577148965131116544, 9223372036854775807)), false); - assert_eq!(call!(ge_si64(9223372036854775806, 9223372036854775807)), false); - assert_eq!(call!(ge_si64(-9223372036854775808, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(-9223372036854775807, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(-9223372036854775807, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(-1741927215160008704, -9223372036854775808)), true); - } - #[rewrite(main)] - #[test] - fn test_129() { - assert_eq!(call!(ge_si64(-1741927215160008704, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(-1741927215160008704, -1741927215160008704)), true); - assert_eq!(call!(ge_si64(-1328271339354574848, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(-1328271339354574848, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(-1328271339354574848, -1741927215160008704)), true); - assert_eq!(call!(ge_si64(-1328271339354574848, -1328271339354574848)), true); - assert_eq!(call!(ge_si64(0, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(0, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(0, -1741927215160008704)), true); - assert_eq!(call!(ge_si64(0, -1328271339354574848)), true); - } - #[rewrite(main)] - #[test] - fn test_130() { - assert_eq!(call!(ge_si64(0, 0)), true); - assert_eq!(call!(ge_si64(1, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(1, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(1, -1741927215160008704)), true); - assert_eq!(call!(ge_si64(1, -1328271339354574848)), true); - assert_eq!(call!(ge_si64(1, 0)), true); - assert_eq!(call!(ge_si64(1, 1)), true); - assert_eq!(call!(ge_si64(2, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(2, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(2, -1741927215160008704)), true); - } - #[rewrite(main)] - #[test] - fn test_131() { - assert_eq!(call!(ge_si64(2, -1328271339354574848)), true); - assert_eq!(call!(ge_si64(2, 0)), true); - assert_eq!(call!(ge_si64(2, 1)), true); - assert_eq!(call!(ge_si64(2, 2)), true); - assert_eq!(call!(ge_si64(3, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(3, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(3, -1741927215160008704)), true); - assert_eq!(call!(ge_si64(3, -1328271339354574848)), true); - assert_eq!(call!(ge_si64(3, 0)), true); - assert_eq!(call!(ge_si64(3, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_132() { - assert_eq!(call!(ge_si64(3, 2)), true); - assert_eq!(call!(ge_si64(3, 3)), true); - assert_eq!(call!(ge_si64(4, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(4, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(4, -1741927215160008704)), true); - assert_eq!(call!(ge_si64(4, -1328271339354574848)), true); - assert_eq!(call!(ge_si64(4, 0)), true); - assert_eq!(call!(ge_si64(4, 1)), true); - assert_eq!(call!(ge_si64(4, 2)), true); - assert_eq!(call!(ge_si64(4, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_133() { - assert_eq!(call!(ge_si64(4, 4)), true); - assert_eq!(call!(ge_si64(5577148965131116544, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(5577148965131116544, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(5577148965131116544, -1741927215160008704)), true); - assert_eq!(call!(ge_si64(5577148965131116544, -1328271339354574848)), true); - assert_eq!(call!(ge_si64(5577148965131116544, 0)), true); - assert_eq!(call!(ge_si64(5577148965131116544, 1)), true); - assert_eq!(call!(ge_si64(5577148965131116544, 2)), true); - assert_eq!(call!(ge_si64(5577148965131116544, 3)), true); - assert_eq!(call!(ge_si64(5577148965131116544, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_134() { - assert_eq!(call!(ge_si64(5577148965131116544, 5577148965131116544)), true); - assert_eq!(call!(ge_si64(9223372036854775806, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(9223372036854775806, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(9223372036854775806, -1741927215160008704)), true); - assert_eq!(call!(ge_si64(9223372036854775806, -1328271339354574848)), true); - assert_eq!(call!(ge_si64(9223372036854775806, 0)), true); - assert_eq!(call!(ge_si64(9223372036854775806, 1)), true); - assert_eq!(call!(ge_si64(9223372036854775806, 2)), true); - assert_eq!(call!(ge_si64(9223372036854775806, 3)), true); - assert_eq!(call!(ge_si64(9223372036854775806, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_135() { - assert_eq!(call!(ge_si64(9223372036854775806, 5577148965131116544)), true); - assert_eq!(call!(ge_si64(9223372036854775806, 9223372036854775806)), true); - assert_eq!(call!(ge_si64(9223372036854775807, -9223372036854775808)), true); - assert_eq!(call!(ge_si64(9223372036854775807, -9223372036854775807)), true); - assert_eq!(call!(ge_si64(9223372036854775807, -1741927215160008704)), true); - assert_eq!(call!(ge_si64(9223372036854775807, -1328271339354574848)), true); - assert_eq!(call!(ge_si64(9223372036854775807, 0)), true); - assert_eq!(call!(ge_si64(9223372036854775807, 1)), true); - assert_eq!(call!(ge_si64(9223372036854775807, 2)), true); - assert_eq!(call!(ge_si64(9223372036854775807, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_136() { - assert_eq!(call!(ge_si64(9223372036854775807, 4)), true); - assert_eq!(call!(ge_si64(9223372036854775807, 5577148965131116544)), true); - assert_eq!(call!(ge_si64(9223372036854775807, 9223372036854775806)), true); - assert_eq!(call!(ge_si64(9223372036854775807, 9223372036854775807)), true); - assert_eq!(call!(ge_si8(-128, -127)), false); - assert_eq!(call!(ge_si8(-128, 0)), false); - assert_eq!(call!(ge_si8(-128, 1)), false); - assert_eq!(call!(ge_si8(-128, 2)), false); - assert_eq!(call!(ge_si8(-128, 3)), false); - assert_eq!(call!(ge_si8(-128, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_137() { - assert_eq!(call!(ge_si8(-128, 16)), false); - assert_eq!(call!(ge_si8(-128, 126)), false); - assert_eq!(call!(ge_si8(-128, 127)), false); - assert_eq!(call!(ge_si8(-127, 0)), false); - assert_eq!(call!(ge_si8(-127, 1)), false); - assert_eq!(call!(ge_si8(-127, 2)), false); - assert_eq!(call!(ge_si8(-127, 3)), false); - assert_eq!(call!(ge_si8(-127, 4)), false); - assert_eq!(call!(ge_si8(-127, 16)), false); - assert_eq!(call!(ge_si8(-127, 126)), false); - } - #[rewrite(main)] - #[test] - fn test_138() { - assert_eq!(call!(ge_si8(-127, 127)), false); - assert_eq!(call!(ge_si8(0, 1)), false); - assert_eq!(call!(ge_si8(0, 2)), false); - assert_eq!(call!(ge_si8(0, 3)), false); - assert_eq!(call!(ge_si8(0, 4)), false); - assert_eq!(call!(ge_si8(0, 16)), false); - assert_eq!(call!(ge_si8(0, 126)), false); - assert_eq!(call!(ge_si8(0, 127)), false); - assert_eq!(call!(ge_si8(1, 2)), false); - assert_eq!(call!(ge_si8(1, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_139() { - assert_eq!(call!(ge_si8(1, 4)), false); - assert_eq!(call!(ge_si8(1, 16)), false); - assert_eq!(call!(ge_si8(1, 126)), false); - assert_eq!(call!(ge_si8(1, 127)), false); - assert_eq!(call!(ge_si8(2, 3)), false); - assert_eq!(call!(ge_si8(2, 4)), false); - assert_eq!(call!(ge_si8(2, 16)), false); - assert_eq!(call!(ge_si8(2, 126)), false); - assert_eq!(call!(ge_si8(2, 127)), false); - assert_eq!(call!(ge_si8(3, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_140() { - assert_eq!(call!(ge_si8(3, 16)), false); - assert_eq!(call!(ge_si8(3, 126)), false); - assert_eq!(call!(ge_si8(3, 127)), false); - assert_eq!(call!(ge_si8(4, 16)), false); - assert_eq!(call!(ge_si8(4, 126)), false); - assert_eq!(call!(ge_si8(4, 127)), false); - assert_eq!(call!(ge_si8(16, 126)), false); - assert_eq!(call!(ge_si8(16, 127)), false); - assert_eq!(call!(ge_si8(126, 127)), false); - assert_eq!(call!(ge_si8(-128, -128)), true); - } - #[rewrite(main)] - #[test] - fn test_141() { - assert_eq!(call!(ge_si8(-127, -128)), true); - assert_eq!(call!(ge_si8(-127, -127)), true); - assert_eq!(call!(ge_si8(0, -128)), true); - assert_eq!(call!(ge_si8(0, -127)), true); - assert_eq!(call!(ge_si8(0, 0)), true); - assert_eq!(call!(ge_si8(1, -128)), true); - assert_eq!(call!(ge_si8(1, -127)), true); - assert_eq!(call!(ge_si8(1, 0)), true); - assert_eq!(call!(ge_si8(1, 1)), true); - assert_eq!(call!(ge_si8(2, -128)), true); - } - #[rewrite(main)] - #[test] - fn test_142() { - assert_eq!(call!(ge_si8(2, -127)), true); - assert_eq!(call!(ge_si8(2, 0)), true); - assert_eq!(call!(ge_si8(2, 1)), true); - assert_eq!(call!(ge_si8(2, 2)), true); - assert_eq!(call!(ge_si8(3, -128)), true); - assert_eq!(call!(ge_si8(3, -127)), true); - assert_eq!(call!(ge_si8(3, 0)), true); - assert_eq!(call!(ge_si8(3, 1)), true); - assert_eq!(call!(ge_si8(3, 2)), true); - assert_eq!(call!(ge_si8(3, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_143() { - assert_eq!(call!(ge_si8(4, -128)), true); - assert_eq!(call!(ge_si8(4, -127)), true); - assert_eq!(call!(ge_si8(4, 0)), true); - assert_eq!(call!(ge_si8(4, 1)), true); - assert_eq!(call!(ge_si8(4, 2)), true); - assert_eq!(call!(ge_si8(4, 3)), true); - assert_eq!(call!(ge_si8(4, 4)), true); - assert_eq!(call!(ge_si8(16, -128)), true); - assert_eq!(call!(ge_si8(16, -127)), true); - assert_eq!(call!(ge_si8(16, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_144() { - assert_eq!(call!(ge_si8(16, 1)), true); - assert_eq!(call!(ge_si8(16, 2)), true); - assert_eq!(call!(ge_si8(16, 3)), true); - assert_eq!(call!(ge_si8(16, 4)), true); - assert_eq!(call!(ge_si8(16, 16)), true); - assert_eq!(call!(ge_si8(126, -128)), true); - assert_eq!(call!(ge_si8(126, -127)), true); - assert_eq!(call!(ge_si8(126, 0)), true); - assert_eq!(call!(ge_si8(126, 1)), true); - assert_eq!(call!(ge_si8(126, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_145() { - assert_eq!(call!(ge_si8(126, 3)), true); - assert_eq!(call!(ge_si8(126, 4)), true); - assert_eq!(call!(ge_si8(126, 16)), true); - assert_eq!(call!(ge_si8(126, 126)), true); - assert_eq!(call!(ge_si8(127, -128)), true); - assert_eq!(call!(ge_si8(127, -127)), true); - assert_eq!(call!(ge_si8(127, 0)), true); - assert_eq!(call!(ge_si8(127, 1)), true); - assert_eq!(call!(ge_si8(127, 2)), true); - assert_eq!(call!(ge_si8(127, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_146() { - assert_eq!(call!(ge_si8(127, 4)), true); - assert_eq!(call!(ge_si8(127, 16)), true); - assert_eq!(call!(ge_si8(127, 126)), true); - assert_eq!(call!(ge_si8(127, 127)), true); - assert_eq!(call!(ge_ui16(0, 1)), false); - assert_eq!(call!(ge_ui16(0, 2)), false); - assert_eq!(call!(ge_ui16(0, 3)), false); - assert_eq!(call!(ge_ui16(0, 4)), false); - assert_eq!(call!(ge_ui16(0, 1717)), false); - assert_eq!(call!(ge_ui16(0, 17988)), false); - } - #[rewrite(main)] - #[test] - fn test_147() { - assert_eq!(call!(ge_ui16(0, 65096)), false); - assert_eq!(call!(ge_ui16(0, 65534)), false); - assert_eq!(call!(ge_ui16(0, 65535)), false); - assert_eq!(call!(ge_ui16(1, 2)), false); - assert_eq!(call!(ge_ui16(1, 3)), false); - assert_eq!(call!(ge_ui16(1, 4)), false); - assert_eq!(call!(ge_ui16(1, 1717)), false); - assert_eq!(call!(ge_ui16(1, 17988)), false); - assert_eq!(call!(ge_ui16(1, 65096)), false); - assert_eq!(call!(ge_ui16(1, 65534)), false); - } - #[rewrite(main)] - #[test] - fn test_148() { - assert_eq!(call!(ge_ui16(1, 65535)), false); - assert_eq!(call!(ge_ui16(2, 3)), false); - assert_eq!(call!(ge_ui16(2, 4)), false); - assert_eq!(call!(ge_ui16(2, 1717)), false); - assert_eq!(call!(ge_ui16(2, 17988)), false); - assert_eq!(call!(ge_ui16(2, 65096)), false); - assert_eq!(call!(ge_ui16(2, 65534)), false); - assert_eq!(call!(ge_ui16(2, 65535)), false); - assert_eq!(call!(ge_ui16(3, 4)), false); - assert_eq!(call!(ge_ui16(3, 1717)), false); - } - #[rewrite(main)] - #[test] - fn test_149() { - assert_eq!(call!(ge_ui16(3, 17988)), false); - assert_eq!(call!(ge_ui16(3, 65096)), false); - assert_eq!(call!(ge_ui16(3, 65534)), false); - assert_eq!(call!(ge_ui16(3, 65535)), false); - assert_eq!(call!(ge_ui16(4, 1717)), false); - assert_eq!(call!(ge_ui16(4, 17988)), false); - assert_eq!(call!(ge_ui16(4, 65096)), false); - assert_eq!(call!(ge_ui16(4, 65534)), false); - assert_eq!(call!(ge_ui16(4, 65535)), false); - assert_eq!(call!(ge_ui16(1717, 17988)), false); - } - #[rewrite(main)] - #[test] - fn test_150() { - assert_eq!(call!(ge_ui16(1717, 65096)), false); - assert_eq!(call!(ge_ui16(1717, 65534)), false); - assert_eq!(call!(ge_ui16(1717, 65535)), false); - assert_eq!(call!(ge_ui16(17988, 65096)), false); - assert_eq!(call!(ge_ui16(17988, 65534)), false); - assert_eq!(call!(ge_ui16(17988, 65535)), false); - assert_eq!(call!(ge_ui16(65096, 65534)), false); - assert_eq!(call!(ge_ui16(65096, 65535)), false); - assert_eq!(call!(ge_ui16(65534, 65535)), false); - assert_eq!(call!(ge_ui16(0, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_151() { - assert_eq!(call!(ge_ui16(1, 0)), true); - assert_eq!(call!(ge_ui16(1, 1)), true); - assert_eq!(call!(ge_ui16(2, 0)), true); - assert_eq!(call!(ge_ui16(2, 1)), true); - assert_eq!(call!(ge_ui16(2, 2)), true); - assert_eq!(call!(ge_ui16(3, 0)), true); - assert_eq!(call!(ge_ui16(3, 1)), true); - assert_eq!(call!(ge_ui16(3, 2)), true); - assert_eq!(call!(ge_ui16(3, 3)), true); - assert_eq!(call!(ge_ui16(4, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_152() { - assert_eq!(call!(ge_ui16(4, 1)), true); - assert_eq!(call!(ge_ui16(4, 2)), true); - assert_eq!(call!(ge_ui16(4, 3)), true); - assert_eq!(call!(ge_ui16(4, 4)), true); - assert_eq!(call!(ge_ui16(1717, 0)), true); - assert_eq!(call!(ge_ui16(1717, 1)), true); - assert_eq!(call!(ge_ui16(1717, 2)), true); - assert_eq!(call!(ge_ui16(1717, 3)), true); - assert_eq!(call!(ge_ui16(1717, 4)), true); - assert_eq!(call!(ge_ui16(1717, 1717)), true); - } - #[rewrite(main)] - #[test] - fn test_153() { - assert_eq!(call!(ge_ui16(17988, 0)), true); - assert_eq!(call!(ge_ui16(17988, 1)), true); - assert_eq!(call!(ge_ui16(17988, 2)), true); - assert_eq!(call!(ge_ui16(17988, 3)), true); - assert_eq!(call!(ge_ui16(17988, 4)), true); - assert_eq!(call!(ge_ui16(17988, 1717)), true); - assert_eq!(call!(ge_ui16(17988, 17988)), true); - assert_eq!(call!(ge_ui16(65096, 0)), true); - assert_eq!(call!(ge_ui16(65096, 1)), true); - assert_eq!(call!(ge_ui16(65096, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_154() { - assert_eq!(call!(ge_ui16(65096, 3)), true); - assert_eq!(call!(ge_ui16(65096, 4)), true); - assert_eq!(call!(ge_ui16(65096, 1717)), true); - assert_eq!(call!(ge_ui16(65096, 17988)), true); - assert_eq!(call!(ge_ui16(65096, 65096)), true); - assert_eq!(call!(ge_ui16(65534, 0)), true); - assert_eq!(call!(ge_ui16(65534, 1)), true); - assert_eq!(call!(ge_ui16(65534, 2)), true); - assert_eq!(call!(ge_ui16(65534, 3)), true); - assert_eq!(call!(ge_ui16(65534, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_155() { - assert_eq!(call!(ge_ui16(65534, 1717)), true); - assert_eq!(call!(ge_ui16(65534, 17988)), true); - assert_eq!(call!(ge_ui16(65534, 65096)), true); - assert_eq!(call!(ge_ui16(65534, 65534)), true); - assert_eq!(call!(ge_ui16(65535, 0)), true); - assert_eq!(call!(ge_ui16(65535, 1)), true); - assert_eq!(call!(ge_ui16(65535, 2)), true); - assert_eq!(call!(ge_ui16(65535, 3)), true); - assert_eq!(call!(ge_ui16(65535, 4)), true); - assert_eq!(call!(ge_ui16(65535, 1717)), true); - } - #[rewrite(main)] - #[test] - fn test_156() { - assert_eq!(call!(ge_ui16(65535, 17988)), true); - assert_eq!(call!(ge_ui16(65535, 65096)), true); - assert_eq!(call!(ge_ui16(65535, 65534)), true); - assert_eq!(call!(ge_ui16(65535, 65535)), true); - assert_eq!(call!(ge_ui32(0, 1)), false); - assert_eq!(call!(ge_ui32(0, 2)), false); - assert_eq!(call!(ge_ui32(0, 3)), false); - assert_eq!(call!(ge_ui32(0, 4)), false); - assert_eq!(call!(ge_ui32(0, 2119154652)), false); - assert_eq!(call!(ge_ui32(0, 3002788344)), false); - } - #[rewrite(main)] - #[test] - fn test_157() { - assert_eq!(call!(ge_ui32(0, 3482297128)), false); - assert_eq!(call!(ge_ui32(0, 4294967294)), false); - assert_eq!(call!(ge_ui32(0, 4294967295)), false); - assert_eq!(call!(ge_ui32(1, 2)), false); - assert_eq!(call!(ge_ui32(1, 3)), false); - assert_eq!(call!(ge_ui32(1, 4)), false); - assert_eq!(call!(ge_ui32(1, 2119154652)), false); - assert_eq!(call!(ge_ui32(1, 3002788344)), false); - assert_eq!(call!(ge_ui32(1, 3482297128)), false); - assert_eq!(call!(ge_ui32(1, 4294967294)), false); - } - #[rewrite(main)] - #[test] - fn test_158() { - assert_eq!(call!(ge_ui32(1, 4294967295)), false); - assert_eq!(call!(ge_ui32(2, 3)), false); - assert_eq!(call!(ge_ui32(2, 4)), false); - assert_eq!(call!(ge_ui32(2, 2119154652)), false); - assert_eq!(call!(ge_ui32(2, 3002788344)), false); - assert_eq!(call!(ge_ui32(2, 3482297128)), false); - assert_eq!(call!(ge_ui32(2, 4294967294)), false); - assert_eq!(call!(ge_ui32(2, 4294967295)), false); - assert_eq!(call!(ge_ui32(3, 4)), false); - assert_eq!(call!(ge_ui32(3, 2119154652)), false); - } - #[rewrite(main)] - #[test] - fn test_159() { - assert_eq!(call!(ge_ui32(3, 3002788344)), false); - assert_eq!(call!(ge_ui32(3, 3482297128)), false); - assert_eq!(call!(ge_ui32(3, 4294967294)), false); - assert_eq!(call!(ge_ui32(3, 4294967295)), false); - assert_eq!(call!(ge_ui32(4, 2119154652)), false); - assert_eq!(call!(ge_ui32(4, 3002788344)), false); - assert_eq!(call!(ge_ui32(4, 3482297128)), false); - assert_eq!(call!(ge_ui32(4, 4294967294)), false); - assert_eq!(call!(ge_ui32(4, 4294967295)), false); - assert_eq!(call!(ge_ui32(2119154652, 3002788344)), false); - } - #[rewrite(main)] - #[test] - fn test_160() { - assert_eq!(call!(ge_ui32(2119154652, 3482297128)), false); - assert_eq!(call!(ge_ui32(2119154652, 4294967294)), false); - assert_eq!(call!(ge_ui32(2119154652, 4294967295)), false); - assert_eq!(call!(ge_ui32(3002788344, 3482297128)), false); - assert_eq!(call!(ge_ui32(3002788344, 4294967294)), false); - assert_eq!(call!(ge_ui32(3002788344, 4294967295)), false); - assert_eq!(call!(ge_ui32(3482297128, 4294967294)), false); - assert_eq!(call!(ge_ui32(3482297128, 4294967295)), false); - assert_eq!(call!(ge_ui32(4294967294, 4294967295)), false); - assert_eq!(call!(ge_ui32(0, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_161() { - assert_eq!(call!(ge_ui32(1, 0)), true); - assert_eq!(call!(ge_ui32(1, 1)), true); - assert_eq!(call!(ge_ui32(2, 0)), true); - assert_eq!(call!(ge_ui32(2, 1)), true); - assert_eq!(call!(ge_ui32(2, 2)), true); - assert_eq!(call!(ge_ui32(3, 0)), true); - assert_eq!(call!(ge_ui32(3, 1)), true); - assert_eq!(call!(ge_ui32(3, 2)), true); - assert_eq!(call!(ge_ui32(3, 3)), true); - assert_eq!(call!(ge_ui32(4, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_162() { - assert_eq!(call!(ge_ui32(4, 1)), true); - assert_eq!(call!(ge_ui32(4, 2)), true); - assert_eq!(call!(ge_ui32(4, 3)), true); - assert_eq!(call!(ge_ui32(4, 4)), true); - assert_eq!(call!(ge_ui32(2119154652, 0)), true); - assert_eq!(call!(ge_ui32(2119154652, 1)), true); - assert_eq!(call!(ge_ui32(2119154652, 2)), true); - assert_eq!(call!(ge_ui32(2119154652, 3)), true); - assert_eq!(call!(ge_ui32(2119154652, 4)), true); - assert_eq!(call!(ge_ui32(2119154652, 2119154652)), true); - } - #[rewrite(main)] - #[test] - fn test_163() { - assert_eq!(call!(ge_ui32(3002788344, 0)), true); - assert_eq!(call!(ge_ui32(3002788344, 1)), true); - assert_eq!(call!(ge_ui32(3002788344, 2)), true); - assert_eq!(call!(ge_ui32(3002788344, 3)), true); - assert_eq!(call!(ge_ui32(3002788344, 4)), true); - assert_eq!(call!(ge_ui32(3002788344, 2119154652)), true); - assert_eq!(call!(ge_ui32(3002788344, 3002788344)), true); - assert_eq!(call!(ge_ui32(3482297128, 0)), true); - assert_eq!(call!(ge_ui32(3482297128, 1)), true); - assert_eq!(call!(ge_ui32(3482297128, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_164() { - assert_eq!(call!(ge_ui32(3482297128, 3)), true); - assert_eq!(call!(ge_ui32(3482297128, 4)), true); - assert_eq!(call!(ge_ui32(3482297128, 2119154652)), true); - assert_eq!(call!(ge_ui32(3482297128, 3002788344)), true); - assert_eq!(call!(ge_ui32(3482297128, 3482297128)), true); - assert_eq!(call!(ge_ui32(4294967294, 0)), true); - assert_eq!(call!(ge_ui32(4294967294, 1)), true); - assert_eq!(call!(ge_ui32(4294967294, 2)), true); - assert_eq!(call!(ge_ui32(4294967294, 3)), true); - assert_eq!(call!(ge_ui32(4294967294, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_165() { - assert_eq!(call!(ge_ui32(4294967294, 2119154652)), true); - assert_eq!(call!(ge_ui32(4294967294, 3002788344)), true); - assert_eq!(call!(ge_ui32(4294967294, 3482297128)), true); - assert_eq!(call!(ge_ui32(4294967294, 4294967294)), true); - assert_eq!(call!(ge_ui32(4294967295, 0)), true); - assert_eq!(call!(ge_ui32(4294967295, 1)), true); - assert_eq!(call!(ge_ui32(4294967295, 2)), true); - assert_eq!(call!(ge_ui32(4294967295, 3)), true); - assert_eq!(call!(ge_ui32(4294967295, 4)), true); - assert_eq!(call!(ge_ui32(4294967295, 2119154652)), true); - } - #[rewrite(main)] - #[test] - fn test_166() { - assert_eq!(call!(ge_ui32(4294967295, 3002788344)), true); - assert_eq!(call!(ge_ui32(4294967295, 3482297128)), true); - assert_eq!(call!(ge_ui32(4294967295, 4294967294)), true); - assert_eq!(call!(ge_ui32(4294967295, 4294967295)), true); - assert_eq!(call!(ge_ui64(0, 1)), false); - assert_eq!(call!(ge_ui64(0, 2)), false); - assert_eq!(call!(ge_ui64(0, 3)), false); - assert_eq!(call!(ge_ui64(0, 4)), false); - assert_eq!(call!(ge_ui64(0, 191084152064409600)), false); - assert_eq!(call!(ge_ui64(0, 11015955194427482112)), false); - } - #[rewrite(main)] - #[test] - fn test_167() { - assert_eq!(call!(ge_ui64(0, 16990600415051759616)), false); - assert_eq!(call!(ge_ui64(0, 18446744073709551614)), false); - assert_eq!(call!(ge_ui64(0, 18446744073709551615)), false); - assert_eq!(call!(ge_ui64(1, 2)), false); - assert_eq!(call!(ge_ui64(1, 3)), false); - assert_eq!(call!(ge_ui64(1, 4)), false); - assert_eq!(call!(ge_ui64(1, 191084152064409600)), false); - assert_eq!(call!(ge_ui64(1, 11015955194427482112)), false); - assert_eq!(call!(ge_ui64(1, 16990600415051759616)), false); - assert_eq!(call!(ge_ui64(1, 18446744073709551614)), false); - } - #[rewrite(main)] - #[test] - fn test_168() { - assert_eq!(call!(ge_ui64(1, 18446744073709551615)), false); - assert_eq!(call!(ge_ui64(2, 3)), false); - assert_eq!(call!(ge_ui64(2, 4)), false); - assert_eq!(call!(ge_ui64(2, 191084152064409600)), false); - assert_eq!(call!(ge_ui64(2, 11015955194427482112)), false); - assert_eq!(call!(ge_ui64(2, 16990600415051759616)), false); - assert_eq!(call!(ge_ui64(2, 18446744073709551614)), false); - assert_eq!(call!(ge_ui64(2, 18446744073709551615)), false); - assert_eq!(call!(ge_ui64(3, 4)), false); - assert_eq!(call!(ge_ui64(3, 191084152064409600)), false); - } - #[rewrite(main)] - #[test] - fn test_169() { - assert_eq!(call!(ge_ui64(3, 11015955194427482112)), false); - assert_eq!(call!(ge_ui64(3, 16990600415051759616)), false); - assert_eq!(call!(ge_ui64(3, 18446744073709551614)), false); - assert_eq!(call!(ge_ui64(3, 18446744073709551615)), false); - assert_eq!(call!(ge_ui64(4, 191084152064409600)), false); - assert_eq!(call!(ge_ui64(4, 11015955194427482112)), false); - assert_eq!(call!(ge_ui64(4, 16990600415051759616)), false); - assert_eq!(call!(ge_ui64(4, 18446744073709551614)), false); - assert_eq!(call!(ge_ui64(4, 18446744073709551615)), false); - assert_eq!(call!(ge_ui64(191084152064409600, 11015955194427482112)), false); - } - #[rewrite(main)] - #[test] - fn test_170() { - assert_eq!(call!(ge_ui64(191084152064409600, 16990600415051759616)), false); - assert_eq!(call!(ge_ui64(191084152064409600, 18446744073709551614)), false); - assert_eq!(call!(ge_ui64(191084152064409600, 18446744073709551615)), false); - assert_eq!(call!(ge_ui64(11015955194427482112, 16990600415051759616)), false); - assert_eq!(call!(ge_ui64(11015955194427482112, 18446744073709551614)), false); - assert_eq!(call!(ge_ui64(11015955194427482112, 18446744073709551615)), false); - assert_eq!(call!(ge_ui64(16990600415051759616, 18446744073709551614)), false); - assert_eq!(call!(ge_ui64(16990600415051759616, 18446744073709551615)), false); - assert_eq!(call!(ge_ui64(18446744073709551614, 18446744073709551615)), false); - assert_eq!(call!(ge_ui64(0, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_171() { - assert_eq!(call!(ge_ui64(1, 0)), true); - assert_eq!(call!(ge_ui64(1, 1)), true); - assert_eq!(call!(ge_ui64(2, 0)), true); - assert_eq!(call!(ge_ui64(2, 1)), true); - assert_eq!(call!(ge_ui64(2, 2)), true); - assert_eq!(call!(ge_ui64(3, 0)), true); - assert_eq!(call!(ge_ui64(3, 1)), true); - assert_eq!(call!(ge_ui64(3, 2)), true); - assert_eq!(call!(ge_ui64(3, 3)), true); - assert_eq!(call!(ge_ui64(4, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_172() { - assert_eq!(call!(ge_ui64(4, 1)), true); - assert_eq!(call!(ge_ui64(4, 2)), true); - assert_eq!(call!(ge_ui64(4, 3)), true); - assert_eq!(call!(ge_ui64(4, 4)), true); - assert_eq!(call!(ge_ui64(191084152064409600, 0)), true); - assert_eq!(call!(ge_ui64(191084152064409600, 1)), true); - assert_eq!(call!(ge_ui64(191084152064409600, 2)), true); - assert_eq!(call!(ge_ui64(191084152064409600, 3)), true); - assert_eq!(call!(ge_ui64(191084152064409600, 4)), true); - assert_eq!(call!(ge_ui64(191084152064409600, 191084152064409600)), true); - } - #[rewrite(main)] - #[test] - fn test_173() { - assert_eq!(call!(ge_ui64(11015955194427482112, 0)), true); - assert_eq!(call!(ge_ui64(11015955194427482112, 1)), true); - assert_eq!(call!(ge_ui64(11015955194427482112, 2)), true); - assert_eq!(call!(ge_ui64(11015955194427482112, 3)), true); - assert_eq!(call!(ge_ui64(11015955194427482112, 4)), true); - assert_eq!(call!(ge_ui64(11015955194427482112, 191084152064409600)), true); - assert_eq!(call!(ge_ui64(11015955194427482112, 11015955194427482112)), true); - assert_eq!(call!(ge_ui64(16990600415051759616, 0)), true); - assert_eq!(call!(ge_ui64(16990600415051759616, 1)), true); - assert_eq!(call!(ge_ui64(16990600415051759616, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_174() { - assert_eq!(call!(ge_ui64(16990600415051759616, 3)), true); - assert_eq!(call!(ge_ui64(16990600415051759616, 4)), true); - assert_eq!(call!(ge_ui64(16990600415051759616, 191084152064409600)), true); - assert_eq!(call!(ge_ui64(16990600415051759616, 11015955194427482112)), true); - assert_eq!(call!(ge_ui64(16990600415051759616, 16990600415051759616)), true); - assert_eq!(call!(ge_ui64(18446744073709551614, 0)), true); - assert_eq!(call!(ge_ui64(18446744073709551614, 1)), true); - assert_eq!(call!(ge_ui64(18446744073709551614, 2)), true); - assert_eq!(call!(ge_ui64(18446744073709551614, 3)), true); - assert_eq!(call!(ge_ui64(18446744073709551614, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_175() { - assert_eq!(call!(ge_ui64(18446744073709551614, 191084152064409600)), true); - assert_eq!(call!(ge_ui64(18446744073709551614, 11015955194427482112)), true); - assert_eq!(call!(ge_ui64(18446744073709551614, 16990600415051759616)), true); - assert_eq!(call!(ge_ui64(18446744073709551614, 18446744073709551614)), true); - assert_eq!(call!(ge_ui64(18446744073709551615, 0)), true); - assert_eq!(call!(ge_ui64(18446744073709551615, 1)), true); - assert_eq!(call!(ge_ui64(18446744073709551615, 2)), true); - assert_eq!(call!(ge_ui64(18446744073709551615, 3)), true); - assert_eq!(call!(ge_ui64(18446744073709551615, 4)), true); - assert_eq!(call!(ge_ui64(18446744073709551615, 191084152064409600)), true); - } - #[rewrite(main)] - #[test] - fn test_176() { - assert_eq!(call!(ge_ui64(18446744073709551615, 11015955194427482112)), true); - assert_eq!(call!(ge_ui64(18446744073709551615, 16990600415051759616)), true); - assert_eq!(call!(ge_ui64(18446744073709551615, 18446744073709551614)), true); - assert_eq!(call!(ge_ui64(18446744073709551615, 18446744073709551615)), true); - assert_eq!(call!(ge_ui8(0, 1)), false); - assert_eq!(call!(ge_ui8(0, 2)), false); - assert_eq!(call!(ge_ui8(0, 3)), false); - assert_eq!(call!(ge_ui8(0, 4)), false); - assert_eq!(call!(ge_ui8(0, 72)), false); - assert_eq!(call!(ge_ui8(0, 100)), false); - } - #[rewrite(main)] - #[test] - fn test_177() { - assert_eq!(call!(ge_ui8(0, 162)), false); - assert_eq!(call!(ge_ui8(0, 254)), false); - assert_eq!(call!(ge_ui8(0, 255)), false); - assert_eq!(call!(ge_ui8(1, 2)), false); - assert_eq!(call!(ge_ui8(1, 3)), false); - assert_eq!(call!(ge_ui8(1, 4)), false); - assert_eq!(call!(ge_ui8(1, 72)), false); - assert_eq!(call!(ge_ui8(1, 100)), false); - assert_eq!(call!(ge_ui8(1, 162)), false); - assert_eq!(call!(ge_ui8(1, 254)), false); - } - #[rewrite(main)] - #[test] - fn test_178() { - assert_eq!(call!(ge_ui8(1, 255)), false); - assert_eq!(call!(ge_ui8(2, 3)), false); - assert_eq!(call!(ge_ui8(2, 4)), false); - assert_eq!(call!(ge_ui8(2, 72)), false); - assert_eq!(call!(ge_ui8(2, 100)), false); - assert_eq!(call!(ge_ui8(2, 162)), false); - assert_eq!(call!(ge_ui8(2, 254)), false); - assert_eq!(call!(ge_ui8(2, 255)), false); - assert_eq!(call!(ge_ui8(3, 4)), false); - assert_eq!(call!(ge_ui8(3, 72)), false); - } - #[rewrite(main)] - #[test] - fn test_179() { - assert_eq!(call!(ge_ui8(3, 100)), false); - assert_eq!(call!(ge_ui8(3, 162)), false); - assert_eq!(call!(ge_ui8(3, 254)), false); - assert_eq!(call!(ge_ui8(3, 255)), false); - assert_eq!(call!(ge_ui8(4, 72)), false); - assert_eq!(call!(ge_ui8(4, 100)), false); - assert_eq!(call!(ge_ui8(4, 162)), false); - assert_eq!(call!(ge_ui8(4, 254)), false); - assert_eq!(call!(ge_ui8(4, 255)), false); - assert_eq!(call!(ge_ui8(72, 100)), false); - } - #[rewrite(main)] - #[test] - fn test_180() { - assert_eq!(call!(ge_ui8(72, 162)), false); - assert_eq!(call!(ge_ui8(72, 254)), false); - assert_eq!(call!(ge_ui8(72, 255)), false); - assert_eq!(call!(ge_ui8(100, 162)), false); - assert_eq!(call!(ge_ui8(100, 254)), false); - assert_eq!(call!(ge_ui8(100, 255)), false); - assert_eq!(call!(ge_ui8(162, 254)), false); - assert_eq!(call!(ge_ui8(162, 255)), false); - assert_eq!(call!(ge_ui8(254, 255)), false); - assert_eq!(call!(ge_ui8(0, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_181() { - assert_eq!(call!(ge_ui8(1, 0)), true); - assert_eq!(call!(ge_ui8(1, 1)), true); - assert_eq!(call!(ge_ui8(2, 0)), true); - assert_eq!(call!(ge_ui8(2, 1)), true); - assert_eq!(call!(ge_ui8(2, 2)), true); - assert_eq!(call!(ge_ui8(3, 0)), true); - assert_eq!(call!(ge_ui8(3, 1)), true); - assert_eq!(call!(ge_ui8(3, 2)), true); - assert_eq!(call!(ge_ui8(3, 3)), true); - assert_eq!(call!(ge_ui8(4, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_182() { - assert_eq!(call!(ge_ui8(4, 1)), true); - assert_eq!(call!(ge_ui8(4, 2)), true); - assert_eq!(call!(ge_ui8(4, 3)), true); - assert_eq!(call!(ge_ui8(4, 4)), true); - assert_eq!(call!(ge_ui8(72, 0)), true); - assert_eq!(call!(ge_ui8(72, 1)), true); - assert_eq!(call!(ge_ui8(72, 2)), true); - assert_eq!(call!(ge_ui8(72, 3)), true); - assert_eq!(call!(ge_ui8(72, 4)), true); - assert_eq!(call!(ge_ui8(72, 72)), true); - } - #[rewrite(main)] - #[test] - fn test_183() { - assert_eq!(call!(ge_ui8(100, 0)), true); - assert_eq!(call!(ge_ui8(100, 1)), true); - assert_eq!(call!(ge_ui8(100, 2)), true); - assert_eq!(call!(ge_ui8(100, 3)), true); - assert_eq!(call!(ge_ui8(100, 4)), true); - assert_eq!(call!(ge_ui8(100, 72)), true); - assert_eq!(call!(ge_ui8(100, 100)), true); - assert_eq!(call!(ge_ui8(162, 0)), true); - assert_eq!(call!(ge_ui8(162, 1)), true); - assert_eq!(call!(ge_ui8(162, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_184() { - assert_eq!(call!(ge_ui8(162, 3)), true); - assert_eq!(call!(ge_ui8(162, 4)), true); - assert_eq!(call!(ge_ui8(162, 72)), true); - assert_eq!(call!(ge_ui8(162, 100)), true); - assert_eq!(call!(ge_ui8(162, 162)), true); - assert_eq!(call!(ge_ui8(254, 0)), true); - assert_eq!(call!(ge_ui8(254, 1)), true); - assert_eq!(call!(ge_ui8(254, 2)), true); - assert_eq!(call!(ge_ui8(254, 3)), true); - assert_eq!(call!(ge_ui8(254, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_185() { - assert_eq!(call!(ge_ui8(254, 72)), true); - assert_eq!(call!(ge_ui8(254, 100)), true); - assert_eq!(call!(ge_ui8(254, 162)), true); - assert_eq!(call!(ge_ui8(254, 254)), true); - assert_eq!(call!(ge_ui8(255, 0)), true); - assert_eq!(call!(ge_ui8(255, 1)), true); - assert_eq!(call!(ge_ui8(255, 2)), true); - assert_eq!(call!(ge_ui8(255, 3)), true); - assert_eq!(call!(ge_ui8(255, 4)), true); - assert_eq!(call!(ge_ui8(255, 72)), true); - } - #[rewrite(main)] - #[test] - fn test_186() { - assert_eq!(call!(ge_ui8(255, 100)), true); - assert_eq!(call!(ge_ui8(255, 162)), true); - assert_eq!(call!(ge_ui8(255, 254)), true); - assert_eq!(call!(ge_ui8(255, 255)), true); - assert_eq!(call!(gt_si16(-32768, -32768)), false); - assert_eq!(call!(gt_si16(-32768, -32767)), false); - assert_eq!(call!(gt_si16(-32768, -32547)), false); - assert_eq!(call!(gt_si16(-32768, 0)), false); - assert_eq!(call!(gt_si16(-32768, 1)), false); - assert_eq!(call!(gt_si16(-32768, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_187() { - assert_eq!(call!(gt_si16(-32768, 3)), false); - assert_eq!(call!(gt_si16(-32768, 4)), false); - assert_eq!(call!(gt_si16(-32768, 10486)), false); - assert_eq!(call!(gt_si16(-32768, 16514)), false); - assert_eq!(call!(gt_si16(-32768, 32766)), false); - assert_eq!(call!(gt_si16(-32768, 32767)), false); - assert_eq!(call!(gt_si16(-32767, -32767)), false); - assert_eq!(call!(gt_si16(-32767, -32547)), false); - assert_eq!(call!(gt_si16(-32767, 0)), false); - assert_eq!(call!(gt_si16(-32767, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_188() { - assert_eq!(call!(gt_si16(-32767, 2)), false); - assert_eq!(call!(gt_si16(-32767, 3)), false); - assert_eq!(call!(gt_si16(-32767, 4)), false); - assert_eq!(call!(gt_si16(-32767, 10486)), false); - assert_eq!(call!(gt_si16(-32767, 16514)), false); - assert_eq!(call!(gt_si16(-32767, 32766)), false); - assert_eq!(call!(gt_si16(-32767, 32767)), false); - assert_eq!(call!(gt_si16(-32547, -32547)), false); - assert_eq!(call!(gt_si16(-32547, 0)), false); - assert_eq!(call!(gt_si16(-32547, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_189() { - assert_eq!(call!(gt_si16(-32547, 2)), false); - assert_eq!(call!(gt_si16(-32547, 3)), false); - assert_eq!(call!(gt_si16(-32547, 4)), false); - assert_eq!(call!(gt_si16(-32547, 10486)), false); - assert_eq!(call!(gt_si16(-32547, 16514)), false); - assert_eq!(call!(gt_si16(-32547, 32766)), false); - assert_eq!(call!(gt_si16(-32547, 32767)), false); - assert_eq!(call!(gt_si16(0, 0)), false); - assert_eq!(call!(gt_si16(0, 1)), false); - assert_eq!(call!(gt_si16(0, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_190() { - assert_eq!(call!(gt_si16(0, 3)), false); - assert_eq!(call!(gt_si16(0, 4)), false); - assert_eq!(call!(gt_si16(0, 10486)), false); - assert_eq!(call!(gt_si16(0, 16514)), false); - assert_eq!(call!(gt_si16(0, 32766)), false); - assert_eq!(call!(gt_si16(0, 32767)), false); - assert_eq!(call!(gt_si16(1, 1)), false); - assert_eq!(call!(gt_si16(1, 2)), false); - assert_eq!(call!(gt_si16(1, 3)), false); - assert_eq!(call!(gt_si16(1, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_191() { - assert_eq!(call!(gt_si16(1, 10486)), false); - assert_eq!(call!(gt_si16(1, 16514)), false); - assert_eq!(call!(gt_si16(1, 32766)), false); - assert_eq!(call!(gt_si16(1, 32767)), false); - assert_eq!(call!(gt_si16(2, 2)), false); - assert_eq!(call!(gt_si16(2, 3)), false); - assert_eq!(call!(gt_si16(2, 4)), false); - assert_eq!(call!(gt_si16(2, 10486)), false); - assert_eq!(call!(gt_si16(2, 16514)), false); - assert_eq!(call!(gt_si16(2, 32766)), false); - } - #[rewrite(main)] - #[test] - fn test_192() { - assert_eq!(call!(gt_si16(2, 32767)), false); - assert_eq!(call!(gt_si16(3, 3)), false); - assert_eq!(call!(gt_si16(3, 4)), false); - assert_eq!(call!(gt_si16(3, 10486)), false); - assert_eq!(call!(gt_si16(3, 16514)), false); - assert_eq!(call!(gt_si16(3, 32766)), false); - assert_eq!(call!(gt_si16(3, 32767)), false); - assert_eq!(call!(gt_si16(4, 4)), false); - assert_eq!(call!(gt_si16(4, 10486)), false); - assert_eq!(call!(gt_si16(4, 16514)), false); - } - #[rewrite(main)] - #[test] - fn test_193() { - assert_eq!(call!(gt_si16(4, 32766)), false); - assert_eq!(call!(gt_si16(4, 32767)), false); - assert_eq!(call!(gt_si16(10486, 10486)), false); - assert_eq!(call!(gt_si16(10486, 16514)), false); - assert_eq!(call!(gt_si16(10486, 32766)), false); - assert_eq!(call!(gt_si16(10486, 32767)), false); - assert_eq!(call!(gt_si16(16514, 16514)), false); - assert_eq!(call!(gt_si16(16514, 32766)), false); - assert_eq!(call!(gt_si16(16514, 32767)), false); - assert_eq!(call!(gt_si16(32766, 32766)), false); - } - #[rewrite(main)] - #[test] - fn test_194() { - assert_eq!(call!(gt_si16(32766, 32767)), false); - assert_eq!(call!(gt_si16(32767, 32767)), false); - assert_eq!(call!(gt_si16(-32767, -32768)), true); - assert_eq!(call!(gt_si16(-32547, -32768)), true); - assert_eq!(call!(gt_si16(-32547, -32767)), true); - assert_eq!(call!(gt_si16(0, -32768)), true); - assert_eq!(call!(gt_si16(0, -32767)), true); - assert_eq!(call!(gt_si16(0, -32547)), true); - assert_eq!(call!(gt_si16(1, -32768)), true); - assert_eq!(call!(gt_si16(1, -32767)), true); - } - #[rewrite(main)] - #[test] - fn test_195() { - assert_eq!(call!(gt_si16(1, -32547)), true); - assert_eq!(call!(gt_si16(1, 0)), true); - assert_eq!(call!(gt_si16(2, -32768)), true); - assert_eq!(call!(gt_si16(2, -32767)), true); - assert_eq!(call!(gt_si16(2, -32547)), true); - assert_eq!(call!(gt_si16(2, 0)), true); - assert_eq!(call!(gt_si16(2, 1)), true); - assert_eq!(call!(gt_si16(3, -32768)), true); - assert_eq!(call!(gt_si16(3, -32767)), true); - assert_eq!(call!(gt_si16(3, -32547)), true); - } - #[rewrite(main)] - #[test] - fn test_196() { - assert_eq!(call!(gt_si16(3, 0)), true); - assert_eq!(call!(gt_si16(3, 1)), true); - assert_eq!(call!(gt_si16(3, 2)), true); - assert_eq!(call!(gt_si16(4, -32768)), true); - assert_eq!(call!(gt_si16(4, -32767)), true); - assert_eq!(call!(gt_si16(4, -32547)), true); - assert_eq!(call!(gt_si16(4, 0)), true); - assert_eq!(call!(gt_si16(4, 1)), true); - assert_eq!(call!(gt_si16(4, 2)), true); - assert_eq!(call!(gt_si16(4, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_197() { - assert_eq!(call!(gt_si16(10486, -32768)), true); - assert_eq!(call!(gt_si16(10486, -32767)), true); - assert_eq!(call!(gt_si16(10486, -32547)), true); - assert_eq!(call!(gt_si16(10486, 0)), true); - assert_eq!(call!(gt_si16(10486, 1)), true); - assert_eq!(call!(gt_si16(10486, 2)), true); - assert_eq!(call!(gt_si16(10486, 3)), true); - assert_eq!(call!(gt_si16(10486, 4)), true); - assert_eq!(call!(gt_si16(16514, -32768)), true); - assert_eq!(call!(gt_si16(16514, -32767)), true); - } - #[rewrite(main)] - #[test] - fn test_198() { - assert_eq!(call!(gt_si16(16514, -32547)), true); - assert_eq!(call!(gt_si16(16514, 0)), true); - assert_eq!(call!(gt_si16(16514, 1)), true); - assert_eq!(call!(gt_si16(16514, 2)), true); - assert_eq!(call!(gt_si16(16514, 3)), true); - assert_eq!(call!(gt_si16(16514, 4)), true); - assert_eq!(call!(gt_si16(16514, 10486)), true); - assert_eq!(call!(gt_si16(32766, -32768)), true); - assert_eq!(call!(gt_si16(32766, -32767)), true); - assert_eq!(call!(gt_si16(32766, -32547)), true); - } - #[rewrite(main)] - #[test] - fn test_199() { - assert_eq!(call!(gt_si16(32766, 0)), true); - assert_eq!(call!(gt_si16(32766, 1)), true); - assert_eq!(call!(gt_si16(32766, 2)), true); - assert_eq!(call!(gt_si16(32766, 3)), true); - assert_eq!(call!(gt_si16(32766, 4)), true); - assert_eq!(call!(gt_si16(32766, 10486)), true); - assert_eq!(call!(gt_si16(32766, 16514)), true); - assert_eq!(call!(gt_si16(32767, -32768)), true); - assert_eq!(call!(gt_si16(32767, -32767)), true); - assert_eq!(call!(gt_si16(32767, -32547)), true); - } - #[rewrite(main)] - #[test] - fn test_200() { - assert_eq!(call!(gt_si16(32767, 0)), true); - assert_eq!(call!(gt_si16(32767, 1)), true); - assert_eq!(call!(gt_si16(32767, 2)), true); - assert_eq!(call!(gt_si16(32767, 3)), true); - assert_eq!(call!(gt_si16(32767, 4)), true); - assert_eq!(call!(gt_si16(32767, 10486)), true); - assert_eq!(call!(gt_si16(32767, 16514)), true); - assert_eq!(call!(gt_si16(32767, 32766)), true); - assert_eq!(call!(gt_si32(-2147483648, -2147483648)), false); - assert_eq!(call!(gt_si32(-2147483648, -2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_201() { - assert_eq!(call!(gt_si32(-2147483648, -1713183800)), false); - assert_eq!(call!(gt_si32(-2147483648, -1252582164)), false); - assert_eq!(call!(gt_si32(-2147483648, -1035405763)), false); - assert_eq!(call!(gt_si32(-2147483648, 0)), false); - assert_eq!(call!(gt_si32(-2147483648, 1)), false); - assert_eq!(call!(gt_si32(-2147483648, 2)), false); - assert_eq!(call!(gt_si32(-2147483648, 3)), false); - assert_eq!(call!(gt_si32(-2147483648, 4)), false); - assert_eq!(call!(gt_si32(-2147483648, 2147483646)), false); - assert_eq!(call!(gt_si32(-2147483648, 2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_202() { - assert_eq!(call!(gt_si32(-2147483647, -2147483647)), false); - assert_eq!(call!(gt_si32(-2147483647, -1713183800)), false); - assert_eq!(call!(gt_si32(-2147483647, -1252582164)), false); - assert_eq!(call!(gt_si32(-2147483647, -1035405763)), false); - assert_eq!(call!(gt_si32(-2147483647, 0)), false); - assert_eq!(call!(gt_si32(-2147483647, 1)), false); - assert_eq!(call!(gt_si32(-2147483647, 2)), false); - assert_eq!(call!(gt_si32(-2147483647, 3)), false); - assert_eq!(call!(gt_si32(-2147483647, 4)), false); - assert_eq!(call!(gt_si32(-2147483647, 2147483646)), false); - } - #[rewrite(main)] - #[test] - fn test_203() { - assert_eq!(call!(gt_si32(-2147483647, 2147483647)), false); - assert_eq!(call!(gt_si32(-1713183800, -1713183800)), false); - assert_eq!(call!(gt_si32(-1713183800, -1252582164)), false); - assert_eq!(call!(gt_si32(-1713183800, -1035405763)), false); - assert_eq!(call!(gt_si32(-1713183800, 0)), false); - assert_eq!(call!(gt_si32(-1713183800, 1)), false); - assert_eq!(call!(gt_si32(-1713183800, 2)), false); - assert_eq!(call!(gt_si32(-1713183800, 3)), false); - assert_eq!(call!(gt_si32(-1713183800, 4)), false); - assert_eq!(call!(gt_si32(-1713183800, 2147483646)), false); - } - #[rewrite(main)] - #[test] - fn test_204() { - assert_eq!(call!(gt_si32(-1713183800, 2147483647)), false); - assert_eq!(call!(gt_si32(-1252582164, -1252582164)), false); - assert_eq!(call!(gt_si32(-1252582164, -1035405763)), false); - assert_eq!(call!(gt_si32(-1252582164, 0)), false); - assert_eq!(call!(gt_si32(-1252582164, 1)), false); - assert_eq!(call!(gt_si32(-1252582164, 2)), false); - assert_eq!(call!(gt_si32(-1252582164, 3)), false); - assert_eq!(call!(gt_si32(-1252582164, 4)), false); - assert_eq!(call!(gt_si32(-1252582164, 2147483646)), false); - assert_eq!(call!(gt_si32(-1252582164, 2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_205() { - assert_eq!(call!(gt_si32(-1035405763, -1035405763)), false); - assert_eq!(call!(gt_si32(-1035405763, 0)), false); - assert_eq!(call!(gt_si32(-1035405763, 1)), false); - assert_eq!(call!(gt_si32(-1035405763, 2)), false); - assert_eq!(call!(gt_si32(-1035405763, 3)), false); - assert_eq!(call!(gt_si32(-1035405763, 4)), false); - assert_eq!(call!(gt_si32(-1035405763, 2147483646)), false); - assert_eq!(call!(gt_si32(-1035405763, 2147483647)), false); - assert_eq!(call!(gt_si32(0, 0)), false); - assert_eq!(call!(gt_si32(0, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_206() { - assert_eq!(call!(gt_si32(0, 2)), false); - assert_eq!(call!(gt_si32(0, 3)), false); - assert_eq!(call!(gt_si32(0, 4)), false); - assert_eq!(call!(gt_si32(0, 2147483646)), false); - assert_eq!(call!(gt_si32(0, 2147483647)), false); - assert_eq!(call!(gt_si32(1, 1)), false); - assert_eq!(call!(gt_si32(1, 2)), false); - assert_eq!(call!(gt_si32(1, 3)), false); - assert_eq!(call!(gt_si32(1, 4)), false); - assert_eq!(call!(gt_si32(1, 2147483646)), false); - } - #[rewrite(main)] - #[test] - fn test_207() { - assert_eq!(call!(gt_si32(1, 2147483647)), false); - assert_eq!(call!(gt_si32(2, 2)), false); - assert_eq!(call!(gt_si32(2, 3)), false); - assert_eq!(call!(gt_si32(2, 4)), false); - assert_eq!(call!(gt_si32(2, 2147483646)), false); - assert_eq!(call!(gt_si32(2, 2147483647)), false); - assert_eq!(call!(gt_si32(3, 3)), false); - assert_eq!(call!(gt_si32(3, 4)), false); - assert_eq!(call!(gt_si32(3, 2147483646)), false); - assert_eq!(call!(gt_si32(3, 2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_208() { - assert_eq!(call!(gt_si32(4, 4)), false); - assert_eq!(call!(gt_si32(4, 2147483646)), false); - assert_eq!(call!(gt_si32(4, 2147483647)), false); - assert_eq!(call!(gt_si32(2147483646, 2147483646)), false); - assert_eq!(call!(gt_si32(2147483646, 2147483647)), false); - assert_eq!(call!(gt_si32(2147483647, 2147483647)), false); - assert_eq!(call!(gt_si32(-2147483647, -2147483648)), true); - assert_eq!(call!(gt_si32(-1713183800, -2147483648)), true); - assert_eq!(call!(gt_si32(-1713183800, -2147483647)), true); - assert_eq!(call!(gt_si32(-1252582164, -2147483648)), true); - } - #[rewrite(main)] - #[test] - fn test_209() { - assert_eq!(call!(gt_si32(-1252582164, -2147483647)), true); - assert_eq!(call!(gt_si32(-1252582164, -1713183800)), true); - assert_eq!(call!(gt_si32(-1035405763, -2147483648)), true); - assert_eq!(call!(gt_si32(-1035405763, -2147483647)), true); - assert_eq!(call!(gt_si32(-1035405763, -1713183800)), true); - assert_eq!(call!(gt_si32(-1035405763, -1252582164)), true); - assert_eq!(call!(gt_si32(0, -2147483648)), true); - assert_eq!(call!(gt_si32(0, -2147483647)), true); - assert_eq!(call!(gt_si32(0, -1713183800)), true); - assert_eq!(call!(gt_si32(0, -1252582164)), true); - } - #[rewrite(main)] - #[test] - fn test_210() { - assert_eq!(call!(gt_si32(0, -1035405763)), true); - assert_eq!(call!(gt_si32(1, -2147483648)), true); - assert_eq!(call!(gt_si32(1, -2147483647)), true); - assert_eq!(call!(gt_si32(1, -1713183800)), true); - assert_eq!(call!(gt_si32(1, -1252582164)), true); - assert_eq!(call!(gt_si32(1, -1035405763)), true); - assert_eq!(call!(gt_si32(1, 0)), true); - assert_eq!(call!(gt_si32(2, -2147483648)), true); - assert_eq!(call!(gt_si32(2, -2147483647)), true); - assert_eq!(call!(gt_si32(2, -1713183800)), true); - } - #[rewrite(main)] - #[test] - fn test_211() { - assert_eq!(call!(gt_si32(2, -1252582164)), true); - assert_eq!(call!(gt_si32(2, -1035405763)), true); - assert_eq!(call!(gt_si32(2, 0)), true); - assert_eq!(call!(gt_si32(2, 1)), true); - assert_eq!(call!(gt_si32(3, -2147483648)), true); - assert_eq!(call!(gt_si32(3, -2147483647)), true); - assert_eq!(call!(gt_si32(3, -1713183800)), true); - assert_eq!(call!(gt_si32(3, -1252582164)), true); - assert_eq!(call!(gt_si32(3, -1035405763)), true); - assert_eq!(call!(gt_si32(3, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_212() { - assert_eq!(call!(gt_si32(3, 1)), true); - assert_eq!(call!(gt_si32(3, 2)), true); - assert_eq!(call!(gt_si32(4, -2147483648)), true); - assert_eq!(call!(gt_si32(4, -2147483647)), true); - assert_eq!(call!(gt_si32(4, -1713183800)), true); - assert_eq!(call!(gt_si32(4, -1252582164)), true); - assert_eq!(call!(gt_si32(4, -1035405763)), true); - assert_eq!(call!(gt_si32(4, 0)), true); - assert_eq!(call!(gt_si32(4, 1)), true); - assert_eq!(call!(gt_si32(4, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_213() { - assert_eq!(call!(gt_si32(4, 3)), true); - assert_eq!(call!(gt_si32(2147483646, -2147483648)), true); - assert_eq!(call!(gt_si32(2147483646, -2147483647)), true); - assert_eq!(call!(gt_si32(2147483646, -1713183800)), true); - assert_eq!(call!(gt_si32(2147483646, -1252582164)), true); - assert_eq!(call!(gt_si32(2147483646, -1035405763)), true); - assert_eq!(call!(gt_si32(2147483646, 0)), true); - assert_eq!(call!(gt_si32(2147483646, 1)), true); - assert_eq!(call!(gt_si32(2147483646, 2)), true); - assert_eq!(call!(gt_si32(2147483646, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_214() { - assert_eq!(call!(gt_si32(2147483646, 4)), true); - assert_eq!(call!(gt_si32(2147483647, -2147483648)), true); - assert_eq!(call!(gt_si32(2147483647, -2147483647)), true); - assert_eq!(call!(gt_si32(2147483647, -1713183800)), true); - assert_eq!(call!(gt_si32(2147483647, -1252582164)), true); - assert_eq!(call!(gt_si32(2147483647, -1035405763)), true); - assert_eq!(call!(gt_si32(2147483647, 0)), true); - assert_eq!(call!(gt_si32(2147483647, 1)), true); - assert_eq!(call!(gt_si32(2147483647, 2)), true); - assert_eq!(call!(gt_si32(2147483647, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_215() { - assert_eq!(call!(gt_si32(2147483647, 4)), true); - assert_eq!(call!(gt_si32(2147483647, 2147483646)), true); - assert_eq!(call!(gt_si64(-9223372036854775808, -9223372036854775808)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, -9223372036854775807)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, -1741927215160008704)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, -1328271339354574848)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, 0)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, 1)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, 2)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_216() { - assert_eq!(call!(gt_si64(-9223372036854775808, 4)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, 5577148965131116544)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(-9223372036854775808, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, -9223372036854775807)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, -1741927215160008704)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, -1328271339354574848)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, 0)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, 1)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_217() { - assert_eq!(call!(gt_si64(-9223372036854775807, 3)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, 4)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, 5577148965131116544)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(-9223372036854775807, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(-1741927215160008704, -1741927215160008704)), false); - assert_eq!(call!(gt_si64(-1741927215160008704, -1328271339354574848)), false); - assert_eq!(call!(gt_si64(-1741927215160008704, 0)), false); - assert_eq!(call!(gt_si64(-1741927215160008704, 1)), false); - assert_eq!(call!(gt_si64(-1741927215160008704, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_218() { - assert_eq!(call!(gt_si64(-1741927215160008704, 3)), false); - assert_eq!(call!(gt_si64(-1741927215160008704, 4)), false); - assert_eq!(call!(gt_si64(-1741927215160008704, 5577148965131116544)), false); - assert_eq!(call!(gt_si64(-1741927215160008704, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(-1741927215160008704, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(-1328271339354574848, -1328271339354574848)), false); - assert_eq!(call!(gt_si64(-1328271339354574848, 0)), false); - assert_eq!(call!(gt_si64(-1328271339354574848, 1)), false); - assert_eq!(call!(gt_si64(-1328271339354574848, 2)), false); - assert_eq!(call!(gt_si64(-1328271339354574848, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_219() { - assert_eq!(call!(gt_si64(-1328271339354574848, 4)), false); - assert_eq!(call!(gt_si64(-1328271339354574848, 5577148965131116544)), false); - assert_eq!(call!(gt_si64(-1328271339354574848, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(-1328271339354574848, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(0, 0)), false); - assert_eq!(call!(gt_si64(0, 1)), false); - assert_eq!(call!(gt_si64(0, 2)), false); - assert_eq!(call!(gt_si64(0, 3)), false); - assert_eq!(call!(gt_si64(0, 4)), false); - assert_eq!(call!(gt_si64(0, 5577148965131116544)), false); - } - #[rewrite(main)] - #[test] - fn test_220() { - assert_eq!(call!(gt_si64(0, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(0, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(1, 1)), false); - assert_eq!(call!(gt_si64(1, 2)), false); - assert_eq!(call!(gt_si64(1, 3)), false); - assert_eq!(call!(gt_si64(1, 4)), false); - assert_eq!(call!(gt_si64(1, 5577148965131116544)), false); - assert_eq!(call!(gt_si64(1, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(1, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(2, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_221() { - assert_eq!(call!(gt_si64(2, 3)), false); - assert_eq!(call!(gt_si64(2, 4)), false); - assert_eq!(call!(gt_si64(2, 5577148965131116544)), false); - assert_eq!(call!(gt_si64(2, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(2, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(3, 3)), false); - assert_eq!(call!(gt_si64(3, 4)), false); - assert_eq!(call!(gt_si64(3, 5577148965131116544)), false); - assert_eq!(call!(gt_si64(3, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(3, 9223372036854775807)), false); - } - #[rewrite(main)] - #[test] - fn test_222() { - assert_eq!(call!(gt_si64(4, 4)), false); - assert_eq!(call!(gt_si64(4, 5577148965131116544)), false); - assert_eq!(call!(gt_si64(4, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(4, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(5577148965131116544, 5577148965131116544)), false); - assert_eq!(call!(gt_si64(5577148965131116544, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(5577148965131116544, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(9223372036854775806, 9223372036854775806)), false); - assert_eq!(call!(gt_si64(9223372036854775806, 9223372036854775807)), false); - assert_eq!(call!(gt_si64(9223372036854775807, 9223372036854775807)), false); - } - #[rewrite(main)] - #[test] - fn test_223() { - assert_eq!(call!(gt_si64(-9223372036854775807, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(-1741927215160008704, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(-1741927215160008704, -9223372036854775807)), true); - assert_eq!(call!(gt_si64(-1328271339354574848, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(-1328271339354574848, -9223372036854775807)), true); - assert_eq!(call!(gt_si64(-1328271339354574848, -1741927215160008704)), true); - assert_eq!(call!(gt_si64(0, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(0, -9223372036854775807)), true); - assert_eq!(call!(gt_si64(0, -1741927215160008704)), true); - assert_eq!(call!(gt_si64(0, -1328271339354574848)), true); - } - #[rewrite(main)] - #[test] - fn test_224() { - assert_eq!(call!(gt_si64(1, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(1, -9223372036854775807)), true); - assert_eq!(call!(gt_si64(1, -1741927215160008704)), true); - assert_eq!(call!(gt_si64(1, -1328271339354574848)), true); - assert_eq!(call!(gt_si64(1, 0)), true); - assert_eq!(call!(gt_si64(2, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(2, -9223372036854775807)), true); - assert_eq!(call!(gt_si64(2, -1741927215160008704)), true); - assert_eq!(call!(gt_si64(2, -1328271339354574848)), true); - assert_eq!(call!(gt_si64(2, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_225() { - assert_eq!(call!(gt_si64(2, 1)), true); - assert_eq!(call!(gt_si64(3, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(3, -9223372036854775807)), true); - assert_eq!(call!(gt_si64(3, -1741927215160008704)), true); - assert_eq!(call!(gt_si64(3, -1328271339354574848)), true); - assert_eq!(call!(gt_si64(3, 0)), true); - assert_eq!(call!(gt_si64(3, 1)), true); - assert_eq!(call!(gt_si64(3, 2)), true); - assert_eq!(call!(gt_si64(4, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(4, -9223372036854775807)), true); - } - #[rewrite(main)] - #[test] - fn test_226() { - assert_eq!(call!(gt_si64(4, -1741927215160008704)), true); - assert_eq!(call!(gt_si64(4, -1328271339354574848)), true); - assert_eq!(call!(gt_si64(4, 0)), true); - assert_eq!(call!(gt_si64(4, 1)), true); - assert_eq!(call!(gt_si64(4, 2)), true); - assert_eq!(call!(gt_si64(4, 3)), true); - assert_eq!(call!(gt_si64(5577148965131116544, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(5577148965131116544, -9223372036854775807)), true); - assert_eq!(call!(gt_si64(5577148965131116544, -1741927215160008704)), true); - assert_eq!(call!(gt_si64(5577148965131116544, -1328271339354574848)), true); - } - #[rewrite(main)] - #[test] - fn test_227() { - assert_eq!(call!(gt_si64(5577148965131116544, 0)), true); - assert_eq!(call!(gt_si64(5577148965131116544, 1)), true); - assert_eq!(call!(gt_si64(5577148965131116544, 2)), true); - assert_eq!(call!(gt_si64(5577148965131116544, 3)), true); - assert_eq!(call!(gt_si64(5577148965131116544, 4)), true); - assert_eq!(call!(gt_si64(9223372036854775806, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(9223372036854775806, -9223372036854775807)), true); - assert_eq!(call!(gt_si64(9223372036854775806, -1741927215160008704)), true); - assert_eq!(call!(gt_si64(9223372036854775806, -1328271339354574848)), true); - assert_eq!(call!(gt_si64(9223372036854775806, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_228() { - assert_eq!(call!(gt_si64(9223372036854775806, 1)), true); - assert_eq!(call!(gt_si64(9223372036854775806, 2)), true); - assert_eq!(call!(gt_si64(9223372036854775806, 3)), true); - assert_eq!(call!(gt_si64(9223372036854775806, 4)), true); - assert_eq!(call!(gt_si64(9223372036854775806, 5577148965131116544)), true); - assert_eq!(call!(gt_si64(9223372036854775807, -9223372036854775808)), true); - assert_eq!(call!(gt_si64(9223372036854775807, -9223372036854775807)), true); - assert_eq!(call!(gt_si64(9223372036854775807, -1741927215160008704)), true); - assert_eq!(call!(gt_si64(9223372036854775807, -1328271339354574848)), true); - assert_eq!(call!(gt_si64(9223372036854775807, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_229() { - assert_eq!(call!(gt_si64(9223372036854775807, 1)), true); - assert_eq!(call!(gt_si64(9223372036854775807, 2)), true); - assert_eq!(call!(gt_si64(9223372036854775807, 3)), true); - assert_eq!(call!(gt_si64(9223372036854775807, 4)), true); - assert_eq!(call!(gt_si64(9223372036854775807, 5577148965131116544)), true); - assert_eq!(call!(gt_si64(9223372036854775807, 9223372036854775806)), true); - assert_eq!(call!(gt_si8(-128, -128)), false); - assert_eq!(call!(gt_si8(-128, -127)), false); - assert_eq!(call!(gt_si8(-128, 0)), false); - assert_eq!(call!(gt_si8(-128, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_230() { - assert_eq!(call!(gt_si8(-128, 2)), false); - assert_eq!(call!(gt_si8(-128, 3)), false); - assert_eq!(call!(gt_si8(-128, 4)), false); - assert_eq!(call!(gt_si8(-128, 16)), false); - assert_eq!(call!(gt_si8(-128, 126)), false); - assert_eq!(call!(gt_si8(-128, 127)), false); - assert_eq!(call!(gt_si8(-127, -127)), false); - assert_eq!(call!(gt_si8(-127, 0)), false); - assert_eq!(call!(gt_si8(-127, 1)), false); - assert_eq!(call!(gt_si8(-127, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_231() { - assert_eq!(call!(gt_si8(-127, 3)), false); - assert_eq!(call!(gt_si8(-127, 4)), false); - assert_eq!(call!(gt_si8(-127, 16)), false); - assert_eq!(call!(gt_si8(-127, 126)), false); - assert_eq!(call!(gt_si8(-127, 127)), false); - assert_eq!(call!(gt_si8(0, 0)), false); - assert_eq!(call!(gt_si8(0, 1)), false); - assert_eq!(call!(gt_si8(0, 2)), false); - assert_eq!(call!(gt_si8(0, 3)), false); - assert_eq!(call!(gt_si8(0, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_232() { - assert_eq!(call!(gt_si8(0, 16)), false); - assert_eq!(call!(gt_si8(0, 126)), false); - assert_eq!(call!(gt_si8(0, 127)), false); - assert_eq!(call!(gt_si8(1, 1)), false); - assert_eq!(call!(gt_si8(1, 2)), false); - assert_eq!(call!(gt_si8(1, 3)), false); - assert_eq!(call!(gt_si8(1, 4)), false); - assert_eq!(call!(gt_si8(1, 16)), false); - assert_eq!(call!(gt_si8(1, 126)), false); - assert_eq!(call!(gt_si8(1, 127)), false); - } - #[rewrite(main)] - #[test] - fn test_233() { - assert_eq!(call!(gt_si8(2, 2)), false); - assert_eq!(call!(gt_si8(2, 3)), false); - assert_eq!(call!(gt_si8(2, 4)), false); - assert_eq!(call!(gt_si8(2, 16)), false); - assert_eq!(call!(gt_si8(2, 126)), false); - assert_eq!(call!(gt_si8(2, 127)), false); - assert_eq!(call!(gt_si8(3, 3)), false); - assert_eq!(call!(gt_si8(3, 4)), false); - assert_eq!(call!(gt_si8(3, 16)), false); - assert_eq!(call!(gt_si8(3, 126)), false); - } - #[rewrite(main)] - #[test] - fn test_234() { - assert_eq!(call!(gt_si8(3, 127)), false); - assert_eq!(call!(gt_si8(4, 4)), false); - assert_eq!(call!(gt_si8(4, 16)), false); - assert_eq!(call!(gt_si8(4, 126)), false); - assert_eq!(call!(gt_si8(4, 127)), false); - assert_eq!(call!(gt_si8(16, 16)), false); - assert_eq!(call!(gt_si8(16, 126)), false); - assert_eq!(call!(gt_si8(16, 127)), false); - assert_eq!(call!(gt_si8(126, 126)), false); - assert_eq!(call!(gt_si8(126, 127)), false); - } - #[rewrite(main)] - #[test] - fn test_235() { - assert_eq!(call!(gt_si8(127, 127)), false); - assert_eq!(call!(gt_si8(-127, -128)), true); - assert_eq!(call!(gt_si8(0, -128)), true); - assert_eq!(call!(gt_si8(0, -127)), true); - assert_eq!(call!(gt_si8(1, -128)), true); - assert_eq!(call!(gt_si8(1, -127)), true); - assert_eq!(call!(gt_si8(1, 0)), true); - assert_eq!(call!(gt_si8(2, -128)), true); - assert_eq!(call!(gt_si8(2, -127)), true); - assert_eq!(call!(gt_si8(2, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_236() { - assert_eq!(call!(gt_si8(2, 1)), true); - assert_eq!(call!(gt_si8(3, -128)), true); - assert_eq!(call!(gt_si8(3, -127)), true); - assert_eq!(call!(gt_si8(3, 0)), true); - assert_eq!(call!(gt_si8(3, 1)), true); - assert_eq!(call!(gt_si8(3, 2)), true); - assert_eq!(call!(gt_si8(4, -128)), true); - assert_eq!(call!(gt_si8(4, -127)), true); - assert_eq!(call!(gt_si8(4, 0)), true); - assert_eq!(call!(gt_si8(4, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_237() { - assert_eq!(call!(gt_si8(4, 2)), true); - assert_eq!(call!(gt_si8(4, 3)), true); - assert_eq!(call!(gt_si8(16, -128)), true); - assert_eq!(call!(gt_si8(16, -127)), true); - assert_eq!(call!(gt_si8(16, 0)), true); - assert_eq!(call!(gt_si8(16, 1)), true); - assert_eq!(call!(gt_si8(16, 2)), true); - assert_eq!(call!(gt_si8(16, 3)), true); - assert_eq!(call!(gt_si8(16, 4)), true); - assert_eq!(call!(gt_si8(126, -128)), true); - } - #[rewrite(main)] - #[test] - fn test_238() { - assert_eq!(call!(gt_si8(126, -127)), true); - assert_eq!(call!(gt_si8(126, 0)), true); - assert_eq!(call!(gt_si8(126, 1)), true); - assert_eq!(call!(gt_si8(126, 2)), true); - assert_eq!(call!(gt_si8(126, 3)), true); - assert_eq!(call!(gt_si8(126, 4)), true); - assert_eq!(call!(gt_si8(126, 16)), true); - assert_eq!(call!(gt_si8(127, -128)), true); - assert_eq!(call!(gt_si8(127, -127)), true); - assert_eq!(call!(gt_si8(127, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_239() { - assert_eq!(call!(gt_si8(127, 1)), true); - assert_eq!(call!(gt_si8(127, 2)), true); - assert_eq!(call!(gt_si8(127, 3)), true); - assert_eq!(call!(gt_si8(127, 4)), true); - assert_eq!(call!(gt_si8(127, 16)), true); - assert_eq!(call!(gt_si8(127, 126)), true); - assert_eq!(call!(gt_ui16(0, 0)), false); - assert_eq!(call!(gt_ui16(0, 1)), false); - assert_eq!(call!(gt_ui16(0, 2)), false); - assert_eq!(call!(gt_ui16(0, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_240() { - assert_eq!(call!(gt_ui16(0, 4)), false); - assert_eq!(call!(gt_ui16(0, 1717)), false); - assert_eq!(call!(gt_ui16(0, 17988)), false); - assert_eq!(call!(gt_ui16(0, 65096)), false); - assert_eq!(call!(gt_ui16(0, 65534)), false); - assert_eq!(call!(gt_ui16(0, 65535)), false); - assert_eq!(call!(gt_ui16(1, 1)), false); - assert_eq!(call!(gt_ui16(1, 2)), false); - assert_eq!(call!(gt_ui16(1, 3)), false); - assert_eq!(call!(gt_ui16(1, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_241() { - assert_eq!(call!(gt_ui16(1, 1717)), false); - assert_eq!(call!(gt_ui16(1, 17988)), false); - assert_eq!(call!(gt_ui16(1, 65096)), false); - assert_eq!(call!(gt_ui16(1, 65534)), false); - assert_eq!(call!(gt_ui16(1, 65535)), false); - assert_eq!(call!(gt_ui16(2, 2)), false); - assert_eq!(call!(gt_ui16(2, 3)), false); - assert_eq!(call!(gt_ui16(2, 4)), false); - assert_eq!(call!(gt_ui16(2, 1717)), false); - assert_eq!(call!(gt_ui16(2, 17988)), false); - } - #[rewrite(main)] - #[test] - fn test_242() { - assert_eq!(call!(gt_ui16(2, 65096)), false); - assert_eq!(call!(gt_ui16(2, 65534)), false); - assert_eq!(call!(gt_ui16(2, 65535)), false); - assert_eq!(call!(gt_ui16(3, 3)), false); - assert_eq!(call!(gt_ui16(3, 4)), false); - assert_eq!(call!(gt_ui16(3, 1717)), false); - assert_eq!(call!(gt_ui16(3, 17988)), false); - assert_eq!(call!(gt_ui16(3, 65096)), false); - assert_eq!(call!(gt_ui16(3, 65534)), false); - assert_eq!(call!(gt_ui16(3, 65535)), false); - } - #[rewrite(main)] - #[test] - fn test_243() { - assert_eq!(call!(gt_ui16(4, 4)), false); - assert_eq!(call!(gt_ui16(4, 1717)), false); - assert_eq!(call!(gt_ui16(4, 17988)), false); - assert_eq!(call!(gt_ui16(4, 65096)), false); - assert_eq!(call!(gt_ui16(4, 65534)), false); - assert_eq!(call!(gt_ui16(4, 65535)), false); - assert_eq!(call!(gt_ui16(1717, 1717)), false); - assert_eq!(call!(gt_ui16(1717, 17988)), false); - assert_eq!(call!(gt_ui16(1717, 65096)), false); - assert_eq!(call!(gt_ui16(1717, 65534)), false); - } - #[rewrite(main)] - #[test] - fn test_244() { - assert_eq!(call!(gt_ui16(1717, 65535)), false); - assert_eq!(call!(gt_ui16(17988, 17988)), false); - assert_eq!(call!(gt_ui16(17988, 65096)), false); - assert_eq!(call!(gt_ui16(17988, 65534)), false); - assert_eq!(call!(gt_ui16(17988, 65535)), false); - assert_eq!(call!(gt_ui16(65096, 65096)), false); - assert_eq!(call!(gt_ui16(65096, 65534)), false); - assert_eq!(call!(gt_ui16(65096, 65535)), false); - assert_eq!(call!(gt_ui16(65534, 65534)), false); - assert_eq!(call!(gt_ui16(65534, 65535)), false); - } - #[rewrite(main)] - #[test] - fn test_245() { - assert_eq!(call!(gt_ui16(65535, 65535)), false); - assert_eq!(call!(gt_ui16(1, 0)), true); - assert_eq!(call!(gt_ui16(2, 0)), true); - assert_eq!(call!(gt_ui16(2, 1)), true); - assert_eq!(call!(gt_ui16(3, 0)), true); - assert_eq!(call!(gt_ui16(3, 1)), true); - assert_eq!(call!(gt_ui16(3, 2)), true); - assert_eq!(call!(gt_ui16(4, 0)), true); - assert_eq!(call!(gt_ui16(4, 1)), true); - assert_eq!(call!(gt_ui16(4, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_246() { - assert_eq!(call!(gt_ui16(4, 3)), true); - assert_eq!(call!(gt_ui16(1717, 0)), true); - assert_eq!(call!(gt_ui16(1717, 1)), true); - assert_eq!(call!(gt_ui16(1717, 2)), true); - assert_eq!(call!(gt_ui16(1717, 3)), true); - assert_eq!(call!(gt_ui16(1717, 4)), true); - assert_eq!(call!(gt_ui16(17988, 0)), true); - assert_eq!(call!(gt_ui16(17988, 1)), true); - assert_eq!(call!(gt_ui16(17988, 2)), true); - assert_eq!(call!(gt_ui16(17988, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_247() { - assert_eq!(call!(gt_ui16(17988, 4)), true); - assert_eq!(call!(gt_ui16(17988, 1717)), true); - assert_eq!(call!(gt_ui16(65096, 0)), true); - assert_eq!(call!(gt_ui16(65096, 1)), true); - assert_eq!(call!(gt_ui16(65096, 2)), true); - assert_eq!(call!(gt_ui16(65096, 3)), true); - assert_eq!(call!(gt_ui16(65096, 4)), true); - assert_eq!(call!(gt_ui16(65096, 1717)), true); - assert_eq!(call!(gt_ui16(65096, 17988)), true); - assert_eq!(call!(gt_ui16(65534, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_248() { - assert_eq!(call!(gt_ui16(65534, 1)), true); - assert_eq!(call!(gt_ui16(65534, 2)), true); - assert_eq!(call!(gt_ui16(65534, 3)), true); - assert_eq!(call!(gt_ui16(65534, 4)), true); - assert_eq!(call!(gt_ui16(65534, 1717)), true); - assert_eq!(call!(gt_ui16(65534, 17988)), true); - assert_eq!(call!(gt_ui16(65534, 65096)), true); - assert_eq!(call!(gt_ui16(65535, 0)), true); - assert_eq!(call!(gt_ui16(65535, 1)), true); - assert_eq!(call!(gt_ui16(65535, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_249() { - assert_eq!(call!(gt_ui16(65535, 3)), true); - assert_eq!(call!(gt_ui16(65535, 4)), true); - assert_eq!(call!(gt_ui16(65535, 1717)), true); - assert_eq!(call!(gt_ui16(65535, 17988)), true); - assert_eq!(call!(gt_ui16(65535, 65096)), true); - assert_eq!(call!(gt_ui16(65535, 65534)), true); - assert_eq!(call!(gt_ui32(0, 0)), false); - assert_eq!(call!(gt_ui32(0, 1)), false); - assert_eq!(call!(gt_ui32(0, 2)), false); - assert_eq!(call!(gt_ui32(0, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_250() { - assert_eq!(call!(gt_ui32(0, 4)), false); - assert_eq!(call!(gt_ui32(0, 2119154652)), false); - assert_eq!(call!(gt_ui32(0, 3002788344)), false); - assert_eq!(call!(gt_ui32(0, 3482297128)), false); - assert_eq!(call!(gt_ui32(0, 4294967294)), false); - assert_eq!(call!(gt_ui32(0, 4294967295)), false); - assert_eq!(call!(gt_ui32(1, 1)), false); - assert_eq!(call!(gt_ui32(1, 2)), false); - assert_eq!(call!(gt_ui32(1, 3)), false); - assert_eq!(call!(gt_ui32(1, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_251() { - assert_eq!(call!(gt_ui32(1, 2119154652)), false); - assert_eq!(call!(gt_ui32(1, 3002788344)), false); - assert_eq!(call!(gt_ui32(1, 3482297128)), false); - assert_eq!(call!(gt_ui32(1, 4294967294)), false); - assert_eq!(call!(gt_ui32(1, 4294967295)), false); - assert_eq!(call!(gt_ui32(2, 2)), false); - assert_eq!(call!(gt_ui32(2, 3)), false); - assert_eq!(call!(gt_ui32(2, 4)), false); - assert_eq!(call!(gt_ui32(2, 2119154652)), false); - assert_eq!(call!(gt_ui32(2, 3002788344)), false); - } - #[rewrite(main)] - #[test] - fn test_252() { - assert_eq!(call!(gt_ui32(2, 3482297128)), false); - assert_eq!(call!(gt_ui32(2, 4294967294)), false); - assert_eq!(call!(gt_ui32(2, 4294967295)), false); - assert_eq!(call!(gt_ui32(3, 3)), false); - assert_eq!(call!(gt_ui32(3, 4)), false); - assert_eq!(call!(gt_ui32(3, 2119154652)), false); - assert_eq!(call!(gt_ui32(3, 3002788344)), false); - assert_eq!(call!(gt_ui32(3, 3482297128)), false); - assert_eq!(call!(gt_ui32(3, 4294967294)), false); - assert_eq!(call!(gt_ui32(3, 4294967295)), false); - } - #[rewrite(main)] - #[test] - fn test_253() { - assert_eq!(call!(gt_ui32(4, 4)), false); - assert_eq!(call!(gt_ui32(4, 2119154652)), false); - assert_eq!(call!(gt_ui32(4, 3002788344)), false); - assert_eq!(call!(gt_ui32(4, 3482297128)), false); - assert_eq!(call!(gt_ui32(4, 4294967294)), false); - assert_eq!(call!(gt_ui32(4, 4294967295)), false); - assert_eq!(call!(gt_ui32(2119154652, 2119154652)), false); - assert_eq!(call!(gt_ui32(2119154652, 3002788344)), false); - assert_eq!(call!(gt_ui32(2119154652, 3482297128)), false); - assert_eq!(call!(gt_ui32(2119154652, 4294967294)), false); - } - #[rewrite(main)] - #[test] - fn test_254() { - assert_eq!(call!(gt_ui32(2119154652, 4294967295)), false); - assert_eq!(call!(gt_ui32(3002788344, 3002788344)), false); - assert_eq!(call!(gt_ui32(3002788344, 3482297128)), false); - assert_eq!(call!(gt_ui32(3002788344, 4294967294)), false); - assert_eq!(call!(gt_ui32(3002788344, 4294967295)), false); - assert_eq!(call!(gt_ui32(3482297128, 3482297128)), false); - assert_eq!(call!(gt_ui32(3482297128, 4294967294)), false); - assert_eq!(call!(gt_ui32(3482297128, 4294967295)), false); - assert_eq!(call!(gt_ui32(4294967294, 4294967294)), false); - assert_eq!(call!(gt_ui32(4294967294, 4294967295)), false); - } - #[rewrite(main)] - #[test] - fn test_255() { - assert_eq!(call!(gt_ui32(4294967295, 4294967295)), false); - assert_eq!(call!(gt_ui32(1, 0)), true); - assert_eq!(call!(gt_ui32(2, 0)), true); - assert_eq!(call!(gt_ui32(2, 1)), true); - assert_eq!(call!(gt_ui32(3, 0)), true); - assert_eq!(call!(gt_ui32(3, 1)), true); - assert_eq!(call!(gt_ui32(3, 2)), true); - assert_eq!(call!(gt_ui32(4, 0)), true); - assert_eq!(call!(gt_ui32(4, 1)), true); - assert_eq!(call!(gt_ui32(4, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_256() { - assert_eq!(call!(gt_ui32(4, 3)), true); - assert_eq!(call!(gt_ui32(2119154652, 0)), true); - assert_eq!(call!(gt_ui32(2119154652, 1)), true); - assert_eq!(call!(gt_ui32(2119154652, 2)), true); - assert_eq!(call!(gt_ui32(2119154652, 3)), true); - assert_eq!(call!(gt_ui32(2119154652, 4)), true); - assert_eq!(call!(gt_ui32(3002788344, 0)), true); - assert_eq!(call!(gt_ui32(3002788344, 1)), true); - assert_eq!(call!(gt_ui32(3002788344, 2)), true); - assert_eq!(call!(gt_ui32(3002788344, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_257() { - assert_eq!(call!(gt_ui32(3002788344, 4)), true); - assert_eq!(call!(gt_ui32(3002788344, 2119154652)), true); - assert_eq!(call!(gt_ui32(3482297128, 0)), true); - assert_eq!(call!(gt_ui32(3482297128, 1)), true); - assert_eq!(call!(gt_ui32(3482297128, 2)), true); - assert_eq!(call!(gt_ui32(3482297128, 3)), true); - assert_eq!(call!(gt_ui32(3482297128, 4)), true); - assert_eq!(call!(gt_ui32(3482297128, 2119154652)), true); - assert_eq!(call!(gt_ui32(3482297128, 3002788344)), true); - assert_eq!(call!(gt_ui32(4294967294, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_258() { - assert_eq!(call!(gt_ui32(4294967294, 1)), true); - assert_eq!(call!(gt_ui32(4294967294, 2)), true); - assert_eq!(call!(gt_ui32(4294967294, 3)), true); - assert_eq!(call!(gt_ui32(4294967294, 4)), true); - assert_eq!(call!(gt_ui32(4294967294, 2119154652)), true); - assert_eq!(call!(gt_ui32(4294967294, 3002788344)), true); - assert_eq!(call!(gt_ui32(4294967294, 3482297128)), true); - assert_eq!(call!(gt_ui32(4294967295, 0)), true); - assert_eq!(call!(gt_ui32(4294967295, 1)), true); - assert_eq!(call!(gt_ui32(4294967295, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_259() { - assert_eq!(call!(gt_ui32(4294967295, 3)), true); - assert_eq!(call!(gt_ui32(4294967295, 4)), true); - assert_eq!(call!(gt_ui32(4294967295, 2119154652)), true); - assert_eq!(call!(gt_ui32(4294967295, 3002788344)), true); - assert_eq!(call!(gt_ui32(4294967295, 3482297128)), true); - assert_eq!(call!(gt_ui32(4294967295, 4294967294)), true); - assert_eq!(call!(gt_ui64(0, 0)), false); - assert_eq!(call!(gt_ui64(0, 1)), false); - assert_eq!(call!(gt_ui64(0, 2)), false); - assert_eq!(call!(gt_ui64(0, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_260() { - assert_eq!(call!(gt_ui64(0, 4)), false); - assert_eq!(call!(gt_ui64(0, 191084152064409600)), false); - assert_eq!(call!(gt_ui64(0, 11015955194427482112)), false); - assert_eq!(call!(gt_ui64(0, 16990600415051759616)), false); - assert_eq!(call!(gt_ui64(0, 18446744073709551614)), false); - assert_eq!(call!(gt_ui64(0, 18446744073709551615)), false); - assert_eq!(call!(gt_ui64(1, 1)), false); - assert_eq!(call!(gt_ui64(1, 2)), false); - assert_eq!(call!(gt_ui64(1, 3)), false); - assert_eq!(call!(gt_ui64(1, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_261() { - assert_eq!(call!(gt_ui64(1, 191084152064409600)), false); - assert_eq!(call!(gt_ui64(1, 11015955194427482112)), false); - assert_eq!(call!(gt_ui64(1, 16990600415051759616)), false); - assert_eq!(call!(gt_ui64(1, 18446744073709551614)), false); - assert_eq!(call!(gt_ui64(1, 18446744073709551615)), false); - assert_eq!(call!(gt_ui64(2, 2)), false); - assert_eq!(call!(gt_ui64(2, 3)), false); - assert_eq!(call!(gt_ui64(2, 4)), false); - assert_eq!(call!(gt_ui64(2, 191084152064409600)), false); - assert_eq!(call!(gt_ui64(2, 11015955194427482112)), false); - } - #[rewrite(main)] - #[test] - fn test_262() { - assert_eq!(call!(gt_ui64(2, 16990600415051759616)), false); - assert_eq!(call!(gt_ui64(2, 18446744073709551614)), false); - assert_eq!(call!(gt_ui64(2, 18446744073709551615)), false); - assert_eq!(call!(gt_ui64(3, 3)), false); - assert_eq!(call!(gt_ui64(3, 4)), false); - assert_eq!(call!(gt_ui64(3, 191084152064409600)), false); - assert_eq!(call!(gt_ui64(3, 11015955194427482112)), false); - assert_eq!(call!(gt_ui64(3, 16990600415051759616)), false); - assert_eq!(call!(gt_ui64(3, 18446744073709551614)), false); - assert_eq!(call!(gt_ui64(3, 18446744073709551615)), false); - } - #[rewrite(main)] - #[test] - fn test_263() { - assert_eq!(call!(gt_ui64(4, 4)), false); - assert_eq!(call!(gt_ui64(4, 191084152064409600)), false); - assert_eq!(call!(gt_ui64(4, 11015955194427482112)), false); - assert_eq!(call!(gt_ui64(4, 16990600415051759616)), false); - assert_eq!(call!(gt_ui64(4, 18446744073709551614)), false); - assert_eq!(call!(gt_ui64(4, 18446744073709551615)), false); - assert_eq!(call!(gt_ui64(191084152064409600, 191084152064409600)), false); - assert_eq!(call!(gt_ui64(191084152064409600, 11015955194427482112)), false); - assert_eq!(call!(gt_ui64(191084152064409600, 16990600415051759616)), false); - assert_eq!(call!(gt_ui64(191084152064409600, 18446744073709551614)), false); - } - #[rewrite(main)] - #[test] - fn test_264() { - assert_eq!(call!(gt_ui64(191084152064409600, 18446744073709551615)), false); - assert_eq!(call!(gt_ui64(11015955194427482112, 11015955194427482112)), false); - assert_eq!(call!(gt_ui64(11015955194427482112, 16990600415051759616)), false); - assert_eq!(call!(gt_ui64(11015955194427482112, 18446744073709551614)), false); - assert_eq!(call!(gt_ui64(11015955194427482112, 18446744073709551615)), false); - assert_eq!(call!(gt_ui64(16990600415051759616, 16990600415051759616)), false); - assert_eq!(call!(gt_ui64(16990600415051759616, 18446744073709551614)), false); - assert_eq!(call!(gt_ui64(16990600415051759616, 18446744073709551615)), false); - assert_eq!(call!(gt_ui64(18446744073709551614, 18446744073709551614)), false); - assert_eq!(call!(gt_ui64(18446744073709551614, 18446744073709551615)), false); - } - #[rewrite(main)] - #[test] - fn test_265() { - assert_eq!(call!(gt_ui64(18446744073709551615, 18446744073709551615)), false); - assert_eq!(call!(gt_ui64(1, 0)), true); - assert_eq!(call!(gt_ui64(2, 0)), true); - assert_eq!(call!(gt_ui64(2, 1)), true); - assert_eq!(call!(gt_ui64(3, 0)), true); - assert_eq!(call!(gt_ui64(3, 1)), true); - assert_eq!(call!(gt_ui64(3, 2)), true); - assert_eq!(call!(gt_ui64(4, 0)), true); - assert_eq!(call!(gt_ui64(4, 1)), true); - assert_eq!(call!(gt_ui64(4, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_266() { - assert_eq!(call!(gt_ui64(4, 3)), true); - assert_eq!(call!(gt_ui64(191084152064409600, 0)), true); - assert_eq!(call!(gt_ui64(191084152064409600, 1)), true); - assert_eq!(call!(gt_ui64(191084152064409600, 2)), true); - assert_eq!(call!(gt_ui64(191084152064409600, 3)), true); - assert_eq!(call!(gt_ui64(191084152064409600, 4)), true); - assert_eq!(call!(gt_ui64(11015955194427482112, 0)), true); - assert_eq!(call!(gt_ui64(11015955194427482112, 1)), true); - assert_eq!(call!(gt_ui64(11015955194427482112, 2)), true); - assert_eq!(call!(gt_ui64(11015955194427482112, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_267() { - assert_eq!(call!(gt_ui64(11015955194427482112, 4)), true); - assert_eq!(call!(gt_ui64(11015955194427482112, 191084152064409600)), true); - assert_eq!(call!(gt_ui64(16990600415051759616, 0)), true); - assert_eq!(call!(gt_ui64(16990600415051759616, 1)), true); - assert_eq!(call!(gt_ui64(16990600415051759616, 2)), true); - assert_eq!(call!(gt_ui64(16990600415051759616, 3)), true); - assert_eq!(call!(gt_ui64(16990600415051759616, 4)), true); - assert_eq!(call!(gt_ui64(16990600415051759616, 191084152064409600)), true); - assert_eq!(call!(gt_ui64(16990600415051759616, 11015955194427482112)), true); - assert_eq!(call!(gt_ui64(18446744073709551614, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_268() { - assert_eq!(call!(gt_ui64(18446744073709551614, 1)), true); - assert_eq!(call!(gt_ui64(18446744073709551614, 2)), true); - assert_eq!(call!(gt_ui64(18446744073709551614, 3)), true); - assert_eq!(call!(gt_ui64(18446744073709551614, 4)), true); - assert_eq!(call!(gt_ui64(18446744073709551614, 191084152064409600)), true); - assert_eq!(call!(gt_ui64(18446744073709551614, 11015955194427482112)), true); - assert_eq!(call!(gt_ui64(18446744073709551614, 16990600415051759616)), true); - assert_eq!(call!(gt_ui64(18446744073709551615, 0)), true); - assert_eq!(call!(gt_ui64(18446744073709551615, 1)), true); - assert_eq!(call!(gt_ui64(18446744073709551615, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_269() { - assert_eq!(call!(gt_ui64(18446744073709551615, 3)), true); - assert_eq!(call!(gt_ui64(18446744073709551615, 4)), true); - assert_eq!(call!(gt_ui64(18446744073709551615, 191084152064409600)), true); - assert_eq!(call!(gt_ui64(18446744073709551615, 11015955194427482112)), true); - assert_eq!(call!(gt_ui64(18446744073709551615, 16990600415051759616)), true); - assert_eq!(call!(gt_ui64(18446744073709551615, 18446744073709551614)), true); - assert_eq!(call!(gt_ui8(0, 0)), false); - assert_eq!(call!(gt_ui8(0, 1)), false); - assert_eq!(call!(gt_ui8(0, 2)), false); - assert_eq!(call!(gt_ui8(0, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_270() { - assert_eq!(call!(gt_ui8(0, 4)), false); - assert_eq!(call!(gt_ui8(0, 72)), false); - assert_eq!(call!(gt_ui8(0, 100)), false); - assert_eq!(call!(gt_ui8(0, 162)), false); - assert_eq!(call!(gt_ui8(0, 254)), false); - assert_eq!(call!(gt_ui8(0, 255)), false); - assert_eq!(call!(gt_ui8(1, 1)), false); - assert_eq!(call!(gt_ui8(1, 2)), false); - assert_eq!(call!(gt_ui8(1, 3)), false); - assert_eq!(call!(gt_ui8(1, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_271() { - assert_eq!(call!(gt_ui8(1, 72)), false); - assert_eq!(call!(gt_ui8(1, 100)), false); - assert_eq!(call!(gt_ui8(1, 162)), false); - assert_eq!(call!(gt_ui8(1, 254)), false); - assert_eq!(call!(gt_ui8(1, 255)), false); - assert_eq!(call!(gt_ui8(2, 2)), false); - assert_eq!(call!(gt_ui8(2, 3)), false); - assert_eq!(call!(gt_ui8(2, 4)), false); - assert_eq!(call!(gt_ui8(2, 72)), false); - assert_eq!(call!(gt_ui8(2, 100)), false); - } - #[rewrite(main)] - #[test] - fn test_272() { - assert_eq!(call!(gt_ui8(2, 162)), false); - assert_eq!(call!(gt_ui8(2, 254)), false); - assert_eq!(call!(gt_ui8(2, 255)), false); - assert_eq!(call!(gt_ui8(3, 3)), false); - assert_eq!(call!(gt_ui8(3, 4)), false); - assert_eq!(call!(gt_ui8(3, 72)), false); - assert_eq!(call!(gt_ui8(3, 100)), false); - assert_eq!(call!(gt_ui8(3, 162)), false); - assert_eq!(call!(gt_ui8(3, 254)), false); - assert_eq!(call!(gt_ui8(3, 255)), false); - } - #[rewrite(main)] - #[test] - fn test_273() { - assert_eq!(call!(gt_ui8(4, 4)), false); - assert_eq!(call!(gt_ui8(4, 72)), false); - assert_eq!(call!(gt_ui8(4, 100)), false); - assert_eq!(call!(gt_ui8(4, 162)), false); - assert_eq!(call!(gt_ui8(4, 254)), false); - assert_eq!(call!(gt_ui8(4, 255)), false); - assert_eq!(call!(gt_ui8(72, 72)), false); - assert_eq!(call!(gt_ui8(72, 100)), false); - assert_eq!(call!(gt_ui8(72, 162)), false); - assert_eq!(call!(gt_ui8(72, 254)), false); - } - #[rewrite(main)] - #[test] - fn test_274() { - assert_eq!(call!(gt_ui8(72, 255)), false); - assert_eq!(call!(gt_ui8(100, 100)), false); - assert_eq!(call!(gt_ui8(100, 162)), false); - assert_eq!(call!(gt_ui8(100, 254)), false); - assert_eq!(call!(gt_ui8(100, 255)), false); - assert_eq!(call!(gt_ui8(162, 162)), false); - assert_eq!(call!(gt_ui8(162, 254)), false); - assert_eq!(call!(gt_ui8(162, 255)), false); - assert_eq!(call!(gt_ui8(254, 254)), false); - assert_eq!(call!(gt_ui8(254, 255)), false); - } - #[rewrite(main)] - #[test] - fn test_275() { - assert_eq!(call!(gt_ui8(255, 255)), false); - assert_eq!(call!(gt_ui8(1, 0)), true); - assert_eq!(call!(gt_ui8(2, 0)), true); - assert_eq!(call!(gt_ui8(2, 1)), true); - assert_eq!(call!(gt_ui8(3, 0)), true); - assert_eq!(call!(gt_ui8(3, 1)), true); - assert_eq!(call!(gt_ui8(3, 2)), true); - assert_eq!(call!(gt_ui8(4, 0)), true); - assert_eq!(call!(gt_ui8(4, 1)), true); - assert_eq!(call!(gt_ui8(4, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_276() { - assert_eq!(call!(gt_ui8(4, 3)), true); - assert_eq!(call!(gt_ui8(72, 0)), true); - assert_eq!(call!(gt_ui8(72, 1)), true); - assert_eq!(call!(gt_ui8(72, 2)), true); - assert_eq!(call!(gt_ui8(72, 3)), true); - assert_eq!(call!(gt_ui8(72, 4)), true); - assert_eq!(call!(gt_ui8(100, 0)), true); - assert_eq!(call!(gt_ui8(100, 1)), true); - assert_eq!(call!(gt_ui8(100, 2)), true); - assert_eq!(call!(gt_ui8(100, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_277() { - assert_eq!(call!(gt_ui8(100, 4)), true); - assert_eq!(call!(gt_ui8(100, 72)), true); - assert_eq!(call!(gt_ui8(162, 0)), true); - assert_eq!(call!(gt_ui8(162, 1)), true); - assert_eq!(call!(gt_ui8(162, 2)), true); - assert_eq!(call!(gt_ui8(162, 3)), true); - assert_eq!(call!(gt_ui8(162, 4)), true); - assert_eq!(call!(gt_ui8(162, 72)), true); - assert_eq!(call!(gt_ui8(162, 100)), true); - assert_eq!(call!(gt_ui8(254, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_278() { - assert_eq!(call!(gt_ui8(254, 1)), true); - assert_eq!(call!(gt_ui8(254, 2)), true); - assert_eq!(call!(gt_ui8(254, 3)), true); - assert_eq!(call!(gt_ui8(254, 4)), true); - assert_eq!(call!(gt_ui8(254, 72)), true); - assert_eq!(call!(gt_ui8(254, 100)), true); - assert_eq!(call!(gt_ui8(254, 162)), true); - assert_eq!(call!(gt_ui8(255, 0)), true); - assert_eq!(call!(gt_ui8(255, 1)), true); - assert_eq!(call!(gt_ui8(255, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_279() { - assert_eq!(call!(gt_ui8(255, 3)), true); - assert_eq!(call!(gt_ui8(255, 4)), true); - assert_eq!(call!(gt_ui8(255, 72)), true); - assert_eq!(call!(gt_ui8(255, 100)), true); - assert_eq!(call!(gt_ui8(255, 162)), true); - assert_eq!(call!(gt_ui8(255, 254)), true); - assert_eq!(call!(le_si16(-32767, -32768)), false); - assert_eq!(call!(le_si16(-32547, -32768)), false); - assert_eq!(call!(le_si16(-32547, -32767)), false); - assert_eq!(call!(le_si16(0, -32768)), false); - } - #[rewrite(main)] - #[test] - fn test_280() { - assert_eq!(call!(le_si16(0, -32767)), false); - assert_eq!(call!(le_si16(0, -32547)), false); - assert_eq!(call!(le_si16(1, -32768)), false); - assert_eq!(call!(le_si16(1, -32767)), false); - assert_eq!(call!(le_si16(1, -32547)), false); - assert_eq!(call!(le_si16(1, 0)), false); - assert_eq!(call!(le_si16(2, -32768)), false); - assert_eq!(call!(le_si16(2, -32767)), false); - assert_eq!(call!(le_si16(2, -32547)), false); - assert_eq!(call!(le_si16(2, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_281() { - assert_eq!(call!(le_si16(2, 1)), false); - assert_eq!(call!(le_si16(3, -32768)), false); - assert_eq!(call!(le_si16(3, -32767)), false); - assert_eq!(call!(le_si16(3, -32547)), false); - assert_eq!(call!(le_si16(3, 0)), false); - assert_eq!(call!(le_si16(3, 1)), false); - assert_eq!(call!(le_si16(3, 2)), false); - assert_eq!(call!(le_si16(4, -32768)), false); - assert_eq!(call!(le_si16(4, -32767)), false); - assert_eq!(call!(le_si16(4, -32547)), false); - } - #[rewrite(main)] - #[test] - fn test_282() { - assert_eq!(call!(le_si16(4, 0)), false); - assert_eq!(call!(le_si16(4, 1)), false); - assert_eq!(call!(le_si16(4, 2)), false); - assert_eq!(call!(le_si16(4, 3)), false); - assert_eq!(call!(le_si16(10486, -32768)), false); - assert_eq!(call!(le_si16(10486, -32767)), false); - assert_eq!(call!(le_si16(10486, -32547)), false); - assert_eq!(call!(le_si16(10486, 0)), false); - assert_eq!(call!(le_si16(10486, 1)), false); - assert_eq!(call!(le_si16(10486, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_283() { - assert_eq!(call!(le_si16(10486, 3)), false); - assert_eq!(call!(le_si16(10486, 4)), false); - assert_eq!(call!(le_si16(16514, -32768)), false); - assert_eq!(call!(le_si16(16514, -32767)), false); - assert_eq!(call!(le_si16(16514, -32547)), false); - assert_eq!(call!(le_si16(16514, 0)), false); - assert_eq!(call!(le_si16(16514, 1)), false); - assert_eq!(call!(le_si16(16514, 2)), false); - assert_eq!(call!(le_si16(16514, 3)), false); - assert_eq!(call!(le_si16(16514, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_284() { - assert_eq!(call!(le_si16(16514, 10486)), false); - assert_eq!(call!(le_si16(32766, -32768)), false); - assert_eq!(call!(le_si16(32766, -32767)), false); - assert_eq!(call!(le_si16(32766, -32547)), false); - assert_eq!(call!(le_si16(32766, 0)), false); - assert_eq!(call!(le_si16(32766, 1)), false); - assert_eq!(call!(le_si16(32766, 2)), false); - assert_eq!(call!(le_si16(32766, 3)), false); - assert_eq!(call!(le_si16(32766, 4)), false); - assert_eq!(call!(le_si16(32766, 10486)), false); - } - #[rewrite(main)] - #[test] - fn test_285() { - assert_eq!(call!(le_si16(32766, 16514)), false); - assert_eq!(call!(le_si16(32767, -32768)), false); - assert_eq!(call!(le_si16(32767, -32767)), false); - assert_eq!(call!(le_si16(32767, -32547)), false); - assert_eq!(call!(le_si16(32767, 0)), false); - assert_eq!(call!(le_si16(32767, 1)), false); - assert_eq!(call!(le_si16(32767, 2)), false); - assert_eq!(call!(le_si16(32767, 3)), false); - assert_eq!(call!(le_si16(32767, 4)), false); - assert_eq!(call!(le_si16(32767, 10486)), false); - } - #[rewrite(main)] - #[test] - fn test_286() { - assert_eq!(call!(le_si16(32767, 16514)), false); - assert_eq!(call!(le_si16(32767, 32766)), false); - assert_eq!(call!(le_si16(-32768, -32768)), true); - assert_eq!(call!(le_si16(-32768, -32767)), true); - assert_eq!(call!(le_si16(-32768, -32547)), true); - assert_eq!(call!(le_si16(-32768, 0)), true); - assert_eq!(call!(le_si16(-32768, 1)), true); - assert_eq!(call!(le_si16(-32768, 2)), true); - assert_eq!(call!(le_si16(-32768, 3)), true); - assert_eq!(call!(le_si16(-32768, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_287() { - assert_eq!(call!(le_si16(-32768, 10486)), true); - assert_eq!(call!(le_si16(-32768, 16514)), true); - assert_eq!(call!(le_si16(-32768, 32766)), true); - assert_eq!(call!(le_si16(-32768, 32767)), true); - assert_eq!(call!(le_si16(-32767, -32767)), true); - assert_eq!(call!(le_si16(-32767, -32547)), true); - assert_eq!(call!(le_si16(-32767, 0)), true); - assert_eq!(call!(le_si16(-32767, 1)), true); - assert_eq!(call!(le_si16(-32767, 2)), true); - assert_eq!(call!(le_si16(-32767, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_288() { - assert_eq!(call!(le_si16(-32767, 4)), true); - assert_eq!(call!(le_si16(-32767, 10486)), true); - assert_eq!(call!(le_si16(-32767, 16514)), true); - assert_eq!(call!(le_si16(-32767, 32766)), true); - assert_eq!(call!(le_si16(-32767, 32767)), true); - assert_eq!(call!(le_si16(-32547, -32547)), true); - assert_eq!(call!(le_si16(-32547, 0)), true); - assert_eq!(call!(le_si16(-32547, 1)), true); - assert_eq!(call!(le_si16(-32547, 2)), true); - assert_eq!(call!(le_si16(-32547, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_289() { - assert_eq!(call!(le_si16(-32547, 4)), true); - assert_eq!(call!(le_si16(-32547, 10486)), true); - assert_eq!(call!(le_si16(-32547, 16514)), true); - assert_eq!(call!(le_si16(-32547, 32766)), true); - assert_eq!(call!(le_si16(-32547, 32767)), true); - assert_eq!(call!(le_si16(0, 0)), true); - assert_eq!(call!(le_si16(0, 1)), true); - assert_eq!(call!(le_si16(0, 2)), true); - assert_eq!(call!(le_si16(0, 3)), true); - assert_eq!(call!(le_si16(0, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_290() { - assert_eq!(call!(le_si16(0, 10486)), true); - assert_eq!(call!(le_si16(0, 16514)), true); - assert_eq!(call!(le_si16(0, 32766)), true); - assert_eq!(call!(le_si16(0, 32767)), true); - assert_eq!(call!(le_si16(1, 1)), true); - assert_eq!(call!(le_si16(1, 2)), true); - assert_eq!(call!(le_si16(1, 3)), true); - assert_eq!(call!(le_si16(1, 4)), true); - assert_eq!(call!(le_si16(1, 10486)), true); - assert_eq!(call!(le_si16(1, 16514)), true); - } - #[rewrite(main)] - #[test] - fn test_291() { - assert_eq!(call!(le_si16(1, 32766)), true); - assert_eq!(call!(le_si16(1, 32767)), true); - assert_eq!(call!(le_si16(2, 2)), true); - assert_eq!(call!(le_si16(2, 3)), true); - assert_eq!(call!(le_si16(2, 4)), true); - assert_eq!(call!(le_si16(2, 10486)), true); - assert_eq!(call!(le_si16(2, 16514)), true); - assert_eq!(call!(le_si16(2, 32766)), true); - assert_eq!(call!(le_si16(2, 32767)), true); - assert_eq!(call!(le_si16(3, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_292() { - assert_eq!(call!(le_si16(3, 4)), true); - assert_eq!(call!(le_si16(3, 10486)), true); - assert_eq!(call!(le_si16(3, 16514)), true); - assert_eq!(call!(le_si16(3, 32766)), true); - assert_eq!(call!(le_si16(3, 32767)), true); - assert_eq!(call!(le_si16(4, 4)), true); - assert_eq!(call!(le_si16(4, 10486)), true); - assert_eq!(call!(le_si16(4, 16514)), true); - assert_eq!(call!(le_si16(4, 32766)), true); - assert_eq!(call!(le_si16(4, 32767)), true); - } - #[rewrite(main)] - #[test] - fn test_293() { - assert_eq!(call!(le_si16(10486, 10486)), true); - assert_eq!(call!(le_si16(10486, 16514)), true); - assert_eq!(call!(le_si16(10486, 32766)), true); - assert_eq!(call!(le_si16(10486, 32767)), true); - assert_eq!(call!(le_si16(16514, 16514)), true); - assert_eq!(call!(le_si16(16514, 32766)), true); - assert_eq!(call!(le_si16(16514, 32767)), true); - assert_eq!(call!(le_si16(32766, 32766)), true); - assert_eq!(call!(le_si16(32766, 32767)), true); - assert_eq!(call!(le_si16(32767, 32767)), true); - } - #[rewrite(main)] - #[test] - fn test_294() { - assert_eq!(call!(le_si32(-2147483647, -2147483648)), false); - assert_eq!(call!(le_si32(-1713183800, -2147483648)), false); - assert_eq!(call!(le_si32(-1713183800, -2147483647)), false); - assert_eq!(call!(le_si32(-1252582164, -2147483648)), false); - assert_eq!(call!(le_si32(-1252582164, -2147483647)), false); - assert_eq!(call!(le_si32(-1252582164, -1713183800)), false); - assert_eq!(call!(le_si32(-1035405763, -2147483648)), false); - assert_eq!(call!(le_si32(-1035405763, -2147483647)), false); - assert_eq!(call!(le_si32(-1035405763, -1713183800)), false); - assert_eq!(call!(le_si32(-1035405763, -1252582164)), false); - } - #[rewrite(main)] - #[test] - fn test_295() { - assert_eq!(call!(le_si32(0, -2147483648)), false); - assert_eq!(call!(le_si32(0, -2147483647)), false); - assert_eq!(call!(le_si32(0, -1713183800)), false); - assert_eq!(call!(le_si32(0, -1252582164)), false); - assert_eq!(call!(le_si32(0, -1035405763)), false); - assert_eq!(call!(le_si32(1, -2147483648)), false); - assert_eq!(call!(le_si32(1, -2147483647)), false); - assert_eq!(call!(le_si32(1, -1713183800)), false); - assert_eq!(call!(le_si32(1, -1252582164)), false); - assert_eq!(call!(le_si32(1, -1035405763)), false); - } - #[rewrite(main)] - #[test] - fn test_296() { - assert_eq!(call!(le_si32(1, 0)), false); - assert_eq!(call!(le_si32(2, -2147483648)), false); - assert_eq!(call!(le_si32(2, -2147483647)), false); - assert_eq!(call!(le_si32(2, -1713183800)), false); - assert_eq!(call!(le_si32(2, -1252582164)), false); - assert_eq!(call!(le_si32(2, -1035405763)), false); - assert_eq!(call!(le_si32(2, 0)), false); - assert_eq!(call!(le_si32(2, 1)), false); - assert_eq!(call!(le_si32(3, -2147483648)), false); - assert_eq!(call!(le_si32(3, -2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_297() { - assert_eq!(call!(le_si32(3, -1713183800)), false); - assert_eq!(call!(le_si32(3, -1252582164)), false); - assert_eq!(call!(le_si32(3, -1035405763)), false); - assert_eq!(call!(le_si32(3, 0)), false); - assert_eq!(call!(le_si32(3, 1)), false); - assert_eq!(call!(le_si32(3, 2)), false); - assert_eq!(call!(le_si32(4, -2147483648)), false); - assert_eq!(call!(le_si32(4, -2147483647)), false); - assert_eq!(call!(le_si32(4, -1713183800)), false); - assert_eq!(call!(le_si32(4, -1252582164)), false); - } - #[rewrite(main)] - #[test] - fn test_298() { - assert_eq!(call!(le_si32(4, -1035405763)), false); - assert_eq!(call!(le_si32(4, 0)), false); - assert_eq!(call!(le_si32(4, 1)), false); - assert_eq!(call!(le_si32(4, 2)), false); - assert_eq!(call!(le_si32(4, 3)), false); - assert_eq!(call!(le_si32(2147483646, -2147483648)), false); - assert_eq!(call!(le_si32(2147483646, -2147483647)), false); - assert_eq!(call!(le_si32(2147483646, -1713183800)), false); - assert_eq!(call!(le_si32(2147483646, -1252582164)), false); - assert_eq!(call!(le_si32(2147483646, -1035405763)), false); - } - #[rewrite(main)] - #[test] - fn test_299() { - assert_eq!(call!(le_si32(2147483646, 0)), false); - assert_eq!(call!(le_si32(2147483646, 1)), false); - assert_eq!(call!(le_si32(2147483646, 2)), false); - assert_eq!(call!(le_si32(2147483646, 3)), false); - assert_eq!(call!(le_si32(2147483646, 4)), false); - assert_eq!(call!(le_si32(2147483647, -2147483648)), false); - assert_eq!(call!(le_si32(2147483647, -2147483647)), false); - assert_eq!(call!(le_si32(2147483647, -1713183800)), false); - assert_eq!(call!(le_si32(2147483647, -1252582164)), false); - assert_eq!(call!(le_si32(2147483647, -1035405763)), false); - } - #[rewrite(main)] - #[test] - fn test_300() { - assert_eq!(call!(le_si32(2147483647, 0)), false); - assert_eq!(call!(le_si32(2147483647, 1)), false); - assert_eq!(call!(le_si32(2147483647, 2)), false); - assert_eq!(call!(le_si32(2147483647, 3)), false); - assert_eq!(call!(le_si32(2147483647, 4)), false); - assert_eq!(call!(le_si32(2147483647, 2147483646)), false); - assert_eq!(call!(le_si32(-2147483648, -2147483648)), true); - assert_eq!(call!(le_si32(-2147483648, -2147483647)), true); - assert_eq!(call!(le_si32(-2147483648, -1713183800)), true); - assert_eq!(call!(le_si32(-2147483648, -1252582164)), true); - } - #[rewrite(main)] - #[test] - fn test_301() { - assert_eq!(call!(le_si32(-2147483648, -1035405763)), true); - assert_eq!(call!(le_si32(-2147483648, 0)), true); - assert_eq!(call!(le_si32(-2147483648, 1)), true); - assert_eq!(call!(le_si32(-2147483648, 2)), true); - assert_eq!(call!(le_si32(-2147483648, 3)), true); - assert_eq!(call!(le_si32(-2147483648, 4)), true); - assert_eq!(call!(le_si32(-2147483648, 2147483646)), true); - assert_eq!(call!(le_si32(-2147483648, 2147483647)), true); - assert_eq!(call!(le_si32(-2147483647, -2147483647)), true); - assert_eq!(call!(le_si32(-2147483647, -1713183800)), true); - } - #[rewrite(main)] - #[test] - fn test_302() { - assert_eq!(call!(le_si32(-2147483647, -1252582164)), true); - assert_eq!(call!(le_si32(-2147483647, -1035405763)), true); - assert_eq!(call!(le_si32(-2147483647, 0)), true); - assert_eq!(call!(le_si32(-2147483647, 1)), true); - assert_eq!(call!(le_si32(-2147483647, 2)), true); - assert_eq!(call!(le_si32(-2147483647, 3)), true); - assert_eq!(call!(le_si32(-2147483647, 4)), true); - assert_eq!(call!(le_si32(-2147483647, 2147483646)), true); - assert_eq!(call!(le_si32(-2147483647, 2147483647)), true); - assert_eq!(call!(le_si32(-1713183800, -1713183800)), true); - } - #[rewrite(main)] - #[test] - fn test_303() { - assert_eq!(call!(le_si32(-1713183800, -1252582164)), true); - assert_eq!(call!(le_si32(-1713183800, -1035405763)), true); - assert_eq!(call!(le_si32(-1713183800, 0)), true); - assert_eq!(call!(le_si32(-1713183800, 1)), true); - assert_eq!(call!(le_si32(-1713183800, 2)), true); - assert_eq!(call!(le_si32(-1713183800, 3)), true); - assert_eq!(call!(le_si32(-1713183800, 4)), true); - assert_eq!(call!(le_si32(-1713183800, 2147483646)), true); - assert_eq!(call!(le_si32(-1713183800, 2147483647)), true); - assert_eq!(call!(le_si32(-1252582164, -1252582164)), true); - } - #[rewrite(main)] - #[test] - fn test_304() { - assert_eq!(call!(le_si32(-1252582164, -1035405763)), true); - assert_eq!(call!(le_si32(-1252582164, 0)), true); - assert_eq!(call!(le_si32(-1252582164, 1)), true); - assert_eq!(call!(le_si32(-1252582164, 2)), true); - assert_eq!(call!(le_si32(-1252582164, 3)), true); - assert_eq!(call!(le_si32(-1252582164, 4)), true); - assert_eq!(call!(le_si32(-1252582164, 2147483646)), true); - assert_eq!(call!(le_si32(-1252582164, 2147483647)), true); - assert_eq!(call!(le_si32(-1035405763, -1035405763)), true); - assert_eq!(call!(le_si32(-1035405763, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_305() { - assert_eq!(call!(le_si32(-1035405763, 1)), true); - assert_eq!(call!(le_si32(-1035405763, 2)), true); - assert_eq!(call!(le_si32(-1035405763, 3)), true); - assert_eq!(call!(le_si32(-1035405763, 4)), true); - assert_eq!(call!(le_si32(-1035405763, 2147483646)), true); - assert_eq!(call!(le_si32(-1035405763, 2147483647)), true); - assert_eq!(call!(le_si32(0, 0)), true); - assert_eq!(call!(le_si32(0, 1)), true); - assert_eq!(call!(le_si32(0, 2)), true); - assert_eq!(call!(le_si32(0, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_306() { - assert_eq!(call!(le_si32(0, 4)), true); - assert_eq!(call!(le_si32(0, 2147483646)), true); - assert_eq!(call!(le_si32(0, 2147483647)), true); - assert_eq!(call!(le_si32(1, 1)), true); - assert_eq!(call!(le_si32(1, 2)), true); - assert_eq!(call!(le_si32(1, 3)), true); - assert_eq!(call!(le_si32(1, 4)), true); - assert_eq!(call!(le_si32(1, 2147483646)), true); - assert_eq!(call!(le_si32(1, 2147483647)), true); - assert_eq!(call!(le_si32(2, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_307() { - assert_eq!(call!(le_si32(2, 3)), true); - assert_eq!(call!(le_si32(2, 4)), true); - assert_eq!(call!(le_si32(2, 2147483646)), true); - assert_eq!(call!(le_si32(2, 2147483647)), true); - assert_eq!(call!(le_si32(3, 3)), true); - assert_eq!(call!(le_si32(3, 4)), true); - assert_eq!(call!(le_si32(3, 2147483646)), true); - assert_eq!(call!(le_si32(3, 2147483647)), true); - assert_eq!(call!(le_si32(4, 4)), true); - assert_eq!(call!(le_si32(4, 2147483646)), true); - } - #[rewrite(main)] - #[test] - fn test_308() { - assert_eq!(call!(le_si32(4, 2147483647)), true); - assert_eq!(call!(le_si32(2147483646, 2147483646)), true); - assert_eq!(call!(le_si32(2147483646, 2147483647)), true); - assert_eq!(call!(le_si32(2147483647, 2147483647)), true); - assert_eq!(call!(le_si64(-9223372036854775807, -9223372036854775808)), false); - assert_eq!(call!(le_si64(-1741927215160008704, -9223372036854775808)), false); - assert_eq!(call!(le_si64(-1741927215160008704, -9223372036854775807)), false); - assert_eq!(call!(le_si64(-1328271339354574848, -9223372036854775808)), false); - assert_eq!(call!(le_si64(-1328271339354574848, -9223372036854775807)), false); - assert_eq!(call!(le_si64(-1328271339354574848, -1741927215160008704)), false); - } - #[rewrite(main)] - #[test] - fn test_309() { - assert_eq!(call!(le_si64(0, -9223372036854775808)), false); - assert_eq!(call!(le_si64(0, -9223372036854775807)), false); - assert_eq!(call!(le_si64(0, -1741927215160008704)), false); - assert_eq!(call!(le_si64(0, -1328271339354574848)), false); - assert_eq!(call!(le_si64(1, -9223372036854775808)), false); - assert_eq!(call!(le_si64(1, -9223372036854775807)), false); - assert_eq!(call!(le_si64(1, -1741927215160008704)), false); - assert_eq!(call!(le_si64(1, -1328271339354574848)), false); - assert_eq!(call!(le_si64(1, 0)), false); - assert_eq!(call!(le_si64(2, -9223372036854775808)), false); - } - #[rewrite(main)] - #[test] - fn test_310() { - assert_eq!(call!(le_si64(2, -9223372036854775807)), false); - assert_eq!(call!(le_si64(2, -1741927215160008704)), false); - assert_eq!(call!(le_si64(2, -1328271339354574848)), false); - assert_eq!(call!(le_si64(2, 0)), false); - assert_eq!(call!(le_si64(2, 1)), false); - assert_eq!(call!(le_si64(3, -9223372036854775808)), false); - assert_eq!(call!(le_si64(3, -9223372036854775807)), false); - assert_eq!(call!(le_si64(3, -1741927215160008704)), false); - assert_eq!(call!(le_si64(3, -1328271339354574848)), false); - assert_eq!(call!(le_si64(3, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_311() { - assert_eq!(call!(le_si64(3, 1)), false); - assert_eq!(call!(le_si64(3, 2)), false); - assert_eq!(call!(le_si64(4, -9223372036854775808)), false); - assert_eq!(call!(le_si64(4, -9223372036854775807)), false); - assert_eq!(call!(le_si64(4, -1741927215160008704)), false); - assert_eq!(call!(le_si64(4, -1328271339354574848)), false); - assert_eq!(call!(le_si64(4, 0)), false); - assert_eq!(call!(le_si64(4, 1)), false); - assert_eq!(call!(le_si64(4, 2)), false); - assert_eq!(call!(le_si64(4, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_312() { - assert_eq!(call!(le_si64(5577148965131116544, -9223372036854775808)), false); - assert_eq!(call!(le_si64(5577148965131116544, -9223372036854775807)), false); - assert_eq!(call!(le_si64(5577148965131116544, -1741927215160008704)), false); - assert_eq!(call!(le_si64(5577148965131116544, -1328271339354574848)), false); - assert_eq!(call!(le_si64(5577148965131116544, 0)), false); - assert_eq!(call!(le_si64(5577148965131116544, 1)), false); - assert_eq!(call!(le_si64(5577148965131116544, 2)), false); - assert_eq!(call!(le_si64(5577148965131116544, 3)), false); - assert_eq!(call!(le_si64(5577148965131116544, 4)), false); - assert_eq!(call!(le_si64(9223372036854775806, -9223372036854775808)), false); - } - #[rewrite(main)] - #[test] - fn test_313() { - assert_eq!(call!(le_si64(9223372036854775806, -9223372036854775807)), false); - assert_eq!(call!(le_si64(9223372036854775806, -1741927215160008704)), false); - assert_eq!(call!(le_si64(9223372036854775806, -1328271339354574848)), false); - assert_eq!(call!(le_si64(9223372036854775806, 0)), false); - assert_eq!(call!(le_si64(9223372036854775806, 1)), false); - assert_eq!(call!(le_si64(9223372036854775806, 2)), false); - assert_eq!(call!(le_si64(9223372036854775806, 3)), false); - assert_eq!(call!(le_si64(9223372036854775806, 4)), false); - assert_eq!(call!(le_si64(9223372036854775806, 5577148965131116544)), false); - assert_eq!(call!(le_si64(9223372036854775807, -9223372036854775808)), false); - } - #[rewrite(main)] - #[test] - fn test_314() { - assert_eq!(call!(le_si64(9223372036854775807, -9223372036854775807)), false); - assert_eq!(call!(le_si64(9223372036854775807, -1741927215160008704)), false); - assert_eq!(call!(le_si64(9223372036854775807, -1328271339354574848)), false); - assert_eq!(call!(le_si64(9223372036854775807, 0)), false); - assert_eq!(call!(le_si64(9223372036854775807, 1)), false); - assert_eq!(call!(le_si64(9223372036854775807, 2)), false); - assert_eq!(call!(le_si64(9223372036854775807, 3)), false); - assert_eq!(call!(le_si64(9223372036854775807, 4)), false); - assert_eq!(call!(le_si64(9223372036854775807, 5577148965131116544)), false); - assert_eq!(call!(le_si64(9223372036854775807, 9223372036854775806)), false); - } - #[rewrite(main)] - #[test] - fn test_315() { - assert_eq!(call!(le_si64(-9223372036854775808, -9223372036854775808)), true); - assert_eq!(call!(le_si64(-9223372036854775808, -9223372036854775807)), true); - assert_eq!(call!(le_si64(-9223372036854775808, -1741927215160008704)), true); - assert_eq!(call!(le_si64(-9223372036854775808, -1328271339354574848)), true); - assert_eq!(call!(le_si64(-9223372036854775808, 0)), true); - assert_eq!(call!(le_si64(-9223372036854775808, 1)), true); - assert_eq!(call!(le_si64(-9223372036854775808, 2)), true); - assert_eq!(call!(le_si64(-9223372036854775808, 3)), true); - assert_eq!(call!(le_si64(-9223372036854775808, 4)), true); - assert_eq!(call!(le_si64(-9223372036854775808, 5577148965131116544)), true); - } - #[rewrite(main)] - #[test] - fn test_316() { - assert_eq!(call!(le_si64(-9223372036854775808, 9223372036854775806)), true); - assert_eq!(call!(le_si64(-9223372036854775808, 9223372036854775807)), true); - assert_eq!(call!(le_si64(-9223372036854775807, -9223372036854775807)), true); - assert_eq!(call!(le_si64(-9223372036854775807, -1741927215160008704)), true); - assert_eq!(call!(le_si64(-9223372036854775807, -1328271339354574848)), true); - assert_eq!(call!(le_si64(-9223372036854775807, 0)), true); - assert_eq!(call!(le_si64(-9223372036854775807, 1)), true); - assert_eq!(call!(le_si64(-9223372036854775807, 2)), true); - assert_eq!(call!(le_si64(-9223372036854775807, 3)), true); - assert_eq!(call!(le_si64(-9223372036854775807, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_317() { - assert_eq!(call!(le_si64(-9223372036854775807, 5577148965131116544)), true); - assert_eq!(call!(le_si64(-9223372036854775807, 9223372036854775806)), true); - assert_eq!(call!(le_si64(-9223372036854775807, 9223372036854775807)), true); - assert_eq!(call!(le_si64(-1741927215160008704, -1741927215160008704)), true); - assert_eq!(call!(le_si64(-1741927215160008704, -1328271339354574848)), true); - assert_eq!(call!(le_si64(-1741927215160008704, 0)), true); - assert_eq!(call!(le_si64(-1741927215160008704, 1)), true); - assert_eq!(call!(le_si64(-1741927215160008704, 2)), true); - assert_eq!(call!(le_si64(-1741927215160008704, 3)), true); - assert_eq!(call!(le_si64(-1741927215160008704, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_318() { - assert_eq!(call!(le_si64(-1741927215160008704, 5577148965131116544)), true); - assert_eq!(call!(le_si64(-1741927215160008704, 9223372036854775806)), true); - assert_eq!(call!(le_si64(-1741927215160008704, 9223372036854775807)), true); - assert_eq!(call!(le_si64(-1328271339354574848, -1328271339354574848)), true); - assert_eq!(call!(le_si64(-1328271339354574848, 0)), true); - assert_eq!(call!(le_si64(-1328271339354574848, 1)), true); - assert_eq!(call!(le_si64(-1328271339354574848, 2)), true); - assert_eq!(call!(le_si64(-1328271339354574848, 3)), true); - assert_eq!(call!(le_si64(-1328271339354574848, 4)), true); - assert_eq!(call!(le_si64(-1328271339354574848, 5577148965131116544)), true); - } - #[rewrite(main)] - #[test] - fn test_319() { - assert_eq!(call!(le_si64(-1328271339354574848, 9223372036854775806)), true); - assert_eq!(call!(le_si64(-1328271339354574848, 9223372036854775807)), true); - assert_eq!(call!(le_si64(0, 0)), true); - assert_eq!(call!(le_si64(0, 1)), true); - assert_eq!(call!(le_si64(0, 2)), true); - assert_eq!(call!(le_si64(0, 3)), true); - assert_eq!(call!(le_si64(0, 4)), true); - assert_eq!(call!(le_si64(0, 5577148965131116544)), true); - assert_eq!(call!(le_si64(0, 9223372036854775806)), true); - assert_eq!(call!(le_si64(0, 9223372036854775807)), true); - } - #[rewrite(main)] - #[test] - fn test_320() { - assert_eq!(call!(le_si64(1, 1)), true); - assert_eq!(call!(le_si64(1, 2)), true); - assert_eq!(call!(le_si64(1, 3)), true); - assert_eq!(call!(le_si64(1, 4)), true); - assert_eq!(call!(le_si64(1, 5577148965131116544)), true); - assert_eq!(call!(le_si64(1, 9223372036854775806)), true); - assert_eq!(call!(le_si64(1, 9223372036854775807)), true); - assert_eq!(call!(le_si64(2, 2)), true); - assert_eq!(call!(le_si64(2, 3)), true); - assert_eq!(call!(le_si64(2, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_321() { - assert_eq!(call!(le_si64(2, 5577148965131116544)), true); - assert_eq!(call!(le_si64(2, 9223372036854775806)), true); - assert_eq!(call!(le_si64(2, 9223372036854775807)), true); - assert_eq!(call!(le_si64(3, 3)), true); - assert_eq!(call!(le_si64(3, 4)), true); - assert_eq!(call!(le_si64(3, 5577148965131116544)), true); - assert_eq!(call!(le_si64(3, 9223372036854775806)), true); - assert_eq!(call!(le_si64(3, 9223372036854775807)), true); - assert_eq!(call!(le_si64(4, 4)), true); - assert_eq!(call!(le_si64(4, 5577148965131116544)), true); - } - #[rewrite(main)] - #[test] - fn test_322() { - assert_eq!(call!(le_si64(4, 9223372036854775806)), true); - assert_eq!(call!(le_si64(4, 9223372036854775807)), true); - assert_eq!(call!(le_si64(5577148965131116544, 5577148965131116544)), true); - assert_eq!(call!(le_si64(5577148965131116544, 9223372036854775806)), true); - assert_eq!(call!(le_si64(5577148965131116544, 9223372036854775807)), true); - assert_eq!(call!(le_si64(9223372036854775806, 9223372036854775806)), true); - assert_eq!(call!(le_si64(9223372036854775806, 9223372036854775807)), true); - assert_eq!(call!(le_si64(9223372036854775807, 9223372036854775807)), true); - assert_eq!(call!(le_si8(-127, -128)), false); - assert_eq!(call!(le_si8(0, -128)), false); - } - #[rewrite(main)] - #[test] - fn test_323() { - assert_eq!(call!(le_si8(0, -127)), false); - assert_eq!(call!(le_si8(1, -128)), false); - assert_eq!(call!(le_si8(1, -127)), false); - assert_eq!(call!(le_si8(1, 0)), false); - assert_eq!(call!(le_si8(2, -128)), false); - assert_eq!(call!(le_si8(2, -127)), false); - assert_eq!(call!(le_si8(2, 0)), false); - assert_eq!(call!(le_si8(2, 1)), false); - assert_eq!(call!(le_si8(3, -128)), false); - assert_eq!(call!(le_si8(3, -127)), false); - } - #[rewrite(main)] - #[test] - fn test_324() { - assert_eq!(call!(le_si8(3, 0)), false); - assert_eq!(call!(le_si8(3, 1)), false); - assert_eq!(call!(le_si8(3, 2)), false); - assert_eq!(call!(le_si8(4, -128)), false); - assert_eq!(call!(le_si8(4, -127)), false); - assert_eq!(call!(le_si8(4, 0)), false); - assert_eq!(call!(le_si8(4, 1)), false); - assert_eq!(call!(le_si8(4, 2)), false); - assert_eq!(call!(le_si8(4, 3)), false); - assert_eq!(call!(le_si8(16, -128)), false); - } - #[rewrite(main)] - #[test] - fn test_325() { - assert_eq!(call!(le_si8(16, -127)), false); - assert_eq!(call!(le_si8(16, 0)), false); - assert_eq!(call!(le_si8(16, 1)), false); - assert_eq!(call!(le_si8(16, 2)), false); - assert_eq!(call!(le_si8(16, 3)), false); - assert_eq!(call!(le_si8(16, 4)), false); - assert_eq!(call!(le_si8(126, -128)), false); - assert_eq!(call!(le_si8(126, -127)), false); - assert_eq!(call!(le_si8(126, 0)), false); - assert_eq!(call!(le_si8(126, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_326() { - assert_eq!(call!(le_si8(126, 2)), false); - assert_eq!(call!(le_si8(126, 3)), false); - assert_eq!(call!(le_si8(126, 4)), false); - assert_eq!(call!(le_si8(126, 16)), false); - assert_eq!(call!(le_si8(127, -128)), false); - assert_eq!(call!(le_si8(127, -127)), false); - assert_eq!(call!(le_si8(127, 0)), false); - assert_eq!(call!(le_si8(127, 1)), false); - assert_eq!(call!(le_si8(127, 2)), false); - assert_eq!(call!(le_si8(127, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_327() { - assert_eq!(call!(le_si8(127, 4)), false); - assert_eq!(call!(le_si8(127, 16)), false); - assert_eq!(call!(le_si8(127, 126)), false); - assert_eq!(call!(le_si8(-128, -128)), true); - assert_eq!(call!(le_si8(-128, -127)), true); - assert_eq!(call!(le_si8(-128, 0)), true); - assert_eq!(call!(le_si8(-128, 1)), true); - assert_eq!(call!(le_si8(-128, 2)), true); - assert_eq!(call!(le_si8(-128, 3)), true); - assert_eq!(call!(le_si8(-128, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_328() { - assert_eq!(call!(le_si8(-128, 16)), true); - assert_eq!(call!(le_si8(-128, 126)), true); - assert_eq!(call!(le_si8(-128, 127)), true); - assert_eq!(call!(le_si8(-127, -127)), true); - assert_eq!(call!(le_si8(-127, 0)), true); - assert_eq!(call!(le_si8(-127, 1)), true); - assert_eq!(call!(le_si8(-127, 2)), true); - assert_eq!(call!(le_si8(-127, 3)), true); - assert_eq!(call!(le_si8(-127, 4)), true); - assert_eq!(call!(le_si8(-127, 16)), true); - } - #[rewrite(main)] - #[test] - fn test_329() { - assert_eq!(call!(le_si8(-127, 126)), true); - assert_eq!(call!(le_si8(-127, 127)), true); - assert_eq!(call!(le_si8(0, 0)), true); - assert_eq!(call!(le_si8(0, 1)), true); - assert_eq!(call!(le_si8(0, 2)), true); - assert_eq!(call!(le_si8(0, 3)), true); - assert_eq!(call!(le_si8(0, 4)), true); - assert_eq!(call!(le_si8(0, 16)), true); - assert_eq!(call!(le_si8(0, 126)), true); - assert_eq!(call!(le_si8(0, 127)), true); - } - #[rewrite(main)] - #[test] - fn test_330() { - assert_eq!(call!(le_si8(1, 1)), true); - assert_eq!(call!(le_si8(1, 2)), true); - assert_eq!(call!(le_si8(1, 3)), true); - assert_eq!(call!(le_si8(1, 4)), true); - assert_eq!(call!(le_si8(1, 16)), true); - assert_eq!(call!(le_si8(1, 126)), true); - assert_eq!(call!(le_si8(1, 127)), true); - assert_eq!(call!(le_si8(2, 2)), true); - assert_eq!(call!(le_si8(2, 3)), true); - assert_eq!(call!(le_si8(2, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_331() { - assert_eq!(call!(le_si8(2, 16)), true); - assert_eq!(call!(le_si8(2, 126)), true); - assert_eq!(call!(le_si8(2, 127)), true); - assert_eq!(call!(le_si8(3, 3)), true); - assert_eq!(call!(le_si8(3, 4)), true); - assert_eq!(call!(le_si8(3, 16)), true); - assert_eq!(call!(le_si8(3, 126)), true); - assert_eq!(call!(le_si8(3, 127)), true); - assert_eq!(call!(le_si8(4, 4)), true); - assert_eq!(call!(le_si8(4, 16)), true); - } - #[rewrite(main)] - #[test] - fn test_332() { - assert_eq!(call!(le_si8(4, 126)), true); - assert_eq!(call!(le_si8(4, 127)), true); - assert_eq!(call!(le_si8(16, 16)), true); - assert_eq!(call!(le_si8(16, 126)), true); - assert_eq!(call!(le_si8(16, 127)), true); - assert_eq!(call!(le_si8(126, 126)), true); - assert_eq!(call!(le_si8(126, 127)), true); - assert_eq!(call!(le_si8(127, 127)), true); - assert_eq!(call!(le_ui16(1, 0)), false); - assert_eq!(call!(le_ui16(2, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_333() { - assert_eq!(call!(le_ui16(2, 1)), false); - assert_eq!(call!(le_ui16(3, 0)), false); - assert_eq!(call!(le_ui16(3, 1)), false); - assert_eq!(call!(le_ui16(3, 2)), false); - assert_eq!(call!(le_ui16(4, 0)), false); - assert_eq!(call!(le_ui16(4, 1)), false); - assert_eq!(call!(le_ui16(4, 2)), false); - assert_eq!(call!(le_ui16(4, 3)), false); - assert_eq!(call!(le_ui16(1717, 0)), false); - assert_eq!(call!(le_ui16(1717, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_334() { - assert_eq!(call!(le_ui16(1717, 2)), false); - assert_eq!(call!(le_ui16(1717, 3)), false); - assert_eq!(call!(le_ui16(1717, 4)), false); - assert_eq!(call!(le_ui16(17988, 0)), false); - assert_eq!(call!(le_ui16(17988, 1)), false); - assert_eq!(call!(le_ui16(17988, 2)), false); - assert_eq!(call!(le_ui16(17988, 3)), false); - assert_eq!(call!(le_ui16(17988, 4)), false); - assert_eq!(call!(le_ui16(17988, 1717)), false); - assert_eq!(call!(le_ui16(65096, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_335() { - assert_eq!(call!(le_ui16(65096, 1)), false); - assert_eq!(call!(le_ui16(65096, 2)), false); - assert_eq!(call!(le_ui16(65096, 3)), false); - assert_eq!(call!(le_ui16(65096, 4)), false); - assert_eq!(call!(le_ui16(65096, 1717)), false); - assert_eq!(call!(le_ui16(65096, 17988)), false); - assert_eq!(call!(le_ui16(65534, 0)), false); - assert_eq!(call!(le_ui16(65534, 1)), false); - assert_eq!(call!(le_ui16(65534, 2)), false); - assert_eq!(call!(le_ui16(65534, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_336() { - assert_eq!(call!(le_ui16(65534, 4)), false); - assert_eq!(call!(le_ui16(65534, 1717)), false); - assert_eq!(call!(le_ui16(65534, 17988)), false); - assert_eq!(call!(le_ui16(65534, 65096)), false); - assert_eq!(call!(le_ui16(65535, 0)), false); - assert_eq!(call!(le_ui16(65535, 1)), false); - assert_eq!(call!(le_ui16(65535, 2)), false); - assert_eq!(call!(le_ui16(65535, 3)), false); - assert_eq!(call!(le_ui16(65535, 4)), false); - assert_eq!(call!(le_ui16(65535, 1717)), false); - } - #[rewrite(main)] - #[test] - fn test_337() { - assert_eq!(call!(le_ui16(65535, 17988)), false); - assert_eq!(call!(le_ui16(65535, 65096)), false); - assert_eq!(call!(le_ui16(65535, 65534)), false); - assert_eq!(call!(le_ui16(0, 0)), true); - assert_eq!(call!(le_ui16(0, 1)), true); - assert_eq!(call!(le_ui16(0, 2)), true); - assert_eq!(call!(le_ui16(0, 3)), true); - assert_eq!(call!(le_ui16(0, 4)), true); - assert_eq!(call!(le_ui16(0, 1717)), true); - assert_eq!(call!(le_ui16(0, 17988)), true); - } - #[rewrite(main)] - #[test] - fn test_338() { - assert_eq!(call!(le_ui16(0, 65096)), true); - assert_eq!(call!(le_ui16(0, 65534)), true); - assert_eq!(call!(le_ui16(0, 65535)), true); - assert_eq!(call!(le_ui16(1, 1)), true); - assert_eq!(call!(le_ui16(1, 2)), true); - assert_eq!(call!(le_ui16(1, 3)), true); - assert_eq!(call!(le_ui16(1, 4)), true); - assert_eq!(call!(le_ui16(1, 1717)), true); - assert_eq!(call!(le_ui16(1, 17988)), true); - assert_eq!(call!(le_ui16(1, 65096)), true); - } - #[rewrite(main)] - #[test] - fn test_339() { - assert_eq!(call!(le_ui16(1, 65534)), true); - assert_eq!(call!(le_ui16(1, 65535)), true); - assert_eq!(call!(le_ui16(2, 2)), true); - assert_eq!(call!(le_ui16(2, 3)), true); - assert_eq!(call!(le_ui16(2, 4)), true); - assert_eq!(call!(le_ui16(2, 1717)), true); - assert_eq!(call!(le_ui16(2, 17988)), true); - assert_eq!(call!(le_ui16(2, 65096)), true); - assert_eq!(call!(le_ui16(2, 65534)), true); - assert_eq!(call!(le_ui16(2, 65535)), true); - } - #[rewrite(main)] - #[test] - fn test_340() { - assert_eq!(call!(le_ui16(3, 3)), true); - assert_eq!(call!(le_ui16(3, 4)), true); - assert_eq!(call!(le_ui16(3, 1717)), true); - assert_eq!(call!(le_ui16(3, 17988)), true); - assert_eq!(call!(le_ui16(3, 65096)), true); - assert_eq!(call!(le_ui16(3, 65534)), true); - assert_eq!(call!(le_ui16(3, 65535)), true); - assert_eq!(call!(le_ui16(4, 4)), true); - assert_eq!(call!(le_ui16(4, 1717)), true); - assert_eq!(call!(le_ui16(4, 17988)), true); - } - #[rewrite(main)] - #[test] - fn test_341() { - assert_eq!(call!(le_ui16(4, 65096)), true); - assert_eq!(call!(le_ui16(4, 65534)), true); - assert_eq!(call!(le_ui16(4, 65535)), true); - assert_eq!(call!(le_ui16(1717, 1717)), true); - assert_eq!(call!(le_ui16(1717, 17988)), true); - assert_eq!(call!(le_ui16(1717, 65096)), true); - assert_eq!(call!(le_ui16(1717, 65534)), true); - assert_eq!(call!(le_ui16(1717, 65535)), true); - assert_eq!(call!(le_ui16(17988, 17988)), true); - assert_eq!(call!(le_ui16(17988, 65096)), true); - } - #[rewrite(main)] - #[test] - fn test_342() { - assert_eq!(call!(le_ui16(17988, 65534)), true); - assert_eq!(call!(le_ui16(17988, 65535)), true); - assert_eq!(call!(le_ui16(65096, 65096)), true); - assert_eq!(call!(le_ui16(65096, 65534)), true); - assert_eq!(call!(le_ui16(65096, 65535)), true); - assert_eq!(call!(le_ui16(65534, 65534)), true); - assert_eq!(call!(le_ui16(65534, 65535)), true); - assert_eq!(call!(le_ui16(65535, 65535)), true); - assert_eq!(call!(le_ui32(1, 0)), false); - assert_eq!(call!(le_ui32(2, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_343() { - assert_eq!(call!(le_ui32(2, 1)), false); - assert_eq!(call!(le_ui32(3, 0)), false); - assert_eq!(call!(le_ui32(3, 1)), false); - assert_eq!(call!(le_ui32(3, 2)), false); - assert_eq!(call!(le_ui32(4, 0)), false); - assert_eq!(call!(le_ui32(4, 1)), false); - assert_eq!(call!(le_ui32(4, 2)), false); - assert_eq!(call!(le_ui32(4, 3)), false); - assert_eq!(call!(le_ui32(2119154652, 0)), false); - assert_eq!(call!(le_ui32(2119154652, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_344() { - assert_eq!(call!(le_ui32(2119154652, 2)), false); - assert_eq!(call!(le_ui32(2119154652, 3)), false); - assert_eq!(call!(le_ui32(2119154652, 4)), false); - assert_eq!(call!(le_ui32(3002788344, 0)), false); - assert_eq!(call!(le_ui32(3002788344, 1)), false); - assert_eq!(call!(le_ui32(3002788344, 2)), false); - assert_eq!(call!(le_ui32(3002788344, 3)), false); - assert_eq!(call!(le_ui32(3002788344, 4)), false); - assert_eq!(call!(le_ui32(3002788344, 2119154652)), false); - assert_eq!(call!(le_ui32(3482297128, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_345() { - assert_eq!(call!(le_ui32(3482297128, 1)), false); - assert_eq!(call!(le_ui32(3482297128, 2)), false); - assert_eq!(call!(le_ui32(3482297128, 3)), false); - assert_eq!(call!(le_ui32(3482297128, 4)), false); - assert_eq!(call!(le_ui32(3482297128, 2119154652)), false); - assert_eq!(call!(le_ui32(3482297128, 3002788344)), false); - assert_eq!(call!(le_ui32(4294967294, 0)), false); - assert_eq!(call!(le_ui32(4294967294, 1)), false); - assert_eq!(call!(le_ui32(4294967294, 2)), false); - assert_eq!(call!(le_ui32(4294967294, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_346() { - assert_eq!(call!(le_ui32(4294967294, 4)), false); - assert_eq!(call!(le_ui32(4294967294, 2119154652)), false); - assert_eq!(call!(le_ui32(4294967294, 3002788344)), false); - assert_eq!(call!(le_ui32(4294967294, 3482297128)), false); - assert_eq!(call!(le_ui32(4294967295, 0)), false); - assert_eq!(call!(le_ui32(4294967295, 1)), false); - assert_eq!(call!(le_ui32(4294967295, 2)), false); - assert_eq!(call!(le_ui32(4294967295, 3)), false); - assert_eq!(call!(le_ui32(4294967295, 4)), false); - assert_eq!(call!(le_ui32(4294967295, 2119154652)), false); - } - #[rewrite(main)] - #[test] - fn test_347() { - assert_eq!(call!(le_ui32(4294967295, 3002788344)), false); - assert_eq!(call!(le_ui32(4294967295, 3482297128)), false); - assert_eq!(call!(le_ui32(4294967295, 4294967294)), false); - assert_eq!(call!(le_ui32(0, 0)), true); - assert_eq!(call!(le_ui32(0, 1)), true); - assert_eq!(call!(le_ui32(0, 2)), true); - assert_eq!(call!(le_ui32(0, 3)), true); - assert_eq!(call!(le_ui32(0, 4)), true); - assert_eq!(call!(le_ui32(0, 2119154652)), true); - assert_eq!(call!(le_ui32(0, 3002788344)), true); - } - #[rewrite(main)] - #[test] - fn test_348() { - assert_eq!(call!(le_ui32(0, 3482297128)), true); - assert_eq!(call!(le_ui32(0, 4294967294)), true); - assert_eq!(call!(le_ui32(0, 4294967295)), true); - assert_eq!(call!(le_ui32(1, 1)), true); - assert_eq!(call!(le_ui32(1, 2)), true); - assert_eq!(call!(le_ui32(1, 3)), true); - assert_eq!(call!(le_ui32(1, 4)), true); - assert_eq!(call!(le_ui32(1, 2119154652)), true); - assert_eq!(call!(le_ui32(1, 3002788344)), true); - assert_eq!(call!(le_ui32(1, 3482297128)), true); - } - #[rewrite(main)] - #[test] - fn test_349() { - assert_eq!(call!(le_ui32(1, 4294967294)), true); - assert_eq!(call!(le_ui32(1, 4294967295)), true); - assert_eq!(call!(le_ui32(2, 2)), true); - assert_eq!(call!(le_ui32(2, 3)), true); - assert_eq!(call!(le_ui32(2, 4)), true); - assert_eq!(call!(le_ui32(2, 2119154652)), true); - assert_eq!(call!(le_ui32(2, 3002788344)), true); - assert_eq!(call!(le_ui32(2, 3482297128)), true); - assert_eq!(call!(le_ui32(2, 4294967294)), true); - assert_eq!(call!(le_ui32(2, 4294967295)), true); - } - #[rewrite(main)] - #[test] - fn test_350() { - assert_eq!(call!(le_ui32(3, 3)), true); - assert_eq!(call!(le_ui32(3, 4)), true); - assert_eq!(call!(le_ui32(3, 2119154652)), true); - assert_eq!(call!(le_ui32(3, 3002788344)), true); - assert_eq!(call!(le_ui32(3, 3482297128)), true); - assert_eq!(call!(le_ui32(3, 4294967294)), true); - assert_eq!(call!(le_ui32(3, 4294967295)), true); - assert_eq!(call!(le_ui32(4, 4)), true); - assert_eq!(call!(le_ui32(4, 2119154652)), true); - assert_eq!(call!(le_ui32(4, 3002788344)), true); - } - #[rewrite(main)] - #[test] - fn test_351() { - assert_eq!(call!(le_ui32(4, 3482297128)), true); - assert_eq!(call!(le_ui32(4, 4294967294)), true); - assert_eq!(call!(le_ui32(4, 4294967295)), true); - assert_eq!(call!(le_ui32(2119154652, 2119154652)), true); - assert_eq!(call!(le_ui32(2119154652, 3002788344)), true); - assert_eq!(call!(le_ui32(2119154652, 3482297128)), true); - assert_eq!(call!(le_ui32(2119154652, 4294967294)), true); - assert_eq!(call!(le_ui32(2119154652, 4294967295)), true); - assert_eq!(call!(le_ui32(3002788344, 3002788344)), true); - assert_eq!(call!(le_ui32(3002788344, 3482297128)), true); - } - #[rewrite(main)] - #[test] - fn test_352() { - assert_eq!(call!(le_ui32(3002788344, 4294967294)), true); - assert_eq!(call!(le_ui32(3002788344, 4294967295)), true); - assert_eq!(call!(le_ui32(3482297128, 3482297128)), true); - assert_eq!(call!(le_ui32(3482297128, 4294967294)), true); - assert_eq!(call!(le_ui32(3482297128, 4294967295)), true); - assert_eq!(call!(le_ui32(4294967294, 4294967294)), true); - assert_eq!(call!(le_ui32(4294967294, 4294967295)), true); - assert_eq!(call!(le_ui32(4294967295, 4294967295)), true); - assert_eq!(call!(le_ui64(1, 0)), false); - assert_eq!(call!(le_ui64(2, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_353() { - assert_eq!(call!(le_ui64(2, 1)), false); - assert_eq!(call!(le_ui64(3, 0)), false); - assert_eq!(call!(le_ui64(3, 1)), false); - assert_eq!(call!(le_ui64(3, 2)), false); - assert_eq!(call!(le_ui64(4, 0)), false); - assert_eq!(call!(le_ui64(4, 1)), false); - assert_eq!(call!(le_ui64(4, 2)), false); - assert_eq!(call!(le_ui64(4, 3)), false); - assert_eq!(call!(le_ui64(191084152064409600, 0)), false); - assert_eq!(call!(le_ui64(191084152064409600, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_354() { - assert_eq!(call!(le_ui64(191084152064409600, 2)), false); - assert_eq!(call!(le_ui64(191084152064409600, 3)), false); - assert_eq!(call!(le_ui64(191084152064409600, 4)), false); - assert_eq!(call!(le_ui64(11015955194427482112, 0)), false); - assert_eq!(call!(le_ui64(11015955194427482112, 1)), false); - assert_eq!(call!(le_ui64(11015955194427482112, 2)), false); - assert_eq!(call!(le_ui64(11015955194427482112, 3)), false); - assert_eq!(call!(le_ui64(11015955194427482112, 4)), false); - assert_eq!(call!(le_ui64(11015955194427482112, 191084152064409600)), false); - assert_eq!(call!(le_ui64(16990600415051759616, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_355() { - assert_eq!(call!(le_ui64(16990600415051759616, 1)), false); - assert_eq!(call!(le_ui64(16990600415051759616, 2)), false); - assert_eq!(call!(le_ui64(16990600415051759616, 3)), false); - assert_eq!(call!(le_ui64(16990600415051759616, 4)), false); - assert_eq!(call!(le_ui64(16990600415051759616, 191084152064409600)), false); - assert_eq!(call!(le_ui64(16990600415051759616, 11015955194427482112)), false); - assert_eq!(call!(le_ui64(18446744073709551614, 0)), false); - assert_eq!(call!(le_ui64(18446744073709551614, 1)), false); - assert_eq!(call!(le_ui64(18446744073709551614, 2)), false); - assert_eq!(call!(le_ui64(18446744073709551614, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_356() { - assert_eq!(call!(le_ui64(18446744073709551614, 4)), false); - assert_eq!(call!(le_ui64(18446744073709551614, 191084152064409600)), false); - assert_eq!(call!(le_ui64(18446744073709551614, 11015955194427482112)), false); - assert_eq!(call!(le_ui64(18446744073709551614, 16990600415051759616)), false); - assert_eq!(call!(le_ui64(18446744073709551615, 0)), false); - assert_eq!(call!(le_ui64(18446744073709551615, 1)), false); - assert_eq!(call!(le_ui64(18446744073709551615, 2)), false); - assert_eq!(call!(le_ui64(18446744073709551615, 3)), false); - assert_eq!(call!(le_ui64(18446744073709551615, 4)), false); - assert_eq!(call!(le_ui64(18446744073709551615, 191084152064409600)), false); - } - #[rewrite(main)] - #[test] - fn test_357() { - assert_eq!(call!(le_ui64(18446744073709551615, 11015955194427482112)), false); - assert_eq!(call!(le_ui64(18446744073709551615, 16990600415051759616)), false); - assert_eq!(call!(le_ui64(18446744073709551615, 18446744073709551614)), false); - assert_eq!(call!(le_ui64(0, 0)), true); - assert_eq!(call!(le_ui64(0, 1)), true); - assert_eq!(call!(le_ui64(0, 2)), true); - assert_eq!(call!(le_ui64(0, 3)), true); - assert_eq!(call!(le_ui64(0, 4)), true); - assert_eq!(call!(le_ui64(0, 191084152064409600)), true); - assert_eq!(call!(le_ui64(0, 11015955194427482112)), true); - } - #[rewrite(main)] - #[test] - fn test_358() { - assert_eq!(call!(le_ui64(0, 16990600415051759616)), true); - assert_eq!(call!(le_ui64(0, 18446744073709551614)), true); - assert_eq!(call!(le_ui64(0, 18446744073709551615)), true); - assert_eq!(call!(le_ui64(1, 1)), true); - assert_eq!(call!(le_ui64(1, 2)), true); - assert_eq!(call!(le_ui64(1, 3)), true); - assert_eq!(call!(le_ui64(1, 4)), true); - assert_eq!(call!(le_ui64(1, 191084152064409600)), true); - assert_eq!(call!(le_ui64(1, 11015955194427482112)), true); - assert_eq!(call!(le_ui64(1, 16990600415051759616)), true); - } - #[rewrite(main)] - #[test] - fn test_359() { - assert_eq!(call!(le_ui64(1, 18446744073709551614)), true); - assert_eq!(call!(le_ui64(1, 18446744073709551615)), true); - assert_eq!(call!(le_ui64(2, 2)), true); - assert_eq!(call!(le_ui64(2, 3)), true); - assert_eq!(call!(le_ui64(2, 4)), true); - assert_eq!(call!(le_ui64(2, 191084152064409600)), true); - assert_eq!(call!(le_ui64(2, 11015955194427482112)), true); - assert_eq!(call!(le_ui64(2, 16990600415051759616)), true); - assert_eq!(call!(le_ui64(2, 18446744073709551614)), true); - assert_eq!(call!(le_ui64(2, 18446744073709551615)), true); - } - #[rewrite(main)] - #[test] - fn test_360() { - assert_eq!(call!(le_ui64(3, 3)), true); - assert_eq!(call!(le_ui64(3, 4)), true); - assert_eq!(call!(le_ui64(3, 191084152064409600)), true); - assert_eq!(call!(le_ui64(3, 11015955194427482112)), true); - assert_eq!(call!(le_ui64(3, 16990600415051759616)), true); - assert_eq!(call!(le_ui64(3, 18446744073709551614)), true); - assert_eq!(call!(le_ui64(3, 18446744073709551615)), true); - assert_eq!(call!(le_ui64(4, 4)), true); - assert_eq!(call!(le_ui64(4, 191084152064409600)), true); - assert_eq!(call!(le_ui64(4, 11015955194427482112)), true); - } - #[rewrite(main)] - #[test] - fn test_361() { - assert_eq!(call!(le_ui64(4, 16990600415051759616)), true); - assert_eq!(call!(le_ui64(4, 18446744073709551614)), true); - assert_eq!(call!(le_ui64(4, 18446744073709551615)), true); - assert_eq!(call!(le_ui64(191084152064409600, 191084152064409600)), true); - assert_eq!(call!(le_ui64(191084152064409600, 11015955194427482112)), true); - assert_eq!(call!(le_ui64(191084152064409600, 16990600415051759616)), true); - assert_eq!(call!(le_ui64(191084152064409600, 18446744073709551614)), true); - assert_eq!(call!(le_ui64(191084152064409600, 18446744073709551615)), true); - assert_eq!(call!(le_ui64(11015955194427482112, 11015955194427482112)), true); - assert_eq!(call!(le_ui64(11015955194427482112, 16990600415051759616)), true); - } - #[rewrite(main)] - #[test] - fn test_362() { - assert_eq!(call!(le_ui64(11015955194427482112, 18446744073709551614)), true); - assert_eq!(call!(le_ui64(11015955194427482112, 18446744073709551615)), true); - assert_eq!(call!(le_ui64(16990600415051759616, 16990600415051759616)), true); - assert_eq!(call!(le_ui64(16990600415051759616, 18446744073709551614)), true); - assert_eq!(call!(le_ui64(16990600415051759616, 18446744073709551615)), true); - assert_eq!(call!(le_ui64(18446744073709551614, 18446744073709551614)), true); - assert_eq!(call!(le_ui64(18446744073709551614, 18446744073709551615)), true); - assert_eq!(call!(le_ui64(18446744073709551615, 18446744073709551615)), true); - assert_eq!(call!(le_ui8(1, 0)), false); - assert_eq!(call!(le_ui8(2, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_363() { - assert_eq!(call!(le_ui8(2, 1)), false); - assert_eq!(call!(le_ui8(3, 0)), false); - assert_eq!(call!(le_ui8(3, 1)), false); - assert_eq!(call!(le_ui8(3, 2)), false); - assert_eq!(call!(le_ui8(4, 0)), false); - assert_eq!(call!(le_ui8(4, 1)), false); - assert_eq!(call!(le_ui8(4, 2)), false); - assert_eq!(call!(le_ui8(4, 3)), false); - assert_eq!(call!(le_ui8(72, 0)), false); - assert_eq!(call!(le_ui8(72, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_364() { - assert_eq!(call!(le_ui8(72, 2)), false); - assert_eq!(call!(le_ui8(72, 3)), false); - assert_eq!(call!(le_ui8(72, 4)), false); - assert_eq!(call!(le_ui8(100, 0)), false); - assert_eq!(call!(le_ui8(100, 1)), false); - assert_eq!(call!(le_ui8(100, 2)), false); - assert_eq!(call!(le_ui8(100, 3)), false); - assert_eq!(call!(le_ui8(100, 4)), false); - assert_eq!(call!(le_ui8(100, 72)), false); - assert_eq!(call!(le_ui8(162, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_365() { - assert_eq!(call!(le_ui8(162, 1)), false); - assert_eq!(call!(le_ui8(162, 2)), false); - assert_eq!(call!(le_ui8(162, 3)), false); - assert_eq!(call!(le_ui8(162, 4)), false); - assert_eq!(call!(le_ui8(162, 72)), false); - assert_eq!(call!(le_ui8(162, 100)), false); - assert_eq!(call!(le_ui8(254, 0)), false); - assert_eq!(call!(le_ui8(254, 1)), false); - assert_eq!(call!(le_ui8(254, 2)), false); - assert_eq!(call!(le_ui8(254, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_366() { - assert_eq!(call!(le_ui8(254, 4)), false); - assert_eq!(call!(le_ui8(254, 72)), false); - assert_eq!(call!(le_ui8(254, 100)), false); - assert_eq!(call!(le_ui8(254, 162)), false); - assert_eq!(call!(le_ui8(255, 0)), false); - assert_eq!(call!(le_ui8(255, 1)), false); - assert_eq!(call!(le_ui8(255, 2)), false); - assert_eq!(call!(le_ui8(255, 3)), false); - assert_eq!(call!(le_ui8(255, 4)), false); - assert_eq!(call!(le_ui8(255, 72)), false); - } - #[rewrite(main)] - #[test] - fn test_367() { - assert_eq!(call!(le_ui8(255, 100)), false); - assert_eq!(call!(le_ui8(255, 162)), false); - assert_eq!(call!(le_ui8(255, 254)), false); - assert_eq!(call!(le_ui8(0, 0)), true); - assert_eq!(call!(le_ui8(0, 1)), true); - assert_eq!(call!(le_ui8(0, 2)), true); - assert_eq!(call!(le_ui8(0, 3)), true); - assert_eq!(call!(le_ui8(0, 4)), true); - assert_eq!(call!(le_ui8(0, 72)), true); - assert_eq!(call!(le_ui8(0, 100)), true); - } - #[rewrite(main)] - #[test] - fn test_368() { - assert_eq!(call!(le_ui8(0, 162)), true); - assert_eq!(call!(le_ui8(0, 254)), true); - assert_eq!(call!(le_ui8(0, 255)), true); - assert_eq!(call!(le_ui8(1, 1)), true); - assert_eq!(call!(le_ui8(1, 2)), true); - assert_eq!(call!(le_ui8(1, 3)), true); - assert_eq!(call!(le_ui8(1, 4)), true); - assert_eq!(call!(le_ui8(1, 72)), true); - assert_eq!(call!(le_ui8(1, 100)), true); - assert_eq!(call!(le_ui8(1, 162)), true); - } - #[rewrite(main)] - #[test] - fn test_369() { - assert_eq!(call!(le_ui8(1, 254)), true); - assert_eq!(call!(le_ui8(1, 255)), true); - assert_eq!(call!(le_ui8(2, 2)), true); - assert_eq!(call!(le_ui8(2, 3)), true); - assert_eq!(call!(le_ui8(2, 4)), true); - assert_eq!(call!(le_ui8(2, 72)), true); - assert_eq!(call!(le_ui8(2, 100)), true); - assert_eq!(call!(le_ui8(2, 162)), true); - assert_eq!(call!(le_ui8(2, 254)), true); - assert_eq!(call!(le_ui8(2, 255)), true); - } - #[rewrite(main)] - #[test] - fn test_370() { - assert_eq!(call!(le_ui8(3, 3)), true); - assert_eq!(call!(le_ui8(3, 4)), true); - assert_eq!(call!(le_ui8(3, 72)), true); - assert_eq!(call!(le_ui8(3, 100)), true); - assert_eq!(call!(le_ui8(3, 162)), true); - assert_eq!(call!(le_ui8(3, 254)), true); - assert_eq!(call!(le_ui8(3, 255)), true); - assert_eq!(call!(le_ui8(4, 4)), true); - assert_eq!(call!(le_ui8(4, 72)), true); - assert_eq!(call!(le_ui8(4, 100)), true); - } - #[rewrite(main)] - #[test] - fn test_371() { - assert_eq!(call!(le_ui8(4, 162)), true); - assert_eq!(call!(le_ui8(4, 254)), true); - assert_eq!(call!(le_ui8(4, 255)), true); - assert_eq!(call!(le_ui8(72, 72)), true); - assert_eq!(call!(le_ui8(72, 100)), true); - assert_eq!(call!(le_ui8(72, 162)), true); - assert_eq!(call!(le_ui8(72, 254)), true); - assert_eq!(call!(le_ui8(72, 255)), true); - assert_eq!(call!(le_ui8(100, 100)), true); - assert_eq!(call!(le_ui8(100, 162)), true); - } - #[rewrite(main)] - #[test] - fn test_372() { - assert_eq!(call!(le_ui8(100, 254)), true); - assert_eq!(call!(le_ui8(100, 255)), true); - assert_eq!(call!(le_ui8(162, 162)), true); - assert_eq!(call!(le_ui8(162, 254)), true); - assert_eq!(call!(le_ui8(162, 255)), true); - assert_eq!(call!(le_ui8(254, 254)), true); - assert_eq!(call!(le_ui8(254, 255)), true); - assert_eq!(call!(le_ui8(255, 255)), true); - assert_eq!(call!(lt_si16(-32768, -32768)), false); - assert_eq!(call!(lt_si16(-32767, -32768)), false); - } - #[rewrite(main)] - #[test] - fn test_373() { - assert_eq!(call!(lt_si16(-32767, -32767)), false); - assert_eq!(call!(lt_si16(-32547, -32768)), false); - assert_eq!(call!(lt_si16(-32547, -32767)), false); - assert_eq!(call!(lt_si16(-32547, -32547)), false); - assert_eq!(call!(lt_si16(0, -32768)), false); - assert_eq!(call!(lt_si16(0, -32767)), false); - assert_eq!(call!(lt_si16(0, -32547)), false); - assert_eq!(call!(lt_si16(0, 0)), false); - assert_eq!(call!(lt_si16(1, -32768)), false); - assert_eq!(call!(lt_si16(1, -32767)), false); - } - #[rewrite(main)] - #[test] - fn test_374() { - assert_eq!(call!(lt_si16(1, -32547)), false); - assert_eq!(call!(lt_si16(1, 0)), false); - assert_eq!(call!(lt_si16(1, 1)), false); - assert_eq!(call!(lt_si16(2, -32768)), false); - assert_eq!(call!(lt_si16(2, -32767)), false); - assert_eq!(call!(lt_si16(2, -32547)), false); - assert_eq!(call!(lt_si16(2, 0)), false); - assert_eq!(call!(lt_si16(2, 1)), false); - assert_eq!(call!(lt_si16(2, 2)), false); - assert_eq!(call!(lt_si16(3, -32768)), false); - } - #[rewrite(main)] - #[test] - fn test_375() { - assert_eq!(call!(lt_si16(3, -32767)), false); - assert_eq!(call!(lt_si16(3, -32547)), false); - assert_eq!(call!(lt_si16(3, 0)), false); - assert_eq!(call!(lt_si16(3, 1)), false); - assert_eq!(call!(lt_si16(3, 2)), false); - assert_eq!(call!(lt_si16(3, 3)), false); - assert_eq!(call!(lt_si16(4, -32768)), false); - assert_eq!(call!(lt_si16(4, -32767)), false); - assert_eq!(call!(lt_si16(4, -32547)), false); - assert_eq!(call!(lt_si16(4, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_376() { - assert_eq!(call!(lt_si16(4, 1)), false); - assert_eq!(call!(lt_si16(4, 2)), false); - assert_eq!(call!(lt_si16(4, 3)), false); - assert_eq!(call!(lt_si16(4, 4)), false); - assert_eq!(call!(lt_si16(10486, -32768)), false); - assert_eq!(call!(lt_si16(10486, -32767)), false); - assert_eq!(call!(lt_si16(10486, -32547)), false); - assert_eq!(call!(lt_si16(10486, 0)), false); - assert_eq!(call!(lt_si16(10486, 1)), false); - assert_eq!(call!(lt_si16(10486, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_377() { - assert_eq!(call!(lt_si16(10486, 3)), false); - assert_eq!(call!(lt_si16(10486, 4)), false); - assert_eq!(call!(lt_si16(10486, 10486)), false); - assert_eq!(call!(lt_si16(16514, -32768)), false); - assert_eq!(call!(lt_si16(16514, -32767)), false); - assert_eq!(call!(lt_si16(16514, -32547)), false); - assert_eq!(call!(lt_si16(16514, 0)), false); - assert_eq!(call!(lt_si16(16514, 1)), false); - assert_eq!(call!(lt_si16(16514, 2)), false); - assert_eq!(call!(lt_si16(16514, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_378() { - assert_eq!(call!(lt_si16(16514, 4)), false); - assert_eq!(call!(lt_si16(16514, 10486)), false); - assert_eq!(call!(lt_si16(16514, 16514)), false); - assert_eq!(call!(lt_si16(32766, -32768)), false); - assert_eq!(call!(lt_si16(32766, -32767)), false); - assert_eq!(call!(lt_si16(32766, -32547)), false); - assert_eq!(call!(lt_si16(32766, 0)), false); - assert_eq!(call!(lt_si16(32766, 1)), false); - assert_eq!(call!(lt_si16(32766, 2)), false); - assert_eq!(call!(lt_si16(32766, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_379() { - assert_eq!(call!(lt_si16(32766, 4)), false); - assert_eq!(call!(lt_si16(32766, 10486)), false); - assert_eq!(call!(lt_si16(32766, 16514)), false); - assert_eq!(call!(lt_si16(32766, 32766)), false); - assert_eq!(call!(lt_si16(32767, -32768)), false); - assert_eq!(call!(lt_si16(32767, -32767)), false); - assert_eq!(call!(lt_si16(32767, -32547)), false); - assert_eq!(call!(lt_si16(32767, 0)), false); - assert_eq!(call!(lt_si16(32767, 1)), false); - assert_eq!(call!(lt_si16(32767, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_380() { - assert_eq!(call!(lt_si16(32767, 3)), false); - assert_eq!(call!(lt_si16(32767, 4)), false); - assert_eq!(call!(lt_si16(32767, 10486)), false); - assert_eq!(call!(lt_si16(32767, 16514)), false); - assert_eq!(call!(lt_si16(32767, 32766)), false); - assert_eq!(call!(lt_si16(32767, 32767)), false); - assert_eq!(call!(lt_si16(-32768, -32767)), true); - assert_eq!(call!(lt_si16(-32768, -32547)), true); - assert_eq!(call!(lt_si16(-32768, 0)), true); - assert_eq!(call!(lt_si16(-32768, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_381() { - assert_eq!(call!(lt_si16(-32768, 2)), true); - assert_eq!(call!(lt_si16(-32768, 3)), true); - assert_eq!(call!(lt_si16(-32768, 4)), true); - assert_eq!(call!(lt_si16(-32768, 10486)), true); - assert_eq!(call!(lt_si16(-32768, 16514)), true); - assert_eq!(call!(lt_si16(-32768, 32766)), true); - assert_eq!(call!(lt_si16(-32768, 32767)), true); - assert_eq!(call!(lt_si16(-32767, -32547)), true); - assert_eq!(call!(lt_si16(-32767, 0)), true); - assert_eq!(call!(lt_si16(-32767, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_382() { - assert_eq!(call!(lt_si16(-32767, 2)), true); - assert_eq!(call!(lt_si16(-32767, 3)), true); - assert_eq!(call!(lt_si16(-32767, 4)), true); - assert_eq!(call!(lt_si16(-32767, 10486)), true); - assert_eq!(call!(lt_si16(-32767, 16514)), true); - assert_eq!(call!(lt_si16(-32767, 32766)), true); - assert_eq!(call!(lt_si16(-32767, 32767)), true); - assert_eq!(call!(lt_si16(-32547, 0)), true); - assert_eq!(call!(lt_si16(-32547, 1)), true); - assert_eq!(call!(lt_si16(-32547, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_383() { - assert_eq!(call!(lt_si16(-32547, 3)), true); - assert_eq!(call!(lt_si16(-32547, 4)), true); - assert_eq!(call!(lt_si16(-32547, 10486)), true); - assert_eq!(call!(lt_si16(-32547, 16514)), true); - assert_eq!(call!(lt_si16(-32547, 32766)), true); - assert_eq!(call!(lt_si16(-32547, 32767)), true); - assert_eq!(call!(lt_si16(0, 1)), true); - assert_eq!(call!(lt_si16(0, 2)), true); - assert_eq!(call!(lt_si16(0, 3)), true); - assert_eq!(call!(lt_si16(0, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_384() { - assert_eq!(call!(lt_si16(0, 10486)), true); - assert_eq!(call!(lt_si16(0, 16514)), true); - assert_eq!(call!(lt_si16(0, 32766)), true); - assert_eq!(call!(lt_si16(0, 32767)), true); - assert_eq!(call!(lt_si16(1, 2)), true); - assert_eq!(call!(lt_si16(1, 3)), true); - assert_eq!(call!(lt_si16(1, 4)), true); - assert_eq!(call!(lt_si16(1, 10486)), true); - assert_eq!(call!(lt_si16(1, 16514)), true); - assert_eq!(call!(lt_si16(1, 32766)), true); - } - #[rewrite(main)] - #[test] - fn test_385() { - assert_eq!(call!(lt_si16(1, 32767)), true); - assert_eq!(call!(lt_si16(2, 3)), true); - assert_eq!(call!(lt_si16(2, 4)), true); - assert_eq!(call!(lt_si16(2, 10486)), true); - assert_eq!(call!(lt_si16(2, 16514)), true); - assert_eq!(call!(lt_si16(2, 32766)), true); - assert_eq!(call!(lt_si16(2, 32767)), true); - assert_eq!(call!(lt_si16(3, 4)), true); - assert_eq!(call!(lt_si16(3, 10486)), true); - assert_eq!(call!(lt_si16(3, 16514)), true); - } - #[rewrite(main)] - #[test] - fn test_386() { - assert_eq!(call!(lt_si16(3, 32766)), true); - assert_eq!(call!(lt_si16(3, 32767)), true); - assert_eq!(call!(lt_si16(4, 10486)), true); - assert_eq!(call!(lt_si16(4, 16514)), true); - assert_eq!(call!(lt_si16(4, 32766)), true); - assert_eq!(call!(lt_si16(4, 32767)), true); - assert_eq!(call!(lt_si16(10486, 16514)), true); - assert_eq!(call!(lt_si16(10486, 32766)), true); - assert_eq!(call!(lt_si16(10486, 32767)), true); - assert_eq!(call!(lt_si16(16514, 32766)), true); - } - #[rewrite(main)] - #[test] - fn test_387() { - assert_eq!(call!(lt_si16(16514, 32767)), true); - assert_eq!(call!(lt_si16(32766, 32767)), true); - assert_eq!(call!(lt_si32(-2147483648, -2147483648)), false); - assert_eq!(call!(lt_si32(-2147483647, -2147483648)), false); - assert_eq!(call!(lt_si32(-2147483647, -2147483647)), false); - assert_eq!(call!(lt_si32(-1713183800, -2147483648)), false); - assert_eq!(call!(lt_si32(-1713183800, -2147483647)), false); - assert_eq!(call!(lt_si32(-1713183800, -1713183800)), false); - assert_eq!(call!(lt_si32(-1252582164, -2147483648)), false); - assert_eq!(call!(lt_si32(-1252582164, -2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_388() { - assert_eq!(call!(lt_si32(-1252582164, -1713183800)), false); - assert_eq!(call!(lt_si32(-1252582164, -1252582164)), false); - assert_eq!(call!(lt_si32(-1035405763, -2147483648)), false); - assert_eq!(call!(lt_si32(-1035405763, -2147483647)), false); - assert_eq!(call!(lt_si32(-1035405763, -1713183800)), false); - assert_eq!(call!(lt_si32(-1035405763, -1252582164)), false); - assert_eq!(call!(lt_si32(-1035405763, -1035405763)), false); - assert_eq!(call!(lt_si32(0, -2147483648)), false); - assert_eq!(call!(lt_si32(0, -2147483647)), false); - assert_eq!(call!(lt_si32(0, -1713183800)), false); - } - #[rewrite(main)] - #[test] - fn test_389() { - assert_eq!(call!(lt_si32(0, -1252582164)), false); - assert_eq!(call!(lt_si32(0, -1035405763)), false); - assert_eq!(call!(lt_si32(0, 0)), false); - assert_eq!(call!(lt_si32(1, -2147483648)), false); - assert_eq!(call!(lt_si32(1, -2147483647)), false); - assert_eq!(call!(lt_si32(1, -1713183800)), false); - assert_eq!(call!(lt_si32(1, -1252582164)), false); - assert_eq!(call!(lt_si32(1, -1035405763)), false); - assert_eq!(call!(lt_si32(1, 0)), false); - assert_eq!(call!(lt_si32(1, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_390() { - assert_eq!(call!(lt_si32(2, -2147483648)), false); - assert_eq!(call!(lt_si32(2, -2147483647)), false); - assert_eq!(call!(lt_si32(2, -1713183800)), false); - assert_eq!(call!(lt_si32(2, -1252582164)), false); - assert_eq!(call!(lt_si32(2, -1035405763)), false); - assert_eq!(call!(lt_si32(2, 0)), false); - assert_eq!(call!(lt_si32(2, 1)), false); - assert_eq!(call!(lt_si32(2, 2)), false); - assert_eq!(call!(lt_si32(3, -2147483648)), false); - assert_eq!(call!(lt_si32(3, -2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_391() { - assert_eq!(call!(lt_si32(3, -1713183800)), false); - assert_eq!(call!(lt_si32(3, -1252582164)), false); - assert_eq!(call!(lt_si32(3, -1035405763)), false); - assert_eq!(call!(lt_si32(3, 0)), false); - assert_eq!(call!(lt_si32(3, 1)), false); - assert_eq!(call!(lt_si32(3, 2)), false); - assert_eq!(call!(lt_si32(3, 3)), false); - assert_eq!(call!(lt_si32(4, -2147483648)), false); - assert_eq!(call!(lt_si32(4, -2147483647)), false); - assert_eq!(call!(lt_si32(4, -1713183800)), false); - } - #[rewrite(main)] - #[test] - fn test_392() { - assert_eq!(call!(lt_si32(4, -1252582164)), false); - assert_eq!(call!(lt_si32(4, -1035405763)), false); - assert_eq!(call!(lt_si32(4, 0)), false); - assert_eq!(call!(lt_si32(4, 1)), false); - assert_eq!(call!(lt_si32(4, 2)), false); - assert_eq!(call!(lt_si32(4, 3)), false); - assert_eq!(call!(lt_si32(4, 4)), false); - assert_eq!(call!(lt_si32(2147483646, -2147483648)), false); - assert_eq!(call!(lt_si32(2147483646, -2147483647)), false); - assert_eq!(call!(lt_si32(2147483646, -1713183800)), false); - } - #[rewrite(main)] - #[test] - fn test_393() { - assert_eq!(call!(lt_si32(2147483646, -1252582164)), false); - assert_eq!(call!(lt_si32(2147483646, -1035405763)), false); - assert_eq!(call!(lt_si32(2147483646, 0)), false); - assert_eq!(call!(lt_si32(2147483646, 1)), false); - assert_eq!(call!(lt_si32(2147483646, 2)), false); - assert_eq!(call!(lt_si32(2147483646, 3)), false); - assert_eq!(call!(lt_si32(2147483646, 4)), false); - assert_eq!(call!(lt_si32(2147483646, 2147483646)), false); - assert_eq!(call!(lt_si32(2147483647, -2147483648)), false); - assert_eq!(call!(lt_si32(2147483647, -2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_394() { - assert_eq!(call!(lt_si32(2147483647, -1713183800)), false); - assert_eq!(call!(lt_si32(2147483647, -1252582164)), false); - assert_eq!(call!(lt_si32(2147483647, -1035405763)), false); - assert_eq!(call!(lt_si32(2147483647, 0)), false); - assert_eq!(call!(lt_si32(2147483647, 1)), false); - assert_eq!(call!(lt_si32(2147483647, 2)), false); - assert_eq!(call!(lt_si32(2147483647, 3)), false); - assert_eq!(call!(lt_si32(2147483647, 4)), false); - assert_eq!(call!(lt_si32(2147483647, 2147483646)), false); - assert_eq!(call!(lt_si32(2147483647, 2147483647)), false); - } - #[rewrite(main)] - #[test] - fn test_395() { - assert_eq!(call!(lt_si32(-2147483648, -2147483647)), true); - assert_eq!(call!(lt_si32(-2147483648, -1713183800)), true); - assert_eq!(call!(lt_si32(-2147483648, -1252582164)), true); - assert_eq!(call!(lt_si32(-2147483648, -1035405763)), true); - assert_eq!(call!(lt_si32(-2147483648, 0)), true); - assert_eq!(call!(lt_si32(-2147483648, 1)), true); - assert_eq!(call!(lt_si32(-2147483648, 2)), true); - assert_eq!(call!(lt_si32(-2147483648, 3)), true); - assert_eq!(call!(lt_si32(-2147483648, 4)), true); - assert_eq!(call!(lt_si32(-2147483648, 2147483646)), true); - } - #[rewrite(main)] - #[test] - fn test_396() { - assert_eq!(call!(lt_si32(-2147483648, 2147483647)), true); - assert_eq!(call!(lt_si32(-2147483647, -1713183800)), true); - assert_eq!(call!(lt_si32(-2147483647, -1252582164)), true); - assert_eq!(call!(lt_si32(-2147483647, -1035405763)), true); - assert_eq!(call!(lt_si32(-2147483647, 0)), true); - assert_eq!(call!(lt_si32(-2147483647, 1)), true); - assert_eq!(call!(lt_si32(-2147483647, 2)), true); - assert_eq!(call!(lt_si32(-2147483647, 3)), true); - assert_eq!(call!(lt_si32(-2147483647, 4)), true); - assert_eq!(call!(lt_si32(-2147483647, 2147483646)), true); - } - #[rewrite(main)] - #[test] - fn test_397() { - assert_eq!(call!(lt_si32(-2147483647, 2147483647)), true); - assert_eq!(call!(lt_si32(-1713183800, -1252582164)), true); - assert_eq!(call!(lt_si32(-1713183800, -1035405763)), true); - assert_eq!(call!(lt_si32(-1713183800, 0)), true); - assert_eq!(call!(lt_si32(-1713183800, 1)), true); - assert_eq!(call!(lt_si32(-1713183800, 2)), true); - assert_eq!(call!(lt_si32(-1713183800, 3)), true); - assert_eq!(call!(lt_si32(-1713183800, 4)), true); - assert_eq!(call!(lt_si32(-1713183800, 2147483646)), true); - assert_eq!(call!(lt_si32(-1713183800, 2147483647)), true); - } - #[rewrite(main)] - #[test] - fn test_398() { - assert_eq!(call!(lt_si32(-1252582164, -1035405763)), true); - assert_eq!(call!(lt_si32(-1252582164, 0)), true); - assert_eq!(call!(lt_si32(-1252582164, 1)), true); - assert_eq!(call!(lt_si32(-1252582164, 2)), true); - assert_eq!(call!(lt_si32(-1252582164, 3)), true); - assert_eq!(call!(lt_si32(-1252582164, 4)), true); - assert_eq!(call!(lt_si32(-1252582164, 2147483646)), true); - assert_eq!(call!(lt_si32(-1252582164, 2147483647)), true); - assert_eq!(call!(lt_si32(-1035405763, 0)), true); - assert_eq!(call!(lt_si32(-1035405763, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_399() { - assert_eq!(call!(lt_si32(-1035405763, 2)), true); - assert_eq!(call!(lt_si32(-1035405763, 3)), true); - assert_eq!(call!(lt_si32(-1035405763, 4)), true); - assert_eq!(call!(lt_si32(-1035405763, 2147483646)), true); - assert_eq!(call!(lt_si32(-1035405763, 2147483647)), true); - assert_eq!(call!(lt_si32(0, 1)), true); - assert_eq!(call!(lt_si32(0, 2)), true); - assert_eq!(call!(lt_si32(0, 3)), true); - assert_eq!(call!(lt_si32(0, 4)), true); - assert_eq!(call!(lt_si32(0, 2147483646)), true); - } - #[rewrite(main)] - #[test] - fn test_400() { - assert_eq!(call!(lt_si32(0, 2147483647)), true); - assert_eq!(call!(lt_si32(1, 2)), true); - assert_eq!(call!(lt_si32(1, 3)), true); - assert_eq!(call!(lt_si32(1, 4)), true); - assert_eq!(call!(lt_si32(1, 2147483646)), true); - assert_eq!(call!(lt_si32(1, 2147483647)), true); - assert_eq!(call!(lt_si32(2, 3)), true); - assert_eq!(call!(lt_si32(2, 4)), true); - assert_eq!(call!(lt_si32(2, 2147483646)), true); - assert_eq!(call!(lt_si32(2, 2147483647)), true); - } - #[rewrite(main)] - #[test] - fn test_401() { - assert_eq!(call!(lt_si32(3, 4)), true); - assert_eq!(call!(lt_si32(3, 2147483646)), true); - assert_eq!(call!(lt_si32(3, 2147483647)), true); - assert_eq!(call!(lt_si32(4, 2147483646)), true); - assert_eq!(call!(lt_si32(4, 2147483647)), true); - assert_eq!(call!(lt_si32(2147483646, 2147483647)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(-9223372036854775807, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(-9223372036854775807, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(-1741927215160008704, -9223372036854775808)), false); - } - #[rewrite(main)] - #[test] - fn test_402() { - assert_eq!(call!(lt_si64(-1741927215160008704, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(-1741927215160008704, -1741927215160008704)), false); - assert_eq!(call!(lt_si64(-1328271339354574848, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(-1328271339354574848, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(-1328271339354574848, -1741927215160008704)), false); - assert_eq!(call!(lt_si64(-1328271339354574848, -1328271339354574848)), false); - assert_eq!(call!(lt_si64(0, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(0, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(0, -1741927215160008704)), false); - assert_eq!(call!(lt_si64(0, -1328271339354574848)), false); - } - #[rewrite(main)] - #[test] - fn test_403() { - assert_eq!(call!(lt_si64(0, 0)), false); - assert_eq!(call!(lt_si64(1, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(1, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(1, -1741927215160008704)), false); - assert_eq!(call!(lt_si64(1, -1328271339354574848)), false); - assert_eq!(call!(lt_si64(1, 0)), false); - assert_eq!(call!(lt_si64(1, 1)), false); - assert_eq!(call!(lt_si64(2, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(2, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(2, -1741927215160008704)), false); - } - #[rewrite(main)] - #[test] - fn test_404() { - assert_eq!(call!(lt_si64(2, -1328271339354574848)), false); - assert_eq!(call!(lt_si64(2, 0)), false); - assert_eq!(call!(lt_si64(2, 1)), false); - assert_eq!(call!(lt_si64(2, 2)), false); - assert_eq!(call!(lt_si64(3, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(3, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(3, -1741927215160008704)), false); - assert_eq!(call!(lt_si64(3, -1328271339354574848)), false); - assert_eq!(call!(lt_si64(3, 0)), false); - assert_eq!(call!(lt_si64(3, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_405() { - assert_eq!(call!(lt_si64(3, 2)), false); - assert_eq!(call!(lt_si64(3, 3)), false); - assert_eq!(call!(lt_si64(4, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(4, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(4, -1741927215160008704)), false); - assert_eq!(call!(lt_si64(4, -1328271339354574848)), false); - assert_eq!(call!(lt_si64(4, 0)), false); - assert_eq!(call!(lt_si64(4, 1)), false); - assert_eq!(call!(lt_si64(4, 2)), false); - assert_eq!(call!(lt_si64(4, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_406() { - assert_eq!(call!(lt_si64(4, 4)), false); - assert_eq!(call!(lt_si64(5577148965131116544, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(5577148965131116544, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(5577148965131116544, -1741927215160008704)), false); - assert_eq!(call!(lt_si64(5577148965131116544, -1328271339354574848)), false); - assert_eq!(call!(lt_si64(5577148965131116544, 0)), false); - assert_eq!(call!(lt_si64(5577148965131116544, 1)), false); - assert_eq!(call!(lt_si64(5577148965131116544, 2)), false); - assert_eq!(call!(lt_si64(5577148965131116544, 3)), false); - assert_eq!(call!(lt_si64(5577148965131116544, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_407() { - assert_eq!(call!(lt_si64(5577148965131116544, 5577148965131116544)), false); - assert_eq!(call!(lt_si64(9223372036854775806, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(9223372036854775806, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(9223372036854775806, -1741927215160008704)), false); - assert_eq!(call!(lt_si64(9223372036854775806, -1328271339354574848)), false); - assert_eq!(call!(lt_si64(9223372036854775806, 0)), false); - assert_eq!(call!(lt_si64(9223372036854775806, 1)), false); - assert_eq!(call!(lt_si64(9223372036854775806, 2)), false); - assert_eq!(call!(lt_si64(9223372036854775806, 3)), false); - assert_eq!(call!(lt_si64(9223372036854775806, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_408() { - assert_eq!(call!(lt_si64(9223372036854775806, 5577148965131116544)), false); - assert_eq!(call!(lt_si64(9223372036854775806, 9223372036854775806)), false); - assert_eq!(call!(lt_si64(9223372036854775807, -9223372036854775808)), false); - assert_eq!(call!(lt_si64(9223372036854775807, -9223372036854775807)), false); - assert_eq!(call!(lt_si64(9223372036854775807, -1741927215160008704)), false); - assert_eq!(call!(lt_si64(9223372036854775807, -1328271339354574848)), false); - assert_eq!(call!(lt_si64(9223372036854775807, 0)), false); - assert_eq!(call!(lt_si64(9223372036854775807, 1)), false); - assert_eq!(call!(lt_si64(9223372036854775807, 2)), false); - assert_eq!(call!(lt_si64(9223372036854775807, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_409() { - assert_eq!(call!(lt_si64(9223372036854775807, 4)), false); - assert_eq!(call!(lt_si64(9223372036854775807, 5577148965131116544)), false); - assert_eq!(call!(lt_si64(9223372036854775807, 9223372036854775806)), false); - assert_eq!(call!(lt_si64(9223372036854775807, 9223372036854775807)), false); - assert_eq!(call!(lt_si64(-9223372036854775808, -9223372036854775807)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, -1741927215160008704)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, -1328271339354574848)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, 0)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, 1)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_410() { - assert_eq!(call!(lt_si64(-9223372036854775808, 3)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, 4)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, 5577148965131116544)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(-9223372036854775808, 9223372036854775807)), true); - assert_eq!(call!(lt_si64(-9223372036854775807, -1741927215160008704)), true); - assert_eq!(call!(lt_si64(-9223372036854775807, -1328271339354574848)), true); - assert_eq!(call!(lt_si64(-9223372036854775807, 0)), true); - assert_eq!(call!(lt_si64(-9223372036854775807, 1)), true); - assert_eq!(call!(lt_si64(-9223372036854775807, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_411() { - assert_eq!(call!(lt_si64(-9223372036854775807, 3)), true); - assert_eq!(call!(lt_si64(-9223372036854775807, 4)), true); - assert_eq!(call!(lt_si64(-9223372036854775807, 5577148965131116544)), true); - assert_eq!(call!(lt_si64(-9223372036854775807, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(-9223372036854775807, 9223372036854775807)), true); - assert_eq!(call!(lt_si64(-1741927215160008704, -1328271339354574848)), true); - assert_eq!(call!(lt_si64(-1741927215160008704, 0)), true); - assert_eq!(call!(lt_si64(-1741927215160008704, 1)), true); - assert_eq!(call!(lt_si64(-1741927215160008704, 2)), true); - assert_eq!(call!(lt_si64(-1741927215160008704, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_412() { - assert_eq!(call!(lt_si64(-1741927215160008704, 4)), true); - assert_eq!(call!(lt_si64(-1741927215160008704, 5577148965131116544)), true); - assert_eq!(call!(lt_si64(-1741927215160008704, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(-1741927215160008704, 9223372036854775807)), true); - assert_eq!(call!(lt_si64(-1328271339354574848, 0)), true); - assert_eq!(call!(lt_si64(-1328271339354574848, 1)), true); - assert_eq!(call!(lt_si64(-1328271339354574848, 2)), true); - assert_eq!(call!(lt_si64(-1328271339354574848, 3)), true); - assert_eq!(call!(lt_si64(-1328271339354574848, 4)), true); - assert_eq!(call!(lt_si64(-1328271339354574848, 5577148965131116544)), true); - } - #[rewrite(main)] - #[test] - fn test_413() { - assert_eq!(call!(lt_si64(-1328271339354574848, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(-1328271339354574848, 9223372036854775807)), true); - assert_eq!(call!(lt_si64(0, 1)), true); - assert_eq!(call!(lt_si64(0, 2)), true); - assert_eq!(call!(lt_si64(0, 3)), true); - assert_eq!(call!(lt_si64(0, 4)), true); - assert_eq!(call!(lt_si64(0, 5577148965131116544)), true); - assert_eq!(call!(lt_si64(0, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(0, 9223372036854775807)), true); - assert_eq!(call!(lt_si64(1, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_414() { - assert_eq!(call!(lt_si64(1, 3)), true); - assert_eq!(call!(lt_si64(1, 4)), true); - assert_eq!(call!(lt_si64(1, 5577148965131116544)), true); - assert_eq!(call!(lt_si64(1, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(1, 9223372036854775807)), true); - assert_eq!(call!(lt_si64(2, 3)), true); - assert_eq!(call!(lt_si64(2, 4)), true); - assert_eq!(call!(lt_si64(2, 5577148965131116544)), true); - assert_eq!(call!(lt_si64(2, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(2, 9223372036854775807)), true); - } - #[rewrite(main)] - #[test] - fn test_415() { - assert_eq!(call!(lt_si64(3, 4)), true); - assert_eq!(call!(lt_si64(3, 5577148965131116544)), true); - assert_eq!(call!(lt_si64(3, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(3, 9223372036854775807)), true); - assert_eq!(call!(lt_si64(4, 5577148965131116544)), true); - assert_eq!(call!(lt_si64(4, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(4, 9223372036854775807)), true); - assert_eq!(call!(lt_si64(5577148965131116544, 9223372036854775806)), true); - assert_eq!(call!(lt_si64(5577148965131116544, 9223372036854775807)), true); - assert_eq!(call!(lt_si64(9223372036854775806, 9223372036854775807)), true); - } - #[rewrite(main)] - #[test] - fn test_416() { - assert_eq!(call!(lt_si8(-128, -128)), false); - assert_eq!(call!(lt_si8(-127, -128)), false); - assert_eq!(call!(lt_si8(-127, -127)), false); - assert_eq!(call!(lt_si8(0, -128)), false); - assert_eq!(call!(lt_si8(0, -127)), false); - assert_eq!(call!(lt_si8(0, 0)), false); - assert_eq!(call!(lt_si8(1, -128)), false); - assert_eq!(call!(lt_si8(1, -127)), false); - assert_eq!(call!(lt_si8(1, 0)), false); - assert_eq!(call!(lt_si8(1, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_417() { - assert_eq!(call!(lt_si8(2, -128)), false); - assert_eq!(call!(lt_si8(2, -127)), false); - assert_eq!(call!(lt_si8(2, 0)), false); - assert_eq!(call!(lt_si8(2, 1)), false); - assert_eq!(call!(lt_si8(2, 2)), false); - assert_eq!(call!(lt_si8(3, -128)), false); - assert_eq!(call!(lt_si8(3, -127)), false); - assert_eq!(call!(lt_si8(3, 0)), false); - assert_eq!(call!(lt_si8(3, 1)), false); - assert_eq!(call!(lt_si8(3, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_418() { - assert_eq!(call!(lt_si8(3, 3)), false); - assert_eq!(call!(lt_si8(4, -128)), false); - assert_eq!(call!(lt_si8(4, -127)), false); - assert_eq!(call!(lt_si8(4, 0)), false); - assert_eq!(call!(lt_si8(4, 1)), false); - assert_eq!(call!(lt_si8(4, 2)), false); - assert_eq!(call!(lt_si8(4, 3)), false); - assert_eq!(call!(lt_si8(4, 4)), false); - assert_eq!(call!(lt_si8(16, -128)), false); - assert_eq!(call!(lt_si8(16, -127)), false); - } - #[rewrite(main)] - #[test] - fn test_419() { - assert_eq!(call!(lt_si8(16, 0)), false); - assert_eq!(call!(lt_si8(16, 1)), false); - assert_eq!(call!(lt_si8(16, 2)), false); - assert_eq!(call!(lt_si8(16, 3)), false); - assert_eq!(call!(lt_si8(16, 4)), false); - assert_eq!(call!(lt_si8(16, 16)), false); - assert_eq!(call!(lt_si8(126, -128)), false); - assert_eq!(call!(lt_si8(126, -127)), false); - assert_eq!(call!(lt_si8(126, 0)), false); - assert_eq!(call!(lt_si8(126, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_420() { - assert_eq!(call!(lt_si8(126, 2)), false); - assert_eq!(call!(lt_si8(126, 3)), false); - assert_eq!(call!(lt_si8(126, 4)), false); - assert_eq!(call!(lt_si8(126, 16)), false); - assert_eq!(call!(lt_si8(126, 126)), false); - assert_eq!(call!(lt_si8(127, -128)), false); - assert_eq!(call!(lt_si8(127, -127)), false); - assert_eq!(call!(lt_si8(127, 0)), false); - assert_eq!(call!(lt_si8(127, 1)), false); - assert_eq!(call!(lt_si8(127, 2)), false); - } - #[rewrite(main)] - #[test] - fn test_421() { - assert_eq!(call!(lt_si8(127, 3)), false); - assert_eq!(call!(lt_si8(127, 4)), false); - assert_eq!(call!(lt_si8(127, 16)), false); - assert_eq!(call!(lt_si8(127, 126)), false); - assert_eq!(call!(lt_si8(127, 127)), false); - assert_eq!(call!(lt_si8(-128, -127)), true); - assert_eq!(call!(lt_si8(-128, 0)), true); - assert_eq!(call!(lt_si8(-128, 1)), true); - assert_eq!(call!(lt_si8(-128, 2)), true); - assert_eq!(call!(lt_si8(-128, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_422() { - assert_eq!(call!(lt_si8(-128, 4)), true); - assert_eq!(call!(lt_si8(-128, 16)), true); - assert_eq!(call!(lt_si8(-128, 126)), true); - assert_eq!(call!(lt_si8(-128, 127)), true); - assert_eq!(call!(lt_si8(-127, 0)), true); - assert_eq!(call!(lt_si8(-127, 1)), true); - assert_eq!(call!(lt_si8(-127, 2)), true); - assert_eq!(call!(lt_si8(-127, 3)), true); - assert_eq!(call!(lt_si8(-127, 4)), true); - assert_eq!(call!(lt_si8(-127, 16)), true); - } - #[rewrite(main)] - #[test] - fn test_423() { - assert_eq!(call!(lt_si8(-127, 126)), true); - assert_eq!(call!(lt_si8(-127, 127)), true); - assert_eq!(call!(lt_si8(0, 1)), true); - assert_eq!(call!(lt_si8(0, 2)), true); - assert_eq!(call!(lt_si8(0, 3)), true); - assert_eq!(call!(lt_si8(0, 4)), true); - assert_eq!(call!(lt_si8(0, 16)), true); - assert_eq!(call!(lt_si8(0, 126)), true); - assert_eq!(call!(lt_si8(0, 127)), true); - assert_eq!(call!(lt_si8(1, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_424() { - assert_eq!(call!(lt_si8(1, 3)), true); - assert_eq!(call!(lt_si8(1, 4)), true); - assert_eq!(call!(lt_si8(1, 16)), true); - assert_eq!(call!(lt_si8(1, 126)), true); - assert_eq!(call!(lt_si8(1, 127)), true); - assert_eq!(call!(lt_si8(2, 3)), true); - assert_eq!(call!(lt_si8(2, 4)), true); - assert_eq!(call!(lt_si8(2, 16)), true); - assert_eq!(call!(lt_si8(2, 126)), true); - assert_eq!(call!(lt_si8(2, 127)), true); - } - #[rewrite(main)] - #[test] - fn test_425() { - assert_eq!(call!(lt_si8(3, 4)), true); - assert_eq!(call!(lt_si8(3, 16)), true); - assert_eq!(call!(lt_si8(3, 126)), true); - assert_eq!(call!(lt_si8(3, 127)), true); - assert_eq!(call!(lt_si8(4, 16)), true); - assert_eq!(call!(lt_si8(4, 126)), true); - assert_eq!(call!(lt_si8(4, 127)), true); - assert_eq!(call!(lt_si8(16, 126)), true); - assert_eq!(call!(lt_si8(16, 127)), true); - assert_eq!(call!(lt_si8(126, 127)), true); - } - #[rewrite(main)] - #[test] - fn test_426() { - assert_eq!(call!(lt_ui16(0, 0)), false); - assert_eq!(call!(lt_ui16(1, 0)), false); - assert_eq!(call!(lt_ui16(1, 1)), false); - assert_eq!(call!(lt_ui16(2, 0)), false); - assert_eq!(call!(lt_ui16(2, 1)), false); - assert_eq!(call!(lt_ui16(2, 2)), false); - assert_eq!(call!(lt_ui16(3, 0)), false); - assert_eq!(call!(lt_ui16(3, 1)), false); - assert_eq!(call!(lt_ui16(3, 2)), false); - assert_eq!(call!(lt_ui16(3, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_427() { - assert_eq!(call!(lt_ui16(4, 0)), false); - assert_eq!(call!(lt_ui16(4, 1)), false); - assert_eq!(call!(lt_ui16(4, 2)), false); - assert_eq!(call!(lt_ui16(4, 3)), false); - assert_eq!(call!(lt_ui16(4, 4)), false); - assert_eq!(call!(lt_ui16(1717, 0)), false); - assert_eq!(call!(lt_ui16(1717, 1)), false); - assert_eq!(call!(lt_ui16(1717, 2)), false); - assert_eq!(call!(lt_ui16(1717, 3)), false); - assert_eq!(call!(lt_ui16(1717, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_428() { - assert_eq!(call!(lt_ui16(1717, 1717)), false); - assert_eq!(call!(lt_ui16(17988, 0)), false); - assert_eq!(call!(lt_ui16(17988, 1)), false); - assert_eq!(call!(lt_ui16(17988, 2)), false); - assert_eq!(call!(lt_ui16(17988, 3)), false); - assert_eq!(call!(lt_ui16(17988, 4)), false); - assert_eq!(call!(lt_ui16(17988, 1717)), false); - assert_eq!(call!(lt_ui16(17988, 17988)), false); - assert_eq!(call!(lt_ui16(65096, 0)), false); - assert_eq!(call!(lt_ui16(65096, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_429() { - assert_eq!(call!(lt_ui16(65096, 2)), false); - assert_eq!(call!(lt_ui16(65096, 3)), false); - assert_eq!(call!(lt_ui16(65096, 4)), false); - assert_eq!(call!(lt_ui16(65096, 1717)), false); - assert_eq!(call!(lt_ui16(65096, 17988)), false); - assert_eq!(call!(lt_ui16(65096, 65096)), false); - assert_eq!(call!(lt_ui16(65534, 0)), false); - assert_eq!(call!(lt_ui16(65534, 1)), false); - assert_eq!(call!(lt_ui16(65534, 2)), false); - assert_eq!(call!(lt_ui16(65534, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_430() { - assert_eq!(call!(lt_ui16(65534, 4)), false); - assert_eq!(call!(lt_ui16(65534, 1717)), false); - assert_eq!(call!(lt_ui16(65534, 17988)), false); - assert_eq!(call!(lt_ui16(65534, 65096)), false); - assert_eq!(call!(lt_ui16(65534, 65534)), false); - assert_eq!(call!(lt_ui16(65535, 0)), false); - assert_eq!(call!(lt_ui16(65535, 1)), false); - assert_eq!(call!(lt_ui16(65535, 2)), false); - assert_eq!(call!(lt_ui16(65535, 3)), false); - assert_eq!(call!(lt_ui16(65535, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_431() { - assert_eq!(call!(lt_ui16(65535, 1717)), false); - assert_eq!(call!(lt_ui16(65535, 17988)), false); - assert_eq!(call!(lt_ui16(65535, 65096)), false); - assert_eq!(call!(lt_ui16(65535, 65534)), false); - assert_eq!(call!(lt_ui16(65535, 65535)), false); - assert_eq!(call!(lt_ui16(0, 1)), true); - assert_eq!(call!(lt_ui16(0, 2)), true); - assert_eq!(call!(lt_ui16(0, 3)), true); - assert_eq!(call!(lt_ui16(0, 4)), true); - assert_eq!(call!(lt_ui16(0, 1717)), true); - } - #[rewrite(main)] - #[test] - fn test_432() { - assert_eq!(call!(lt_ui16(0, 17988)), true); - assert_eq!(call!(lt_ui16(0, 65096)), true); - assert_eq!(call!(lt_ui16(0, 65534)), true); - assert_eq!(call!(lt_ui16(0, 65535)), true); - assert_eq!(call!(lt_ui16(1, 2)), true); - assert_eq!(call!(lt_ui16(1, 3)), true); - assert_eq!(call!(lt_ui16(1, 4)), true); - assert_eq!(call!(lt_ui16(1, 1717)), true); - assert_eq!(call!(lt_ui16(1, 17988)), true); - assert_eq!(call!(lt_ui16(1, 65096)), true); - } - #[rewrite(main)] - #[test] - fn test_433() { - assert_eq!(call!(lt_ui16(1, 65534)), true); - assert_eq!(call!(lt_ui16(1, 65535)), true); - assert_eq!(call!(lt_ui16(2, 3)), true); - assert_eq!(call!(lt_ui16(2, 4)), true); - assert_eq!(call!(lt_ui16(2, 1717)), true); - assert_eq!(call!(lt_ui16(2, 17988)), true); - assert_eq!(call!(lt_ui16(2, 65096)), true); - assert_eq!(call!(lt_ui16(2, 65534)), true); - assert_eq!(call!(lt_ui16(2, 65535)), true); - assert_eq!(call!(lt_ui16(3, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_434() { - assert_eq!(call!(lt_ui16(3, 1717)), true); - assert_eq!(call!(lt_ui16(3, 17988)), true); - assert_eq!(call!(lt_ui16(3, 65096)), true); - assert_eq!(call!(lt_ui16(3, 65534)), true); - assert_eq!(call!(lt_ui16(3, 65535)), true); - assert_eq!(call!(lt_ui16(4, 1717)), true); - assert_eq!(call!(lt_ui16(4, 17988)), true); - assert_eq!(call!(lt_ui16(4, 65096)), true); - assert_eq!(call!(lt_ui16(4, 65534)), true); - assert_eq!(call!(lt_ui16(4, 65535)), true); - } - #[rewrite(main)] - #[test] - fn test_435() { - assert_eq!(call!(lt_ui16(1717, 17988)), true); - assert_eq!(call!(lt_ui16(1717, 65096)), true); - assert_eq!(call!(lt_ui16(1717, 65534)), true); - assert_eq!(call!(lt_ui16(1717, 65535)), true); - assert_eq!(call!(lt_ui16(17988, 65096)), true); - assert_eq!(call!(lt_ui16(17988, 65534)), true); - assert_eq!(call!(lt_ui16(17988, 65535)), true); - assert_eq!(call!(lt_ui16(65096, 65534)), true); - assert_eq!(call!(lt_ui16(65096, 65535)), true); - assert_eq!(call!(lt_ui16(65534, 65535)), true); - } - #[rewrite(main)] - #[test] - fn test_436() { - assert_eq!(call!(lt_ui32(0, 0)), false); - assert_eq!(call!(lt_ui32(1, 0)), false); - assert_eq!(call!(lt_ui32(1, 1)), false); - assert_eq!(call!(lt_ui32(2, 0)), false); - assert_eq!(call!(lt_ui32(2, 1)), false); - assert_eq!(call!(lt_ui32(2, 2)), false); - assert_eq!(call!(lt_ui32(3, 0)), false); - assert_eq!(call!(lt_ui32(3, 1)), false); - assert_eq!(call!(lt_ui32(3, 2)), false); - assert_eq!(call!(lt_ui32(3, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_437() { - assert_eq!(call!(lt_ui32(4, 0)), false); - assert_eq!(call!(lt_ui32(4, 1)), false); - assert_eq!(call!(lt_ui32(4, 2)), false); - assert_eq!(call!(lt_ui32(4, 3)), false); - assert_eq!(call!(lt_ui32(4, 4)), false); - assert_eq!(call!(lt_ui32(2119154652, 0)), false); - assert_eq!(call!(lt_ui32(2119154652, 1)), false); - assert_eq!(call!(lt_ui32(2119154652, 2)), false); - assert_eq!(call!(lt_ui32(2119154652, 3)), false); - assert_eq!(call!(lt_ui32(2119154652, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_438() { - assert_eq!(call!(lt_ui32(2119154652, 2119154652)), false); - assert_eq!(call!(lt_ui32(3002788344, 0)), false); - assert_eq!(call!(lt_ui32(3002788344, 1)), false); - assert_eq!(call!(lt_ui32(3002788344, 2)), false); - assert_eq!(call!(lt_ui32(3002788344, 3)), false); - assert_eq!(call!(lt_ui32(3002788344, 4)), false); - assert_eq!(call!(lt_ui32(3002788344, 2119154652)), false); - assert_eq!(call!(lt_ui32(3002788344, 3002788344)), false); - assert_eq!(call!(lt_ui32(3482297128, 0)), false); - assert_eq!(call!(lt_ui32(3482297128, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_439() { - assert_eq!(call!(lt_ui32(3482297128, 2)), false); - assert_eq!(call!(lt_ui32(3482297128, 3)), false); - assert_eq!(call!(lt_ui32(3482297128, 4)), false); - assert_eq!(call!(lt_ui32(3482297128, 2119154652)), false); - assert_eq!(call!(lt_ui32(3482297128, 3002788344)), false); - assert_eq!(call!(lt_ui32(3482297128, 3482297128)), false); - assert_eq!(call!(lt_ui32(4294967294, 0)), false); - assert_eq!(call!(lt_ui32(4294967294, 1)), false); - assert_eq!(call!(lt_ui32(4294967294, 2)), false); - assert_eq!(call!(lt_ui32(4294967294, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_440() { - assert_eq!(call!(lt_ui32(4294967294, 4)), false); - assert_eq!(call!(lt_ui32(4294967294, 2119154652)), false); - assert_eq!(call!(lt_ui32(4294967294, 3002788344)), false); - assert_eq!(call!(lt_ui32(4294967294, 3482297128)), false); - assert_eq!(call!(lt_ui32(4294967294, 4294967294)), false); - assert_eq!(call!(lt_ui32(4294967295, 0)), false); - assert_eq!(call!(lt_ui32(4294967295, 1)), false); - assert_eq!(call!(lt_ui32(4294967295, 2)), false); - assert_eq!(call!(lt_ui32(4294967295, 3)), false); - assert_eq!(call!(lt_ui32(4294967295, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_441() { - assert_eq!(call!(lt_ui32(4294967295, 2119154652)), false); - assert_eq!(call!(lt_ui32(4294967295, 3002788344)), false); - assert_eq!(call!(lt_ui32(4294967295, 3482297128)), false); - assert_eq!(call!(lt_ui32(4294967295, 4294967294)), false); - assert_eq!(call!(lt_ui32(4294967295, 4294967295)), false); - assert_eq!(call!(lt_ui32(0, 1)), true); - assert_eq!(call!(lt_ui32(0, 2)), true); - assert_eq!(call!(lt_ui32(0, 3)), true); - assert_eq!(call!(lt_ui32(0, 4)), true); - assert_eq!(call!(lt_ui32(0, 2119154652)), true); - } - #[rewrite(main)] - #[test] - fn test_442() { - assert_eq!(call!(lt_ui32(0, 3002788344)), true); - assert_eq!(call!(lt_ui32(0, 3482297128)), true); - assert_eq!(call!(lt_ui32(0, 4294967294)), true); - assert_eq!(call!(lt_ui32(0, 4294967295)), true); - assert_eq!(call!(lt_ui32(1, 2)), true); - assert_eq!(call!(lt_ui32(1, 3)), true); - assert_eq!(call!(lt_ui32(1, 4)), true); - assert_eq!(call!(lt_ui32(1, 2119154652)), true); - assert_eq!(call!(lt_ui32(1, 3002788344)), true); - assert_eq!(call!(lt_ui32(1, 3482297128)), true); - } - #[rewrite(main)] - #[test] - fn test_443() { - assert_eq!(call!(lt_ui32(1, 4294967294)), true); - assert_eq!(call!(lt_ui32(1, 4294967295)), true); - assert_eq!(call!(lt_ui32(2, 3)), true); - assert_eq!(call!(lt_ui32(2, 4)), true); - assert_eq!(call!(lt_ui32(2, 2119154652)), true); - assert_eq!(call!(lt_ui32(2, 3002788344)), true); - assert_eq!(call!(lt_ui32(2, 3482297128)), true); - assert_eq!(call!(lt_ui32(2, 4294967294)), true); - assert_eq!(call!(lt_ui32(2, 4294967295)), true); - assert_eq!(call!(lt_ui32(3, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_444() { - assert_eq!(call!(lt_ui32(3, 2119154652)), true); - assert_eq!(call!(lt_ui32(3, 3002788344)), true); - assert_eq!(call!(lt_ui32(3, 3482297128)), true); - assert_eq!(call!(lt_ui32(3, 4294967294)), true); - assert_eq!(call!(lt_ui32(3, 4294967295)), true); - assert_eq!(call!(lt_ui32(4, 2119154652)), true); - assert_eq!(call!(lt_ui32(4, 3002788344)), true); - assert_eq!(call!(lt_ui32(4, 3482297128)), true); - assert_eq!(call!(lt_ui32(4, 4294967294)), true); - assert_eq!(call!(lt_ui32(4, 4294967295)), true); - } - #[rewrite(main)] - #[test] - fn test_445() { - assert_eq!(call!(lt_ui32(2119154652, 3002788344)), true); - assert_eq!(call!(lt_ui32(2119154652, 3482297128)), true); - assert_eq!(call!(lt_ui32(2119154652, 4294967294)), true); - assert_eq!(call!(lt_ui32(2119154652, 4294967295)), true); - assert_eq!(call!(lt_ui32(3002788344, 3482297128)), true); - assert_eq!(call!(lt_ui32(3002788344, 4294967294)), true); - assert_eq!(call!(lt_ui32(3002788344, 4294967295)), true); - assert_eq!(call!(lt_ui32(3482297128, 4294967294)), true); - assert_eq!(call!(lt_ui32(3482297128, 4294967295)), true); - assert_eq!(call!(lt_ui32(4294967294, 4294967295)), true); - } - #[rewrite(main)] - #[test] - fn test_446() { - assert_eq!(call!(lt_ui64(0, 0)), false); - assert_eq!(call!(lt_ui64(1, 0)), false); - assert_eq!(call!(lt_ui64(1, 1)), false); - assert_eq!(call!(lt_ui64(2, 0)), false); - assert_eq!(call!(lt_ui64(2, 1)), false); - assert_eq!(call!(lt_ui64(2, 2)), false); - assert_eq!(call!(lt_ui64(3, 0)), false); - assert_eq!(call!(lt_ui64(3, 1)), false); - assert_eq!(call!(lt_ui64(3, 2)), false); - assert_eq!(call!(lt_ui64(3, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_447() { - assert_eq!(call!(lt_ui64(4, 0)), false); - assert_eq!(call!(lt_ui64(4, 1)), false); - assert_eq!(call!(lt_ui64(4, 2)), false); - assert_eq!(call!(lt_ui64(4, 3)), false); - assert_eq!(call!(lt_ui64(4, 4)), false); - assert_eq!(call!(lt_ui64(191084152064409600, 0)), false); - assert_eq!(call!(lt_ui64(191084152064409600, 1)), false); - assert_eq!(call!(lt_ui64(191084152064409600, 2)), false); - assert_eq!(call!(lt_ui64(191084152064409600, 3)), false); - assert_eq!(call!(lt_ui64(191084152064409600, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_448() { - assert_eq!(call!(lt_ui64(191084152064409600, 191084152064409600)), false); - assert_eq!(call!(lt_ui64(11015955194427482112, 0)), false); - assert_eq!(call!(lt_ui64(11015955194427482112, 1)), false); - assert_eq!(call!(lt_ui64(11015955194427482112, 2)), false); - assert_eq!(call!(lt_ui64(11015955194427482112, 3)), false); - assert_eq!(call!(lt_ui64(11015955194427482112, 4)), false); - assert_eq!(call!(lt_ui64(11015955194427482112, 191084152064409600)), false); - assert_eq!(call!(lt_ui64(11015955194427482112, 11015955194427482112)), false); - assert_eq!(call!(lt_ui64(16990600415051759616, 0)), false); - assert_eq!(call!(lt_ui64(16990600415051759616, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_449() { - assert_eq!(call!(lt_ui64(16990600415051759616, 2)), false); - assert_eq!(call!(lt_ui64(16990600415051759616, 3)), false); - assert_eq!(call!(lt_ui64(16990600415051759616, 4)), false); - assert_eq!(call!(lt_ui64(16990600415051759616, 191084152064409600)), false); - assert_eq!(call!(lt_ui64(16990600415051759616, 11015955194427482112)), false); - assert_eq!(call!(lt_ui64(16990600415051759616, 16990600415051759616)), false); - assert_eq!(call!(lt_ui64(18446744073709551614, 0)), false); - assert_eq!(call!(lt_ui64(18446744073709551614, 1)), false); - assert_eq!(call!(lt_ui64(18446744073709551614, 2)), false); - assert_eq!(call!(lt_ui64(18446744073709551614, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_450() { - assert_eq!(call!(lt_ui64(18446744073709551614, 4)), false); - assert_eq!(call!(lt_ui64(18446744073709551614, 191084152064409600)), false); - assert_eq!(call!(lt_ui64(18446744073709551614, 11015955194427482112)), false); - assert_eq!(call!(lt_ui64(18446744073709551614, 16990600415051759616)), false); - assert_eq!(call!(lt_ui64(18446744073709551614, 18446744073709551614)), false); - assert_eq!(call!(lt_ui64(18446744073709551615, 0)), false); - assert_eq!(call!(lt_ui64(18446744073709551615, 1)), false); - assert_eq!(call!(lt_ui64(18446744073709551615, 2)), false); - assert_eq!(call!(lt_ui64(18446744073709551615, 3)), false); - assert_eq!(call!(lt_ui64(18446744073709551615, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_451() { - assert_eq!(call!(lt_ui64(18446744073709551615, 191084152064409600)), false); - assert_eq!(call!(lt_ui64(18446744073709551615, 11015955194427482112)), false); - assert_eq!(call!(lt_ui64(18446744073709551615, 16990600415051759616)), false); - assert_eq!(call!(lt_ui64(18446744073709551615, 18446744073709551614)), false); - assert_eq!(call!(lt_ui64(18446744073709551615, 18446744073709551615)), false); - assert_eq!(call!(lt_ui64(0, 1)), true); - assert_eq!(call!(lt_ui64(0, 2)), true); - assert_eq!(call!(lt_ui64(0, 3)), true); - assert_eq!(call!(lt_ui64(0, 4)), true); - assert_eq!(call!(lt_ui64(0, 191084152064409600)), true); - } - #[rewrite(main)] - #[test] - fn test_452() { - assert_eq!(call!(lt_ui64(0, 11015955194427482112)), true); - assert_eq!(call!(lt_ui64(0, 16990600415051759616)), true); - assert_eq!(call!(lt_ui64(0, 18446744073709551614)), true); - assert_eq!(call!(lt_ui64(0, 18446744073709551615)), true); - assert_eq!(call!(lt_ui64(1, 2)), true); - assert_eq!(call!(lt_ui64(1, 3)), true); - assert_eq!(call!(lt_ui64(1, 4)), true); - assert_eq!(call!(lt_ui64(1, 191084152064409600)), true); - assert_eq!(call!(lt_ui64(1, 11015955194427482112)), true); - assert_eq!(call!(lt_ui64(1, 16990600415051759616)), true); - } - #[rewrite(main)] - #[test] - fn test_453() { - assert_eq!(call!(lt_ui64(1, 18446744073709551614)), true); - assert_eq!(call!(lt_ui64(1, 18446744073709551615)), true); - assert_eq!(call!(lt_ui64(2, 3)), true); - assert_eq!(call!(lt_ui64(2, 4)), true); - assert_eq!(call!(lt_ui64(2, 191084152064409600)), true); - assert_eq!(call!(lt_ui64(2, 11015955194427482112)), true); - assert_eq!(call!(lt_ui64(2, 16990600415051759616)), true); - assert_eq!(call!(lt_ui64(2, 18446744073709551614)), true); - assert_eq!(call!(lt_ui64(2, 18446744073709551615)), true); - assert_eq!(call!(lt_ui64(3, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_454() { - assert_eq!(call!(lt_ui64(3, 191084152064409600)), true); - assert_eq!(call!(lt_ui64(3, 11015955194427482112)), true); - assert_eq!(call!(lt_ui64(3, 16990600415051759616)), true); - assert_eq!(call!(lt_ui64(3, 18446744073709551614)), true); - assert_eq!(call!(lt_ui64(3, 18446744073709551615)), true); - assert_eq!(call!(lt_ui64(4, 191084152064409600)), true); - assert_eq!(call!(lt_ui64(4, 11015955194427482112)), true); - assert_eq!(call!(lt_ui64(4, 16990600415051759616)), true); - assert_eq!(call!(lt_ui64(4, 18446744073709551614)), true); - assert_eq!(call!(lt_ui64(4, 18446744073709551615)), true); - } - #[rewrite(main)] - #[test] - fn test_455() { - assert_eq!(call!(lt_ui64(191084152064409600, 11015955194427482112)), true); - assert_eq!(call!(lt_ui64(191084152064409600, 16990600415051759616)), true); - assert_eq!(call!(lt_ui64(191084152064409600, 18446744073709551614)), true); - assert_eq!(call!(lt_ui64(191084152064409600, 18446744073709551615)), true); - assert_eq!(call!(lt_ui64(11015955194427482112, 16990600415051759616)), true); - assert_eq!(call!(lt_ui64(11015955194427482112, 18446744073709551614)), true); - assert_eq!(call!(lt_ui64(11015955194427482112, 18446744073709551615)), true); - assert_eq!(call!(lt_ui64(16990600415051759616, 18446744073709551614)), true); - assert_eq!(call!(lt_ui64(16990600415051759616, 18446744073709551615)), true); - assert_eq!(call!(lt_ui64(18446744073709551614, 18446744073709551615)), true); - } - #[rewrite(main)] - #[test] - fn test_456() { - assert_eq!(call!(lt_ui8(0, 0)), false); - assert_eq!(call!(lt_ui8(1, 0)), false); - assert_eq!(call!(lt_ui8(1, 1)), false); - assert_eq!(call!(lt_ui8(2, 0)), false); - assert_eq!(call!(lt_ui8(2, 1)), false); - assert_eq!(call!(lt_ui8(2, 2)), false); - assert_eq!(call!(lt_ui8(3, 0)), false); - assert_eq!(call!(lt_ui8(3, 1)), false); - assert_eq!(call!(lt_ui8(3, 2)), false); - assert_eq!(call!(lt_ui8(3, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_457() { - assert_eq!(call!(lt_ui8(4, 0)), false); - assert_eq!(call!(lt_ui8(4, 1)), false); - assert_eq!(call!(lt_ui8(4, 2)), false); - assert_eq!(call!(lt_ui8(4, 3)), false); - assert_eq!(call!(lt_ui8(4, 4)), false); - assert_eq!(call!(lt_ui8(72, 0)), false); - assert_eq!(call!(lt_ui8(72, 1)), false); - assert_eq!(call!(lt_ui8(72, 2)), false); - assert_eq!(call!(lt_ui8(72, 3)), false); - assert_eq!(call!(lt_ui8(72, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_458() { - assert_eq!(call!(lt_ui8(72, 72)), false); - assert_eq!(call!(lt_ui8(100, 0)), false); - assert_eq!(call!(lt_ui8(100, 1)), false); - assert_eq!(call!(lt_ui8(100, 2)), false); - assert_eq!(call!(lt_ui8(100, 3)), false); - assert_eq!(call!(lt_ui8(100, 4)), false); - assert_eq!(call!(lt_ui8(100, 72)), false); - assert_eq!(call!(lt_ui8(100, 100)), false); - assert_eq!(call!(lt_ui8(162, 0)), false); - assert_eq!(call!(lt_ui8(162, 1)), false); - } - #[rewrite(main)] - #[test] - fn test_459() { - assert_eq!(call!(lt_ui8(162, 2)), false); - assert_eq!(call!(lt_ui8(162, 3)), false); - assert_eq!(call!(lt_ui8(162, 4)), false); - assert_eq!(call!(lt_ui8(162, 72)), false); - assert_eq!(call!(lt_ui8(162, 100)), false); - assert_eq!(call!(lt_ui8(162, 162)), false); - assert_eq!(call!(lt_ui8(254, 0)), false); - assert_eq!(call!(lt_ui8(254, 1)), false); - assert_eq!(call!(lt_ui8(254, 2)), false); - assert_eq!(call!(lt_ui8(254, 3)), false); - } - #[rewrite(main)] - #[test] - fn test_460() { - assert_eq!(call!(lt_ui8(254, 4)), false); - assert_eq!(call!(lt_ui8(254, 72)), false); - assert_eq!(call!(lt_ui8(254, 100)), false); - assert_eq!(call!(lt_ui8(254, 162)), false); - assert_eq!(call!(lt_ui8(254, 254)), false); - assert_eq!(call!(lt_ui8(255, 0)), false); - assert_eq!(call!(lt_ui8(255, 1)), false); - assert_eq!(call!(lt_ui8(255, 2)), false); - assert_eq!(call!(lt_ui8(255, 3)), false); - assert_eq!(call!(lt_ui8(255, 4)), false); - } - #[rewrite(main)] - #[test] - fn test_461() { - assert_eq!(call!(lt_ui8(255, 72)), false); - assert_eq!(call!(lt_ui8(255, 100)), false); - assert_eq!(call!(lt_ui8(255, 162)), false); - assert_eq!(call!(lt_ui8(255, 254)), false); - assert_eq!(call!(lt_ui8(255, 255)), false); - assert_eq!(call!(lt_ui8(0, 1)), true); - assert_eq!(call!(lt_ui8(0, 2)), true); - assert_eq!(call!(lt_ui8(0, 3)), true); - assert_eq!(call!(lt_ui8(0, 4)), true); - assert_eq!(call!(lt_ui8(0, 72)), true); - } - #[rewrite(main)] - #[test] - fn test_462() { - assert_eq!(call!(lt_ui8(0, 100)), true); - assert_eq!(call!(lt_ui8(0, 162)), true); - assert_eq!(call!(lt_ui8(0, 254)), true); - assert_eq!(call!(lt_ui8(0, 255)), true); - assert_eq!(call!(lt_ui8(1, 2)), true); - assert_eq!(call!(lt_ui8(1, 3)), true); - assert_eq!(call!(lt_ui8(1, 4)), true); - assert_eq!(call!(lt_ui8(1, 72)), true); - assert_eq!(call!(lt_ui8(1, 100)), true); - assert_eq!(call!(lt_ui8(1, 162)), true); - } - #[rewrite(main)] - #[test] - fn test_463() { - assert_eq!(call!(lt_ui8(1, 254)), true); - assert_eq!(call!(lt_ui8(1, 255)), true); - assert_eq!(call!(lt_ui8(2, 3)), true); - assert_eq!(call!(lt_ui8(2, 4)), true); - assert_eq!(call!(lt_ui8(2, 72)), true); - assert_eq!(call!(lt_ui8(2, 100)), true); - assert_eq!(call!(lt_ui8(2, 162)), true); - assert_eq!(call!(lt_ui8(2, 254)), true); - assert_eq!(call!(lt_ui8(2, 255)), true); - assert_eq!(call!(lt_ui8(3, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_464() { - assert_eq!(call!(lt_ui8(3, 72)), true); - assert_eq!(call!(lt_ui8(3, 100)), true); - assert_eq!(call!(lt_ui8(3, 162)), true); - assert_eq!(call!(lt_ui8(3, 254)), true); - assert_eq!(call!(lt_ui8(3, 255)), true); - assert_eq!(call!(lt_ui8(4, 72)), true); - assert_eq!(call!(lt_ui8(4, 100)), true); - assert_eq!(call!(lt_ui8(4, 162)), true); - assert_eq!(call!(lt_ui8(4, 254)), true); - assert_eq!(call!(lt_ui8(4, 255)), true); - } - #[rewrite(main)] - #[test] - fn test_465() { - assert_eq!(call!(lt_ui8(72, 100)), true); - assert_eq!(call!(lt_ui8(72, 162)), true); - assert_eq!(call!(lt_ui8(72, 254)), true); - assert_eq!(call!(lt_ui8(72, 255)), true); - assert_eq!(call!(lt_ui8(100, 162)), true); - assert_eq!(call!(lt_ui8(100, 254)), true); - assert_eq!(call!(lt_ui8(100, 255)), true); - assert_eq!(call!(lt_ui8(162, 254)), true); - assert_eq!(call!(lt_ui8(162, 255)), true); - assert_eq!(call!(lt_ui8(254, 255)), true); - } - #[rewrite(main)] - #[test] - fn test_466() { - assert_eq!(call!(ne_si16(-32768, -32768)), false); - assert_eq!(call!(ne_si16(-32767, -32767)), false); - assert_eq!(call!(ne_si16(-32547, -32547)), false); - assert_eq!(call!(ne_si16(0, 0)), false); - assert_eq!(call!(ne_si16(1, 1)), false); - assert_eq!(call!(ne_si16(2, 2)), false); - assert_eq!(call!(ne_si16(3, 3)), false); - assert_eq!(call!(ne_si16(4, 4)), false); - assert_eq!(call!(ne_si16(10486, 10486)), false); - assert_eq!(call!(ne_si16(16514, 16514)), false); - } - #[rewrite(main)] - #[test] - fn test_467() { - assert_eq!(call!(ne_si16(32766, 32766)), false); - assert_eq!(call!(ne_si16(32767, 32767)), false); - assert_eq!(call!(ne_si16(-32768, -32767)), true); - assert_eq!(call!(ne_si16(-32768, -32547)), true); - assert_eq!(call!(ne_si16(-32768, 0)), true); - assert_eq!(call!(ne_si16(-32768, 1)), true); - assert_eq!(call!(ne_si16(-32768, 2)), true); - assert_eq!(call!(ne_si16(-32768, 3)), true); - assert_eq!(call!(ne_si16(-32768, 4)), true); - assert_eq!(call!(ne_si16(-32768, 10486)), true); - } - #[rewrite(main)] - #[test] - fn test_468() { - assert_eq!(call!(ne_si16(-32768, 16514)), true); - assert_eq!(call!(ne_si16(-32768, 32766)), true); - assert_eq!(call!(ne_si16(-32768, 32767)), true); - assert_eq!(call!(ne_si16(-32767, -32768)), true); - assert_eq!(call!(ne_si16(-32767, -32547)), true); - assert_eq!(call!(ne_si16(-32767, 0)), true); - assert_eq!(call!(ne_si16(-32767, 1)), true); - assert_eq!(call!(ne_si16(-32767, 2)), true); - assert_eq!(call!(ne_si16(-32767, 3)), true); - assert_eq!(call!(ne_si16(-32767, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_469() { - assert_eq!(call!(ne_si16(-32767, 10486)), true); - assert_eq!(call!(ne_si16(-32767, 16514)), true); - assert_eq!(call!(ne_si16(-32767, 32766)), true); - assert_eq!(call!(ne_si16(-32767, 32767)), true); - assert_eq!(call!(ne_si16(-32547, -32768)), true); - assert_eq!(call!(ne_si16(-32547, -32767)), true); - assert_eq!(call!(ne_si16(-32547, 0)), true); - assert_eq!(call!(ne_si16(-32547, 1)), true); - assert_eq!(call!(ne_si16(-32547, 2)), true); - assert_eq!(call!(ne_si16(-32547, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_470() { - assert_eq!(call!(ne_si16(-32547, 4)), true); - assert_eq!(call!(ne_si16(-32547, 10486)), true); - assert_eq!(call!(ne_si16(-32547, 16514)), true); - assert_eq!(call!(ne_si16(-32547, 32766)), true); - assert_eq!(call!(ne_si16(-32547, 32767)), true); - assert_eq!(call!(ne_si16(0, -32768)), true); - assert_eq!(call!(ne_si16(0, -32767)), true); - assert_eq!(call!(ne_si16(0, -32547)), true); - assert_eq!(call!(ne_si16(0, 1)), true); - assert_eq!(call!(ne_si16(0, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_471() { - assert_eq!(call!(ne_si16(0, 3)), true); - assert_eq!(call!(ne_si16(0, 4)), true); - assert_eq!(call!(ne_si16(0, 10486)), true); - assert_eq!(call!(ne_si16(0, 16514)), true); - assert_eq!(call!(ne_si16(0, 32766)), true); - assert_eq!(call!(ne_si16(0, 32767)), true); - assert_eq!(call!(ne_si16(1, -32768)), true); - assert_eq!(call!(ne_si16(1, -32767)), true); - assert_eq!(call!(ne_si16(1, -32547)), true); - assert_eq!(call!(ne_si16(1, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_472() { - assert_eq!(call!(ne_si16(1, 2)), true); - assert_eq!(call!(ne_si16(1, 3)), true); - assert_eq!(call!(ne_si16(1, 4)), true); - assert_eq!(call!(ne_si16(1, 10486)), true); - assert_eq!(call!(ne_si16(1, 16514)), true); - assert_eq!(call!(ne_si16(1, 32766)), true); - assert_eq!(call!(ne_si16(1, 32767)), true); - assert_eq!(call!(ne_si16(2, -32768)), true); - assert_eq!(call!(ne_si16(2, -32767)), true); - assert_eq!(call!(ne_si16(2, -32547)), true); - } - #[rewrite(main)] - #[test] - fn test_473() { - assert_eq!(call!(ne_si16(2, 0)), true); - assert_eq!(call!(ne_si16(2, 1)), true); - assert_eq!(call!(ne_si16(2, 3)), true); - assert_eq!(call!(ne_si16(2, 4)), true); - assert_eq!(call!(ne_si16(2, 10486)), true); - assert_eq!(call!(ne_si16(2, 16514)), true); - assert_eq!(call!(ne_si16(2, 32766)), true); - assert_eq!(call!(ne_si16(2, 32767)), true); - assert_eq!(call!(ne_si16(3, -32768)), true); - assert_eq!(call!(ne_si16(3, -32767)), true); - } - #[rewrite(main)] - #[test] - fn test_474() { - assert_eq!(call!(ne_si16(3, -32547)), true); - assert_eq!(call!(ne_si16(3, 0)), true); - assert_eq!(call!(ne_si16(3, 1)), true); - assert_eq!(call!(ne_si16(3, 2)), true); - assert_eq!(call!(ne_si16(3, 4)), true); - assert_eq!(call!(ne_si16(3, 10486)), true); - assert_eq!(call!(ne_si16(3, 16514)), true); - assert_eq!(call!(ne_si16(3, 32766)), true); - assert_eq!(call!(ne_si16(3, 32767)), true); - assert_eq!(call!(ne_si16(4, -32768)), true); - } - #[rewrite(main)] - #[test] - fn test_475() { - assert_eq!(call!(ne_si16(4, -32767)), true); - assert_eq!(call!(ne_si16(4, -32547)), true); - assert_eq!(call!(ne_si16(4, 0)), true); - assert_eq!(call!(ne_si16(4, 1)), true); - assert_eq!(call!(ne_si16(4, 2)), true); - assert_eq!(call!(ne_si16(4, 3)), true); - assert_eq!(call!(ne_si16(4, 10486)), true); - assert_eq!(call!(ne_si16(4, 16514)), true); - assert_eq!(call!(ne_si16(4, 32766)), true); - assert_eq!(call!(ne_si16(4, 32767)), true); - } - #[rewrite(main)] - #[test] - fn test_476() { - assert_eq!(call!(ne_si16(10486, -32768)), true); - assert_eq!(call!(ne_si16(10486, -32767)), true); - assert_eq!(call!(ne_si16(10486, -32547)), true); - assert_eq!(call!(ne_si16(10486, 0)), true); - assert_eq!(call!(ne_si16(10486, 1)), true); - assert_eq!(call!(ne_si16(10486, 2)), true); - assert_eq!(call!(ne_si16(10486, 3)), true); - assert_eq!(call!(ne_si16(10486, 4)), true); - assert_eq!(call!(ne_si16(10486, 16514)), true); - assert_eq!(call!(ne_si16(10486, 32766)), true); - } - #[rewrite(main)] - #[test] - fn test_477() { - assert_eq!(call!(ne_si16(10486, 32767)), true); - assert_eq!(call!(ne_si16(16514, -32768)), true); - assert_eq!(call!(ne_si16(16514, -32767)), true); - assert_eq!(call!(ne_si16(16514, -32547)), true); - assert_eq!(call!(ne_si16(16514, 0)), true); - assert_eq!(call!(ne_si16(16514, 1)), true); - assert_eq!(call!(ne_si16(16514, 2)), true); - assert_eq!(call!(ne_si16(16514, 3)), true); - assert_eq!(call!(ne_si16(16514, 4)), true); - assert_eq!(call!(ne_si16(16514, 10486)), true); - } - #[rewrite(main)] - #[test] - fn test_478() { - assert_eq!(call!(ne_si16(16514, 32766)), true); - assert_eq!(call!(ne_si16(16514, 32767)), true); - assert_eq!(call!(ne_si16(32766, -32768)), true); - assert_eq!(call!(ne_si16(32766, -32767)), true); - assert_eq!(call!(ne_si16(32766, -32547)), true); - assert_eq!(call!(ne_si16(32766, 0)), true); - assert_eq!(call!(ne_si16(32766, 1)), true); - assert_eq!(call!(ne_si16(32766, 2)), true); - assert_eq!(call!(ne_si16(32766, 3)), true); - assert_eq!(call!(ne_si16(32766, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_479() { - assert_eq!(call!(ne_si16(32766, 10486)), true); - assert_eq!(call!(ne_si16(32766, 16514)), true); - assert_eq!(call!(ne_si16(32766, 32767)), true); - assert_eq!(call!(ne_si16(32767, -32768)), true); - assert_eq!(call!(ne_si16(32767, -32767)), true); - assert_eq!(call!(ne_si16(32767, -32547)), true); - assert_eq!(call!(ne_si16(32767, 0)), true); - assert_eq!(call!(ne_si16(32767, 1)), true); - assert_eq!(call!(ne_si16(32767, 2)), true); - assert_eq!(call!(ne_si16(32767, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_480() { - assert_eq!(call!(ne_si16(32767, 4)), true); - assert_eq!(call!(ne_si16(32767, 10486)), true); - assert_eq!(call!(ne_si16(32767, 16514)), true); - assert_eq!(call!(ne_si16(32767, 32766)), true); - assert_eq!(call!(ne_si32(-2147483648, -2147483648)), false); - assert_eq!(call!(ne_si32(-2147483647, -2147483647)), false); - assert_eq!(call!(ne_si32(-1713183800, -1713183800)), false); - assert_eq!(call!(ne_si32(-1252582164, -1252582164)), false); - assert_eq!(call!(ne_si32(-1035405763, -1035405763)), false); - assert_eq!(call!(ne_si32(0, 0)), false); - } - #[rewrite(main)] - #[test] - fn test_481() { - assert_eq!(call!(ne_si32(1, 1)), false); - assert_eq!(call!(ne_si32(2, 2)), false); - assert_eq!(call!(ne_si32(3, 3)), false); - assert_eq!(call!(ne_si32(4, 4)), false); - assert_eq!(call!(ne_si32(2147483646, 2147483646)), false); - assert_eq!(call!(ne_si32(2147483647, 2147483647)), false); - assert_eq!(call!(ne_si32(-2147483648, -2147483647)), true); - assert_eq!(call!(ne_si32(-2147483648, -1713183800)), true); - assert_eq!(call!(ne_si32(-2147483648, -1252582164)), true); - assert_eq!(call!(ne_si32(-2147483648, -1035405763)), true); - } - #[rewrite(main)] - #[test] - fn test_482() { - assert_eq!(call!(ne_si32(-2147483648, 0)), true); - assert_eq!(call!(ne_si32(-2147483648, 1)), true); - assert_eq!(call!(ne_si32(-2147483648, 2)), true); - assert_eq!(call!(ne_si32(-2147483648, 3)), true); - assert_eq!(call!(ne_si32(-2147483648, 4)), true); - assert_eq!(call!(ne_si32(-2147483648, 2147483646)), true); - assert_eq!(call!(ne_si32(-2147483648, 2147483647)), true); - assert_eq!(call!(ne_si32(-2147483647, -2147483648)), true); - assert_eq!(call!(ne_si32(-2147483647, -1713183800)), true); - assert_eq!(call!(ne_si32(-2147483647, -1252582164)), true); - } - #[rewrite(main)] - #[test] - fn test_483() { - assert_eq!(call!(ne_si32(-2147483647, -1035405763)), true); - assert_eq!(call!(ne_si32(-2147483647, 0)), true); - assert_eq!(call!(ne_si32(-2147483647, 1)), true); - assert_eq!(call!(ne_si32(-2147483647, 2)), true); - assert_eq!(call!(ne_si32(-2147483647, 3)), true); - assert_eq!(call!(ne_si32(-2147483647, 4)), true); - assert_eq!(call!(ne_si32(-2147483647, 2147483646)), true); - assert_eq!(call!(ne_si32(-2147483647, 2147483647)), true); - assert_eq!(call!(ne_si32(-1713183800, -2147483648)), true); - assert_eq!(call!(ne_si32(-1713183800, -2147483647)), true); - } - #[rewrite(main)] - #[test] - fn test_484() { - assert_eq!(call!(ne_si32(-1713183800, -1252582164)), true); - assert_eq!(call!(ne_si32(-1713183800, -1035405763)), true); - assert_eq!(call!(ne_si32(-1713183800, 0)), true); - assert_eq!(call!(ne_si32(-1713183800, 1)), true); - assert_eq!(call!(ne_si32(-1713183800, 2)), true); - assert_eq!(call!(ne_si32(-1713183800, 3)), true); - assert_eq!(call!(ne_si32(-1713183800, 4)), true); - assert_eq!(call!(ne_si32(-1713183800, 2147483646)), true); - assert_eq!(call!(ne_si32(-1713183800, 2147483647)), true); - assert_eq!(call!(ne_si32(-1252582164, -2147483648)), true); - } - #[rewrite(main)] - #[test] - fn test_485() { - assert_eq!(call!(ne_si32(-1252582164, -2147483647)), true); - assert_eq!(call!(ne_si32(-1252582164, -1713183800)), true); - assert_eq!(call!(ne_si32(-1252582164, -1035405763)), true); - assert_eq!(call!(ne_si32(-1252582164, 0)), true); - assert_eq!(call!(ne_si32(-1252582164, 1)), true); - assert_eq!(call!(ne_si32(-1252582164, 2)), true); - assert_eq!(call!(ne_si32(-1252582164, 3)), true); - assert_eq!(call!(ne_si32(-1252582164, 4)), true); - assert_eq!(call!(ne_si32(-1252582164, 2147483646)), true); - assert_eq!(call!(ne_si32(-1252582164, 2147483647)), true); - } - #[rewrite(main)] - #[test] - fn test_486() { - assert_eq!(call!(ne_si32(-1035405763, -2147483648)), true); - assert_eq!(call!(ne_si32(-1035405763, -2147483647)), true); - assert_eq!(call!(ne_si32(-1035405763, -1713183800)), true); - assert_eq!(call!(ne_si32(-1035405763, -1252582164)), true); - assert_eq!(call!(ne_si32(-1035405763, 0)), true); - assert_eq!(call!(ne_si32(-1035405763, 1)), true); - assert_eq!(call!(ne_si32(-1035405763, 2)), true); - assert_eq!(call!(ne_si32(-1035405763, 3)), true); - assert_eq!(call!(ne_si32(-1035405763, 4)), true); - assert_eq!(call!(ne_si32(-1035405763, 2147483646)), true); - } - #[rewrite(main)] - #[test] - fn test_487() { - assert_eq!(call!(ne_si32(-1035405763, 2147483647)), true); - assert_eq!(call!(ne_si32(0, -2147483648)), true); - assert_eq!(call!(ne_si32(0, -2147483647)), true); - assert_eq!(call!(ne_si32(0, -1713183800)), true); - assert_eq!(call!(ne_si32(0, -1252582164)), true); - assert_eq!(call!(ne_si32(0, -1035405763)), true); - assert_eq!(call!(ne_si32(0, 1)), true); - assert_eq!(call!(ne_si32(0, 2)), true); - assert_eq!(call!(ne_si32(0, 3)), true); - assert_eq!(call!(ne_si32(0, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_488() { - assert_eq!(call!(ne_si32(0, 2147483646)), true); - assert_eq!(call!(ne_si32(0, 2147483647)), true); - assert_eq!(call!(ne_si32(1, -2147483648)), true); - assert_eq!(call!(ne_si32(1, -2147483647)), true); - assert_eq!(call!(ne_si32(1, -1713183800)), true); - assert_eq!(call!(ne_si32(1, -1252582164)), true); - assert_eq!(call!(ne_si32(1, -1035405763)), true); - assert_eq!(call!(ne_si32(1, 0)), true); - assert_eq!(call!(ne_si32(1, 2)), true); - assert_eq!(call!(ne_si32(1, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_489() { - assert_eq!(call!(ne_si32(1, 4)), true); - assert_eq!(call!(ne_si32(1, 2147483646)), true); - assert_eq!(call!(ne_si32(1, 2147483647)), true); - assert_eq!(call!(ne_si32(2, -2147483648)), true); - assert_eq!(call!(ne_si32(2, -2147483647)), true); - assert_eq!(call!(ne_si32(2, -1713183800)), true); - assert_eq!(call!(ne_si32(2, -1252582164)), true); - assert_eq!(call!(ne_si32(2, -1035405763)), true); - assert_eq!(call!(ne_si32(2, 0)), true); - assert_eq!(call!(ne_si32(2, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_490() { - assert_eq!(call!(ne_si32(2, 3)), true); - assert_eq!(call!(ne_si32(2, 4)), true); - assert_eq!(call!(ne_si32(2, 2147483646)), true); - assert_eq!(call!(ne_si32(2, 2147483647)), true); - assert_eq!(call!(ne_si32(3, -2147483648)), true); - assert_eq!(call!(ne_si32(3, -2147483647)), true); - assert_eq!(call!(ne_si32(3, -1713183800)), true); - assert_eq!(call!(ne_si32(3, -1252582164)), true); - assert_eq!(call!(ne_si32(3, -1035405763)), true); - assert_eq!(call!(ne_si32(3, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_491() { - assert_eq!(call!(ne_si32(3, 1)), true); - assert_eq!(call!(ne_si32(3, 2)), true); - assert_eq!(call!(ne_si32(3, 4)), true); - assert_eq!(call!(ne_si32(3, 2147483646)), true); - assert_eq!(call!(ne_si32(3, 2147483647)), true); - assert_eq!(call!(ne_si32(4, -2147483648)), true); - assert_eq!(call!(ne_si32(4, -2147483647)), true); - assert_eq!(call!(ne_si32(4, -1713183800)), true); - assert_eq!(call!(ne_si32(4, -1252582164)), true); - assert_eq!(call!(ne_si32(4, -1035405763)), true); - } - #[rewrite(main)] - #[test] - fn test_492() { - assert_eq!(call!(ne_si32(4, 0)), true); - assert_eq!(call!(ne_si32(4, 1)), true); - assert_eq!(call!(ne_si32(4, 2)), true); - assert_eq!(call!(ne_si32(4, 3)), true); - assert_eq!(call!(ne_si32(4, 2147483646)), true); - assert_eq!(call!(ne_si32(4, 2147483647)), true); - assert_eq!(call!(ne_si32(2147483646, -2147483648)), true); - assert_eq!(call!(ne_si32(2147483646, -2147483647)), true); - assert_eq!(call!(ne_si32(2147483646, -1713183800)), true); - assert_eq!(call!(ne_si32(2147483646, -1252582164)), true); - } - #[rewrite(main)] - #[test] - fn test_493() { - assert_eq!(call!(ne_si32(2147483646, -1035405763)), true); - assert_eq!(call!(ne_si32(2147483646, 0)), true); - assert_eq!(call!(ne_si32(2147483646, 1)), true); - assert_eq!(call!(ne_si32(2147483646, 2)), true); - assert_eq!(call!(ne_si32(2147483646, 3)), true); - assert_eq!(call!(ne_si32(2147483646, 4)), true); - assert_eq!(call!(ne_si32(2147483646, 2147483647)), true); - assert_eq!(call!(ne_si32(2147483647, -2147483648)), true); - assert_eq!(call!(ne_si32(2147483647, -2147483647)), true); - assert_eq!(call!(ne_si32(2147483647, -1713183800)), true); - } - #[rewrite(main)] - #[test] - fn test_494() { - assert_eq!(call!(ne_si32(2147483647, -1252582164)), true); - assert_eq!(call!(ne_si32(2147483647, -1035405763)), true); - assert_eq!(call!(ne_si32(2147483647, 0)), true); - assert_eq!(call!(ne_si32(2147483647, 1)), true); - assert_eq!(call!(ne_si32(2147483647, 2)), true); - assert_eq!(call!(ne_si32(2147483647, 3)), true); - assert_eq!(call!(ne_si32(2147483647, 4)), true); - assert_eq!(call!(ne_si32(2147483647, 2147483646)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, -9223372036854775808)), false); - assert_eq!(call!(ne_si64(-9223372036854775807, -9223372036854775807)), false); - } - #[rewrite(main)] - #[test] - fn test_495() { - assert_eq!(call!(ne_si64(-1741927215160008704, -1741927215160008704)), false); - assert_eq!(call!(ne_si64(-1328271339354574848, -1328271339354574848)), false); - assert_eq!(call!(ne_si64(0, 0)), false); - assert_eq!(call!(ne_si64(1, 1)), false); - assert_eq!(call!(ne_si64(2, 2)), false); - assert_eq!(call!(ne_si64(3, 3)), false); - assert_eq!(call!(ne_si64(4, 4)), false); - assert_eq!(call!(ne_si64(5577148965131116544, 5577148965131116544)), false); - assert_eq!(call!(ne_si64(9223372036854775806, 9223372036854775806)), false); - assert_eq!(call!(ne_si64(9223372036854775807, 9223372036854775807)), false); - } - #[rewrite(main)] - #[test] - fn test_496() { - assert_eq!(call!(ne_si64(-9223372036854775808, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, 0)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, 1)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, 2)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, 3)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, 4)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, 5577148965131116544)), true); - assert_eq!(call!(ne_si64(-9223372036854775808, 9223372036854775806)), true); - } - #[rewrite(main)] - #[test] - fn test_497() { - assert_eq!(call!(ne_si64(-9223372036854775808, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, 0)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, 1)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, 2)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, 3)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, 4)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, 5577148965131116544)), true); - } - #[rewrite(main)] - #[test] - fn test_498() { - assert_eq!(call!(ne_si64(-9223372036854775807, 9223372036854775806)), true); - assert_eq!(call!(ne_si64(-9223372036854775807, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, 0)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, 1)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, 2)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, 3)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_499() { - assert_eq!(call!(ne_si64(-1741927215160008704, 5577148965131116544)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, 9223372036854775806)), true); - assert_eq!(call!(ne_si64(-1741927215160008704, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, 0)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, 1)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, 2)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_500() { - assert_eq!(call!(ne_si64(-1328271339354574848, 4)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, 5577148965131116544)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, 9223372036854775806)), true); - assert_eq!(call!(ne_si64(-1328271339354574848, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(0, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(0, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(0, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(0, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(0, 1)), true); - assert_eq!(call!(ne_si64(0, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_501() { - assert_eq!(call!(ne_si64(0, 3)), true); - assert_eq!(call!(ne_si64(0, 4)), true); - assert_eq!(call!(ne_si64(0, 5577148965131116544)), true); - assert_eq!(call!(ne_si64(0, 9223372036854775806)), true); - assert_eq!(call!(ne_si64(0, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(1, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(1, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(1, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(1, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(1, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_502() { - assert_eq!(call!(ne_si64(1, 2)), true); - assert_eq!(call!(ne_si64(1, 3)), true); - assert_eq!(call!(ne_si64(1, 4)), true); - assert_eq!(call!(ne_si64(1, 5577148965131116544)), true); - assert_eq!(call!(ne_si64(1, 9223372036854775806)), true); - assert_eq!(call!(ne_si64(1, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(2, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(2, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(2, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(2, -1328271339354574848)), true); - } - #[rewrite(main)] - #[test] - fn test_503() { - assert_eq!(call!(ne_si64(2, 0)), true); - assert_eq!(call!(ne_si64(2, 1)), true); - assert_eq!(call!(ne_si64(2, 3)), true); - assert_eq!(call!(ne_si64(2, 4)), true); - assert_eq!(call!(ne_si64(2, 5577148965131116544)), true); - assert_eq!(call!(ne_si64(2, 9223372036854775806)), true); - assert_eq!(call!(ne_si64(2, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(3, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(3, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(3, -1741927215160008704)), true); - } - #[rewrite(main)] - #[test] - fn test_504() { - assert_eq!(call!(ne_si64(3, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(3, 0)), true); - assert_eq!(call!(ne_si64(3, 1)), true); - assert_eq!(call!(ne_si64(3, 2)), true); - assert_eq!(call!(ne_si64(3, 4)), true); - assert_eq!(call!(ne_si64(3, 5577148965131116544)), true); - assert_eq!(call!(ne_si64(3, 9223372036854775806)), true); - assert_eq!(call!(ne_si64(3, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(4, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(4, -9223372036854775807)), true); - } - #[rewrite(main)] - #[test] - fn test_505() { - assert_eq!(call!(ne_si64(4, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(4, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(4, 0)), true); - assert_eq!(call!(ne_si64(4, 1)), true); - assert_eq!(call!(ne_si64(4, 2)), true); - assert_eq!(call!(ne_si64(4, 3)), true); - assert_eq!(call!(ne_si64(4, 5577148965131116544)), true); - assert_eq!(call!(ne_si64(4, 9223372036854775806)), true); - assert_eq!(call!(ne_si64(4, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(5577148965131116544, -9223372036854775808)), true); - } - #[rewrite(main)] - #[test] - fn test_506() { - assert_eq!(call!(ne_si64(5577148965131116544, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(5577148965131116544, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(5577148965131116544, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(5577148965131116544, 0)), true); - assert_eq!(call!(ne_si64(5577148965131116544, 1)), true); - assert_eq!(call!(ne_si64(5577148965131116544, 2)), true); - assert_eq!(call!(ne_si64(5577148965131116544, 3)), true); - assert_eq!(call!(ne_si64(5577148965131116544, 4)), true); - assert_eq!(call!(ne_si64(5577148965131116544, 9223372036854775806)), true); - assert_eq!(call!(ne_si64(5577148965131116544, 9223372036854775807)), true); - } - #[rewrite(main)] - #[test] - fn test_507() { - assert_eq!(call!(ne_si64(9223372036854775806, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(9223372036854775806, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(9223372036854775806, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(9223372036854775806, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(9223372036854775806, 0)), true); - assert_eq!(call!(ne_si64(9223372036854775806, 1)), true); - assert_eq!(call!(ne_si64(9223372036854775806, 2)), true); - assert_eq!(call!(ne_si64(9223372036854775806, 3)), true); - assert_eq!(call!(ne_si64(9223372036854775806, 4)), true); - assert_eq!(call!(ne_si64(9223372036854775806, 5577148965131116544)), true); - } - #[rewrite(main)] - #[test] - fn test_508() { - assert_eq!(call!(ne_si64(9223372036854775806, 9223372036854775807)), true); - assert_eq!(call!(ne_si64(9223372036854775807, -9223372036854775808)), true); - assert_eq!(call!(ne_si64(9223372036854775807, -9223372036854775807)), true); - assert_eq!(call!(ne_si64(9223372036854775807, -1741927215160008704)), true); - assert_eq!(call!(ne_si64(9223372036854775807, -1328271339354574848)), true); - assert_eq!(call!(ne_si64(9223372036854775807, 0)), true); - assert_eq!(call!(ne_si64(9223372036854775807, 1)), true); - assert_eq!(call!(ne_si64(9223372036854775807, 2)), true); - assert_eq!(call!(ne_si64(9223372036854775807, 3)), true); - assert_eq!(call!(ne_si64(9223372036854775807, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_509() { - assert_eq!(call!(ne_si64(9223372036854775807, 5577148965131116544)), true); - assert_eq!(call!(ne_si64(9223372036854775807, 9223372036854775806)), true); - assert_eq!(call!(ne_si8(-128, -128)), false); - assert_eq!(call!(ne_si8(-127, -127)), false); - assert_eq!(call!(ne_si8(0, 0)), false); - assert_eq!(call!(ne_si8(1, 1)), false); - assert_eq!(call!(ne_si8(2, 2)), false); - assert_eq!(call!(ne_si8(3, 3)), false); - assert_eq!(call!(ne_si8(4, 4)), false); - assert_eq!(call!(ne_si8(16, 16)), false); - } - #[rewrite(main)] - #[test] - fn test_510() { - assert_eq!(call!(ne_si8(126, 126)), false); - assert_eq!(call!(ne_si8(127, 127)), false); - assert_eq!(call!(ne_si8(-128, -127)), true); - assert_eq!(call!(ne_si8(-128, 0)), true); - assert_eq!(call!(ne_si8(-128, 1)), true); - assert_eq!(call!(ne_si8(-128, 2)), true); - assert_eq!(call!(ne_si8(-128, 3)), true); - assert_eq!(call!(ne_si8(-128, 4)), true); - assert_eq!(call!(ne_si8(-128, 16)), true); - assert_eq!(call!(ne_si8(-128, 126)), true); - } - #[rewrite(main)] - #[test] - fn test_511() { - assert_eq!(call!(ne_si8(-128, 127)), true); - assert_eq!(call!(ne_si8(-127, -128)), true); - assert_eq!(call!(ne_si8(-127, 0)), true); - assert_eq!(call!(ne_si8(-127, 1)), true); - assert_eq!(call!(ne_si8(-127, 2)), true); - assert_eq!(call!(ne_si8(-127, 3)), true); - assert_eq!(call!(ne_si8(-127, 4)), true); - assert_eq!(call!(ne_si8(-127, 16)), true); - assert_eq!(call!(ne_si8(-127, 126)), true); - assert_eq!(call!(ne_si8(-127, 127)), true); - } - #[rewrite(main)] - #[test] - fn test_512() { - assert_eq!(call!(ne_si8(0, -128)), true); - assert_eq!(call!(ne_si8(0, -127)), true); - assert_eq!(call!(ne_si8(0, 1)), true); - assert_eq!(call!(ne_si8(0, 2)), true); - assert_eq!(call!(ne_si8(0, 3)), true); - assert_eq!(call!(ne_si8(0, 4)), true); - assert_eq!(call!(ne_si8(0, 16)), true); - assert_eq!(call!(ne_si8(0, 126)), true); - assert_eq!(call!(ne_si8(0, 127)), true); - assert_eq!(call!(ne_si8(1, -128)), true); - } - #[rewrite(main)] - #[test] - fn test_513() { - assert_eq!(call!(ne_si8(1, -127)), true); - assert_eq!(call!(ne_si8(1, 0)), true); - assert_eq!(call!(ne_si8(1, 2)), true); - assert_eq!(call!(ne_si8(1, 3)), true); - assert_eq!(call!(ne_si8(1, 4)), true); - assert_eq!(call!(ne_si8(1, 16)), true); - assert_eq!(call!(ne_si8(1, 126)), true); - assert_eq!(call!(ne_si8(1, 127)), true); - assert_eq!(call!(ne_si8(2, -128)), true); - assert_eq!(call!(ne_si8(2, -127)), true); - } - #[rewrite(main)] - #[test] - fn test_514() { - assert_eq!(call!(ne_si8(2, 0)), true); - assert_eq!(call!(ne_si8(2, 1)), true); - assert_eq!(call!(ne_si8(2, 3)), true); - assert_eq!(call!(ne_si8(2, 4)), true); - assert_eq!(call!(ne_si8(2, 16)), true); - assert_eq!(call!(ne_si8(2, 126)), true); - assert_eq!(call!(ne_si8(2, 127)), true); - assert_eq!(call!(ne_si8(3, -128)), true); - assert_eq!(call!(ne_si8(3, -127)), true); - assert_eq!(call!(ne_si8(3, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_515() { - assert_eq!(call!(ne_si8(3, 1)), true); - assert_eq!(call!(ne_si8(3, 2)), true); - assert_eq!(call!(ne_si8(3, 4)), true); - assert_eq!(call!(ne_si8(3, 16)), true); - assert_eq!(call!(ne_si8(3, 126)), true); - assert_eq!(call!(ne_si8(3, 127)), true); - assert_eq!(call!(ne_si8(4, -128)), true); - assert_eq!(call!(ne_si8(4, -127)), true); - assert_eq!(call!(ne_si8(4, 0)), true); - assert_eq!(call!(ne_si8(4, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_516() { - assert_eq!(call!(ne_si8(4, 2)), true); - assert_eq!(call!(ne_si8(4, 3)), true); - assert_eq!(call!(ne_si8(4, 16)), true); - assert_eq!(call!(ne_si8(4, 126)), true); - assert_eq!(call!(ne_si8(4, 127)), true); - assert_eq!(call!(ne_si8(16, -128)), true); - assert_eq!(call!(ne_si8(16, -127)), true); - assert_eq!(call!(ne_si8(16, 0)), true); - assert_eq!(call!(ne_si8(16, 1)), true); - assert_eq!(call!(ne_si8(16, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_517() { - assert_eq!(call!(ne_si8(16, 3)), true); - assert_eq!(call!(ne_si8(16, 4)), true); - assert_eq!(call!(ne_si8(16, 126)), true); - assert_eq!(call!(ne_si8(16, 127)), true); - assert_eq!(call!(ne_si8(126, -128)), true); - assert_eq!(call!(ne_si8(126, -127)), true); - assert_eq!(call!(ne_si8(126, 0)), true); - assert_eq!(call!(ne_si8(126, 1)), true); - assert_eq!(call!(ne_si8(126, 2)), true); - assert_eq!(call!(ne_si8(126, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_518() { - assert_eq!(call!(ne_si8(126, 4)), true); - assert_eq!(call!(ne_si8(126, 16)), true); - assert_eq!(call!(ne_si8(126, 127)), true); - assert_eq!(call!(ne_si8(127, -128)), true); - assert_eq!(call!(ne_si8(127, -127)), true); - assert_eq!(call!(ne_si8(127, 0)), true); - assert_eq!(call!(ne_si8(127, 1)), true); - assert_eq!(call!(ne_si8(127, 2)), true); - assert_eq!(call!(ne_si8(127, 3)), true); - assert_eq!(call!(ne_si8(127, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_519() { - assert_eq!(call!(ne_si8(127, 16)), true); - assert_eq!(call!(ne_si8(127, 126)), true); - assert_eq!(call!(ne_ui16(0, 0)), false); - assert_eq!(call!(ne_ui16(1, 1)), false); - assert_eq!(call!(ne_ui16(2, 2)), false); - assert_eq!(call!(ne_ui16(3, 3)), false); - assert_eq!(call!(ne_ui16(4, 4)), false); - assert_eq!(call!(ne_ui16(1717, 1717)), false); - assert_eq!(call!(ne_ui16(17988, 17988)), false); - assert_eq!(call!(ne_ui16(65096, 65096)), false); - } - #[rewrite(main)] - #[test] - fn test_520() { - assert_eq!(call!(ne_ui16(65534, 65534)), false); - assert_eq!(call!(ne_ui16(65535, 65535)), false); - assert_eq!(call!(ne_ui16(0, 1)), true); - assert_eq!(call!(ne_ui16(0, 2)), true); - assert_eq!(call!(ne_ui16(0, 3)), true); - assert_eq!(call!(ne_ui16(0, 4)), true); - assert_eq!(call!(ne_ui16(0, 1717)), true); - assert_eq!(call!(ne_ui16(0, 17988)), true); - assert_eq!(call!(ne_ui16(0, 65096)), true); - assert_eq!(call!(ne_ui16(0, 65534)), true); - } - #[rewrite(main)] - #[test] - fn test_521() { - assert_eq!(call!(ne_ui16(0, 65535)), true); - assert_eq!(call!(ne_ui16(1, 0)), true); - assert_eq!(call!(ne_ui16(1, 2)), true); - assert_eq!(call!(ne_ui16(1, 3)), true); - assert_eq!(call!(ne_ui16(1, 4)), true); - assert_eq!(call!(ne_ui16(1, 1717)), true); - assert_eq!(call!(ne_ui16(1, 17988)), true); - assert_eq!(call!(ne_ui16(1, 65096)), true); - assert_eq!(call!(ne_ui16(1, 65534)), true); - assert_eq!(call!(ne_ui16(1, 65535)), true); - } - #[rewrite(main)] - #[test] - fn test_522() { - assert_eq!(call!(ne_ui16(2, 0)), true); - assert_eq!(call!(ne_ui16(2, 1)), true); - assert_eq!(call!(ne_ui16(2, 3)), true); - assert_eq!(call!(ne_ui16(2, 4)), true); - assert_eq!(call!(ne_ui16(2, 1717)), true); - assert_eq!(call!(ne_ui16(2, 17988)), true); - assert_eq!(call!(ne_ui16(2, 65096)), true); - assert_eq!(call!(ne_ui16(2, 65534)), true); - assert_eq!(call!(ne_ui16(2, 65535)), true); - assert_eq!(call!(ne_ui16(3, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_523() { - assert_eq!(call!(ne_ui16(3, 1)), true); - assert_eq!(call!(ne_ui16(3, 2)), true); - assert_eq!(call!(ne_ui16(3, 4)), true); - assert_eq!(call!(ne_ui16(3, 1717)), true); - assert_eq!(call!(ne_ui16(3, 17988)), true); - assert_eq!(call!(ne_ui16(3, 65096)), true); - assert_eq!(call!(ne_ui16(3, 65534)), true); - assert_eq!(call!(ne_ui16(3, 65535)), true); - assert_eq!(call!(ne_ui16(4, 0)), true); - assert_eq!(call!(ne_ui16(4, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_524() { - assert_eq!(call!(ne_ui16(4, 2)), true); - assert_eq!(call!(ne_ui16(4, 3)), true); - assert_eq!(call!(ne_ui16(4, 1717)), true); - assert_eq!(call!(ne_ui16(4, 17988)), true); - assert_eq!(call!(ne_ui16(4, 65096)), true); - assert_eq!(call!(ne_ui16(4, 65534)), true); - assert_eq!(call!(ne_ui16(4, 65535)), true); - assert_eq!(call!(ne_ui16(1717, 0)), true); - assert_eq!(call!(ne_ui16(1717, 1)), true); - assert_eq!(call!(ne_ui16(1717, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_525() { - assert_eq!(call!(ne_ui16(1717, 3)), true); - assert_eq!(call!(ne_ui16(1717, 4)), true); - assert_eq!(call!(ne_ui16(1717, 17988)), true); - assert_eq!(call!(ne_ui16(1717, 65096)), true); - assert_eq!(call!(ne_ui16(1717, 65534)), true); - assert_eq!(call!(ne_ui16(1717, 65535)), true); - assert_eq!(call!(ne_ui16(17988, 0)), true); - assert_eq!(call!(ne_ui16(17988, 1)), true); - assert_eq!(call!(ne_ui16(17988, 2)), true); - assert_eq!(call!(ne_ui16(17988, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_526() { - assert_eq!(call!(ne_ui16(17988, 4)), true); - assert_eq!(call!(ne_ui16(17988, 1717)), true); - assert_eq!(call!(ne_ui16(17988, 65096)), true); - assert_eq!(call!(ne_ui16(17988, 65534)), true); - assert_eq!(call!(ne_ui16(17988, 65535)), true); - assert_eq!(call!(ne_ui16(65096, 0)), true); - assert_eq!(call!(ne_ui16(65096, 1)), true); - assert_eq!(call!(ne_ui16(65096, 2)), true); - assert_eq!(call!(ne_ui16(65096, 3)), true); - assert_eq!(call!(ne_ui16(65096, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_527() { - assert_eq!(call!(ne_ui16(65096, 1717)), true); - assert_eq!(call!(ne_ui16(65096, 17988)), true); - assert_eq!(call!(ne_ui16(65096, 65534)), true); - assert_eq!(call!(ne_ui16(65096, 65535)), true); - assert_eq!(call!(ne_ui16(65534, 0)), true); - assert_eq!(call!(ne_ui16(65534, 1)), true); - assert_eq!(call!(ne_ui16(65534, 2)), true); - assert_eq!(call!(ne_ui16(65534, 3)), true); - assert_eq!(call!(ne_ui16(65534, 4)), true); - assert_eq!(call!(ne_ui16(65534, 1717)), true); - } - #[rewrite(main)] - #[test] - fn test_528() { - assert_eq!(call!(ne_ui16(65534, 17988)), true); - assert_eq!(call!(ne_ui16(65534, 65096)), true); - assert_eq!(call!(ne_ui16(65534, 65535)), true); - assert_eq!(call!(ne_ui16(65535, 0)), true); - assert_eq!(call!(ne_ui16(65535, 1)), true); - assert_eq!(call!(ne_ui16(65535, 2)), true); - assert_eq!(call!(ne_ui16(65535, 3)), true); - assert_eq!(call!(ne_ui16(65535, 4)), true); - assert_eq!(call!(ne_ui16(65535, 1717)), true); - assert_eq!(call!(ne_ui16(65535, 17988)), true); - } - #[rewrite(main)] - #[test] - fn test_529() { - assert_eq!(call!(ne_ui16(65535, 65096)), true); - assert_eq!(call!(ne_ui16(65535, 65534)), true); - assert_eq!(call!(ne_ui32(0, 0)), false); - assert_eq!(call!(ne_ui32(1, 1)), false); - assert_eq!(call!(ne_ui32(2, 2)), false); - assert_eq!(call!(ne_ui32(3, 3)), false); - assert_eq!(call!(ne_ui32(4, 4)), false); - assert_eq!(call!(ne_ui32(2119154652, 2119154652)), false); - assert_eq!(call!(ne_ui32(3002788344, 3002788344)), false); - assert_eq!(call!(ne_ui32(3482297128, 3482297128)), false); - } - #[rewrite(main)] - #[test] - fn test_530() { - assert_eq!(call!(ne_ui32(4294967294, 4294967294)), false); - assert_eq!(call!(ne_ui32(4294967295, 4294967295)), false); - assert_eq!(call!(ne_ui32(0, 1)), true); - assert_eq!(call!(ne_ui32(0, 2)), true); - assert_eq!(call!(ne_ui32(0, 3)), true); - assert_eq!(call!(ne_ui32(0, 4)), true); - assert_eq!(call!(ne_ui32(0, 2119154652)), true); - assert_eq!(call!(ne_ui32(0, 3002788344)), true); - assert_eq!(call!(ne_ui32(0, 3482297128)), true); - assert_eq!(call!(ne_ui32(0, 4294967294)), true); - } - #[rewrite(main)] - #[test] - fn test_531() { - assert_eq!(call!(ne_ui32(0, 4294967295)), true); - assert_eq!(call!(ne_ui32(1, 0)), true); - assert_eq!(call!(ne_ui32(1, 2)), true); - assert_eq!(call!(ne_ui32(1, 3)), true); - assert_eq!(call!(ne_ui32(1, 4)), true); - assert_eq!(call!(ne_ui32(1, 2119154652)), true); - assert_eq!(call!(ne_ui32(1, 3002788344)), true); - assert_eq!(call!(ne_ui32(1, 3482297128)), true); - assert_eq!(call!(ne_ui32(1, 4294967294)), true); - assert_eq!(call!(ne_ui32(1, 4294967295)), true); - } - #[rewrite(main)] - #[test] - fn test_532() { - assert_eq!(call!(ne_ui32(2, 0)), true); - assert_eq!(call!(ne_ui32(2, 1)), true); - assert_eq!(call!(ne_ui32(2, 3)), true); - assert_eq!(call!(ne_ui32(2, 4)), true); - assert_eq!(call!(ne_ui32(2, 2119154652)), true); - assert_eq!(call!(ne_ui32(2, 3002788344)), true); - assert_eq!(call!(ne_ui32(2, 3482297128)), true); - assert_eq!(call!(ne_ui32(2, 4294967294)), true); - assert_eq!(call!(ne_ui32(2, 4294967295)), true); - assert_eq!(call!(ne_ui32(3, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_533() { - assert_eq!(call!(ne_ui32(3, 1)), true); - assert_eq!(call!(ne_ui32(3, 2)), true); - assert_eq!(call!(ne_ui32(3, 4)), true); - assert_eq!(call!(ne_ui32(3, 2119154652)), true); - assert_eq!(call!(ne_ui32(3, 3002788344)), true); - assert_eq!(call!(ne_ui32(3, 3482297128)), true); - assert_eq!(call!(ne_ui32(3, 4294967294)), true); - assert_eq!(call!(ne_ui32(3, 4294967295)), true); - assert_eq!(call!(ne_ui32(4, 0)), true); - assert_eq!(call!(ne_ui32(4, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_534() { - assert_eq!(call!(ne_ui32(4, 2)), true); - assert_eq!(call!(ne_ui32(4, 3)), true); - assert_eq!(call!(ne_ui32(4, 2119154652)), true); - assert_eq!(call!(ne_ui32(4, 3002788344)), true); - assert_eq!(call!(ne_ui32(4, 3482297128)), true); - assert_eq!(call!(ne_ui32(4, 4294967294)), true); - assert_eq!(call!(ne_ui32(4, 4294967295)), true); - assert_eq!(call!(ne_ui32(2119154652, 0)), true); - assert_eq!(call!(ne_ui32(2119154652, 1)), true); - assert_eq!(call!(ne_ui32(2119154652, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_535() { - assert_eq!(call!(ne_ui32(2119154652, 3)), true); - assert_eq!(call!(ne_ui32(2119154652, 4)), true); - assert_eq!(call!(ne_ui32(2119154652, 3002788344)), true); - assert_eq!(call!(ne_ui32(2119154652, 3482297128)), true); - assert_eq!(call!(ne_ui32(2119154652, 4294967294)), true); - assert_eq!(call!(ne_ui32(2119154652, 4294967295)), true); - assert_eq!(call!(ne_ui32(3002788344, 0)), true); - assert_eq!(call!(ne_ui32(3002788344, 1)), true); - assert_eq!(call!(ne_ui32(3002788344, 2)), true); - assert_eq!(call!(ne_ui32(3002788344, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_536() { - assert_eq!(call!(ne_ui32(3002788344, 4)), true); - assert_eq!(call!(ne_ui32(3002788344, 2119154652)), true); - assert_eq!(call!(ne_ui32(3002788344, 3482297128)), true); - assert_eq!(call!(ne_ui32(3002788344, 4294967294)), true); - assert_eq!(call!(ne_ui32(3002788344, 4294967295)), true); - assert_eq!(call!(ne_ui32(3482297128, 0)), true); - assert_eq!(call!(ne_ui32(3482297128, 1)), true); - assert_eq!(call!(ne_ui32(3482297128, 2)), true); - assert_eq!(call!(ne_ui32(3482297128, 3)), true); - assert_eq!(call!(ne_ui32(3482297128, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_537() { - assert_eq!(call!(ne_ui32(3482297128, 2119154652)), true); - assert_eq!(call!(ne_ui32(3482297128, 3002788344)), true); - assert_eq!(call!(ne_ui32(3482297128, 4294967294)), true); - assert_eq!(call!(ne_ui32(3482297128, 4294967295)), true); - assert_eq!(call!(ne_ui32(4294967294, 0)), true); - assert_eq!(call!(ne_ui32(4294967294, 1)), true); - assert_eq!(call!(ne_ui32(4294967294, 2)), true); - assert_eq!(call!(ne_ui32(4294967294, 3)), true); - assert_eq!(call!(ne_ui32(4294967294, 4)), true); - assert_eq!(call!(ne_ui32(4294967294, 2119154652)), true); - } - #[rewrite(main)] - #[test] - fn test_538() { - assert_eq!(call!(ne_ui32(4294967294, 3002788344)), true); - assert_eq!(call!(ne_ui32(4294967294, 3482297128)), true); - assert_eq!(call!(ne_ui32(4294967294, 4294967295)), true); - assert_eq!(call!(ne_ui32(4294967295, 0)), true); - assert_eq!(call!(ne_ui32(4294967295, 1)), true); - assert_eq!(call!(ne_ui32(4294967295, 2)), true); - assert_eq!(call!(ne_ui32(4294967295, 3)), true); - assert_eq!(call!(ne_ui32(4294967295, 4)), true); - assert_eq!(call!(ne_ui32(4294967295, 2119154652)), true); - assert_eq!(call!(ne_ui32(4294967295, 3002788344)), true); - } - #[rewrite(main)] - #[test] - fn test_539() { - assert_eq!(call!(ne_ui32(4294967295, 3482297128)), true); - assert_eq!(call!(ne_ui32(4294967295, 4294967294)), true); - assert_eq!(call!(ne_ui64(0, 0)), false); - assert_eq!(call!(ne_ui64(1, 1)), false); - assert_eq!(call!(ne_ui64(2, 2)), false); - assert_eq!(call!(ne_ui64(3, 3)), false); - assert_eq!(call!(ne_ui64(4, 4)), false); - assert_eq!(call!(ne_ui64(191084152064409600, 191084152064409600)), false); - assert_eq!(call!(ne_ui64(11015955194427482112, 11015955194427482112)), false); - assert_eq!(call!(ne_ui64(16990600415051759616, 16990600415051759616)), false); - } - #[rewrite(main)] - #[test] - fn test_540() { - assert_eq!(call!(ne_ui64(18446744073709551614, 18446744073709551614)), false); - assert_eq!(call!(ne_ui64(18446744073709551615, 18446744073709551615)), false); - assert_eq!(call!(ne_ui64(0, 1)), true); - assert_eq!(call!(ne_ui64(0, 2)), true); - assert_eq!(call!(ne_ui64(0, 3)), true); - assert_eq!(call!(ne_ui64(0, 4)), true); - assert_eq!(call!(ne_ui64(0, 191084152064409600)), true); - assert_eq!(call!(ne_ui64(0, 11015955194427482112)), true); - assert_eq!(call!(ne_ui64(0, 16990600415051759616)), true); - assert_eq!(call!(ne_ui64(0, 18446744073709551614)), true); - } - #[rewrite(main)] - #[test] - fn test_541() { - assert_eq!(call!(ne_ui64(0, 18446744073709551615)), true); - assert_eq!(call!(ne_ui64(1, 0)), true); - assert_eq!(call!(ne_ui64(1, 2)), true); - assert_eq!(call!(ne_ui64(1, 3)), true); - assert_eq!(call!(ne_ui64(1, 4)), true); - assert_eq!(call!(ne_ui64(1, 191084152064409600)), true); - assert_eq!(call!(ne_ui64(1, 11015955194427482112)), true); - assert_eq!(call!(ne_ui64(1, 16990600415051759616)), true); - assert_eq!(call!(ne_ui64(1, 18446744073709551614)), true); - assert_eq!(call!(ne_ui64(1, 18446744073709551615)), true); - } - #[rewrite(main)] - #[test] - fn test_542() { - assert_eq!(call!(ne_ui64(2, 0)), true); - assert_eq!(call!(ne_ui64(2, 1)), true); - assert_eq!(call!(ne_ui64(2, 3)), true); - assert_eq!(call!(ne_ui64(2, 4)), true); - assert_eq!(call!(ne_ui64(2, 191084152064409600)), true); - assert_eq!(call!(ne_ui64(2, 11015955194427482112)), true); - assert_eq!(call!(ne_ui64(2, 16990600415051759616)), true); - assert_eq!(call!(ne_ui64(2, 18446744073709551614)), true); - assert_eq!(call!(ne_ui64(2, 18446744073709551615)), true); - assert_eq!(call!(ne_ui64(3, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_543() { - assert_eq!(call!(ne_ui64(3, 1)), true); - assert_eq!(call!(ne_ui64(3, 2)), true); - assert_eq!(call!(ne_ui64(3, 4)), true); - assert_eq!(call!(ne_ui64(3, 191084152064409600)), true); - assert_eq!(call!(ne_ui64(3, 11015955194427482112)), true); - assert_eq!(call!(ne_ui64(3, 16990600415051759616)), true); - assert_eq!(call!(ne_ui64(3, 18446744073709551614)), true); - assert_eq!(call!(ne_ui64(3, 18446744073709551615)), true); - assert_eq!(call!(ne_ui64(4, 0)), true); - assert_eq!(call!(ne_ui64(4, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_544() { - assert_eq!(call!(ne_ui64(4, 2)), true); - assert_eq!(call!(ne_ui64(4, 3)), true); - assert_eq!(call!(ne_ui64(4, 191084152064409600)), true); - assert_eq!(call!(ne_ui64(4, 11015955194427482112)), true); - assert_eq!(call!(ne_ui64(4, 16990600415051759616)), true); - assert_eq!(call!(ne_ui64(4, 18446744073709551614)), true); - assert_eq!(call!(ne_ui64(4, 18446744073709551615)), true); - assert_eq!(call!(ne_ui64(191084152064409600, 0)), true); - assert_eq!(call!(ne_ui64(191084152064409600, 1)), true); - assert_eq!(call!(ne_ui64(191084152064409600, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_545() { - assert_eq!(call!(ne_ui64(191084152064409600, 3)), true); - assert_eq!(call!(ne_ui64(191084152064409600, 4)), true); - assert_eq!(call!(ne_ui64(191084152064409600, 11015955194427482112)), true); - assert_eq!(call!(ne_ui64(191084152064409600, 16990600415051759616)), true); - assert_eq!(call!(ne_ui64(191084152064409600, 18446744073709551614)), true); - assert_eq!(call!(ne_ui64(191084152064409600, 18446744073709551615)), true); - assert_eq!(call!(ne_ui64(11015955194427482112, 0)), true); - assert_eq!(call!(ne_ui64(11015955194427482112, 1)), true); - assert_eq!(call!(ne_ui64(11015955194427482112, 2)), true); - assert_eq!(call!(ne_ui64(11015955194427482112, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_546() { - assert_eq!(call!(ne_ui64(11015955194427482112, 4)), true); - assert_eq!(call!(ne_ui64(11015955194427482112, 191084152064409600)), true); - assert_eq!(call!(ne_ui64(11015955194427482112, 16990600415051759616)), true); - assert_eq!(call!(ne_ui64(11015955194427482112, 18446744073709551614)), true); - assert_eq!(call!(ne_ui64(11015955194427482112, 18446744073709551615)), true); - assert_eq!(call!(ne_ui64(16990600415051759616, 0)), true); - assert_eq!(call!(ne_ui64(16990600415051759616, 1)), true); - assert_eq!(call!(ne_ui64(16990600415051759616, 2)), true); - assert_eq!(call!(ne_ui64(16990600415051759616, 3)), true); - assert_eq!(call!(ne_ui64(16990600415051759616, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_547() { - assert_eq!(call!(ne_ui64(16990600415051759616, 191084152064409600)), true); - assert_eq!(call!(ne_ui64(16990600415051759616, 11015955194427482112)), true); - assert_eq!(call!(ne_ui64(16990600415051759616, 18446744073709551614)), true); - assert_eq!(call!(ne_ui64(16990600415051759616, 18446744073709551615)), true); - assert_eq!(call!(ne_ui64(18446744073709551614, 0)), true); - assert_eq!(call!(ne_ui64(18446744073709551614, 1)), true); - assert_eq!(call!(ne_ui64(18446744073709551614, 2)), true); - assert_eq!(call!(ne_ui64(18446744073709551614, 3)), true); - assert_eq!(call!(ne_ui64(18446744073709551614, 4)), true); - assert_eq!(call!(ne_ui64(18446744073709551614, 191084152064409600)), true); - } - #[rewrite(main)] - #[test] - fn test_548() { - assert_eq!(call!(ne_ui64(18446744073709551614, 11015955194427482112)), true); - assert_eq!(call!(ne_ui64(18446744073709551614, 16990600415051759616)), true); - assert_eq!(call!(ne_ui64(18446744073709551614, 18446744073709551615)), true); - assert_eq!(call!(ne_ui64(18446744073709551615, 0)), true); - assert_eq!(call!(ne_ui64(18446744073709551615, 1)), true); - assert_eq!(call!(ne_ui64(18446744073709551615, 2)), true); - assert_eq!(call!(ne_ui64(18446744073709551615, 3)), true); - assert_eq!(call!(ne_ui64(18446744073709551615, 4)), true); - assert_eq!(call!(ne_ui64(18446744073709551615, 191084152064409600)), true); - assert_eq!(call!(ne_ui64(18446744073709551615, 11015955194427482112)), true); - } - #[rewrite(main)] - #[test] - fn test_549() { - assert_eq!(call!(ne_ui64(18446744073709551615, 16990600415051759616)), true); - assert_eq!(call!(ne_ui64(18446744073709551615, 18446744073709551614)), true); - assert_eq!(call!(ne_ui8(0, 0)), false); - assert_eq!(call!(ne_ui8(1, 1)), false); - assert_eq!(call!(ne_ui8(2, 2)), false); - assert_eq!(call!(ne_ui8(3, 3)), false); - assert_eq!(call!(ne_ui8(4, 4)), false); - assert_eq!(call!(ne_ui8(72, 72)), false); - assert_eq!(call!(ne_ui8(100, 100)), false); - assert_eq!(call!(ne_ui8(162, 162)), false); - } - #[rewrite(main)] - #[test] - fn test_550() { - assert_eq!(call!(ne_ui8(254, 254)), false); - assert_eq!(call!(ne_ui8(255, 255)), false); - assert_eq!(call!(ne_ui8(0, 1)), true); - assert_eq!(call!(ne_ui8(0, 2)), true); - assert_eq!(call!(ne_ui8(0, 3)), true); - assert_eq!(call!(ne_ui8(0, 4)), true); - assert_eq!(call!(ne_ui8(0, 72)), true); - assert_eq!(call!(ne_ui8(0, 100)), true); - assert_eq!(call!(ne_ui8(0, 162)), true); - assert_eq!(call!(ne_ui8(0, 254)), true); - } - #[rewrite(main)] - #[test] - fn test_551() { - assert_eq!(call!(ne_ui8(0, 255)), true); - assert_eq!(call!(ne_ui8(1, 0)), true); - assert_eq!(call!(ne_ui8(1, 2)), true); - assert_eq!(call!(ne_ui8(1, 3)), true); - assert_eq!(call!(ne_ui8(1, 4)), true); - assert_eq!(call!(ne_ui8(1, 72)), true); - assert_eq!(call!(ne_ui8(1, 100)), true); - assert_eq!(call!(ne_ui8(1, 162)), true); - assert_eq!(call!(ne_ui8(1, 254)), true); - assert_eq!(call!(ne_ui8(1, 255)), true); - } - #[rewrite(main)] - #[test] - fn test_552() { - assert_eq!(call!(ne_ui8(2, 0)), true); - assert_eq!(call!(ne_ui8(2, 1)), true); - assert_eq!(call!(ne_ui8(2, 3)), true); - assert_eq!(call!(ne_ui8(2, 4)), true); - assert_eq!(call!(ne_ui8(2, 72)), true); - assert_eq!(call!(ne_ui8(2, 100)), true); - assert_eq!(call!(ne_ui8(2, 162)), true); - assert_eq!(call!(ne_ui8(2, 254)), true); - assert_eq!(call!(ne_ui8(2, 255)), true); - assert_eq!(call!(ne_ui8(3, 0)), true); - } - #[rewrite(main)] - #[test] - fn test_553() { - assert_eq!(call!(ne_ui8(3, 1)), true); - assert_eq!(call!(ne_ui8(3, 2)), true); - assert_eq!(call!(ne_ui8(3, 4)), true); - assert_eq!(call!(ne_ui8(3, 72)), true); - assert_eq!(call!(ne_ui8(3, 100)), true); - assert_eq!(call!(ne_ui8(3, 162)), true); - assert_eq!(call!(ne_ui8(3, 254)), true); - assert_eq!(call!(ne_ui8(3, 255)), true); - assert_eq!(call!(ne_ui8(4, 0)), true); - assert_eq!(call!(ne_ui8(4, 1)), true); - } - #[rewrite(main)] - #[test] - fn test_554() { - assert_eq!(call!(ne_ui8(4, 2)), true); - assert_eq!(call!(ne_ui8(4, 3)), true); - assert_eq!(call!(ne_ui8(4, 72)), true); - assert_eq!(call!(ne_ui8(4, 100)), true); - assert_eq!(call!(ne_ui8(4, 162)), true); - assert_eq!(call!(ne_ui8(4, 254)), true); - assert_eq!(call!(ne_ui8(4, 255)), true); - assert_eq!(call!(ne_ui8(72, 0)), true); - assert_eq!(call!(ne_ui8(72, 1)), true); - assert_eq!(call!(ne_ui8(72, 2)), true); - } - #[rewrite(main)] - #[test] - fn test_555() { - assert_eq!(call!(ne_ui8(72, 3)), true); - assert_eq!(call!(ne_ui8(72, 4)), true); - assert_eq!(call!(ne_ui8(72, 100)), true); - assert_eq!(call!(ne_ui8(72, 162)), true); - assert_eq!(call!(ne_ui8(72, 254)), true); - assert_eq!(call!(ne_ui8(72, 255)), true); - assert_eq!(call!(ne_ui8(100, 0)), true); - assert_eq!(call!(ne_ui8(100, 1)), true); - assert_eq!(call!(ne_ui8(100, 2)), true); - assert_eq!(call!(ne_ui8(100, 3)), true); - } - #[rewrite(main)] - #[test] - fn test_556() { - assert_eq!(call!(ne_ui8(100, 4)), true); - assert_eq!(call!(ne_ui8(100, 72)), true); - assert_eq!(call!(ne_ui8(100, 162)), true); - assert_eq!(call!(ne_ui8(100, 254)), true); - assert_eq!(call!(ne_ui8(100, 255)), true); - assert_eq!(call!(ne_ui8(162, 0)), true); - assert_eq!(call!(ne_ui8(162, 1)), true); - assert_eq!(call!(ne_ui8(162, 2)), true); - assert_eq!(call!(ne_ui8(162, 3)), true); - assert_eq!(call!(ne_ui8(162, 4)), true); - } - #[rewrite(main)] - #[test] - fn test_557() { - assert_eq!(call!(ne_ui8(162, 72)), true); - assert_eq!(call!(ne_ui8(162, 100)), true); - assert_eq!(call!(ne_ui8(162, 254)), true); - assert_eq!(call!(ne_ui8(162, 255)), true); - assert_eq!(call!(ne_ui8(254, 0)), true); - assert_eq!(call!(ne_ui8(254, 1)), true); - assert_eq!(call!(ne_ui8(254, 2)), true); - assert_eq!(call!(ne_ui8(254, 3)), true); - assert_eq!(call!(ne_ui8(254, 4)), true); - assert_eq!(call!(ne_ui8(254, 72)), true); - } - #[rewrite(main)] - #[test] - fn test_558() { - assert_eq!(call!(ne_ui8(254, 100)), true); - assert_eq!(call!(ne_ui8(254, 162)), true); - assert_eq!(call!(ne_ui8(254, 255)), true); - assert_eq!(call!(ne_ui8(255, 0)), true); - assert_eq!(call!(ne_ui8(255, 1)), true); - assert_eq!(call!(ne_ui8(255, 2)), true); - assert_eq!(call!(ne_ui8(255, 3)), true); - assert_eq!(call!(ne_ui8(255, 4)), true); - assert_eq!(call!(ne_ui8(255, 72)), true); - assert_eq!(call!(ne_ui8(255, 100)), true); - } - #[rewrite(main)] - #[test] - fn test_559() { - assert_eq!(call!(ne_ui8(255, 162)), true); - assert_eq!(call!(ne_ui8(255, 254)), true); - } + use crate::arctorustcmpi::*; + #[test] + fn test_0() { + assert_eq!(eq_si16(-32768, -32767), false); + assert_eq!(eq_si16(-32768, -32547), false); + assert_eq!(eq_si16(-32768, 0), false); + assert_eq!(eq_si16(-32768, 1), false); + assert_eq!(eq_si16(-32768, 2), false); + assert_eq!(eq_si16(-32768, 3), false); + assert_eq!(eq_si16(-32768, 4), false); + assert_eq!(eq_si16(-32768, 10486), false); + assert_eq!(eq_si16(-32768, 16514), false); + assert_eq!(eq_si16(-32768, 32766), false); + } + #[test] + fn test_1() { + assert_eq!(eq_si16(-32768, 32767), false); + assert_eq!(eq_si16(-32767, -32768), false); + assert_eq!(eq_si16(-32767, -32547), false); + assert_eq!(eq_si16(-32767, 0), false); + assert_eq!(eq_si16(-32767, 1), false); + assert_eq!(eq_si16(-32767, 2), false); + assert_eq!(eq_si16(-32767, 3), false); + assert_eq!(eq_si16(-32767, 4), false); + assert_eq!(eq_si16(-32767, 10486), false); + assert_eq!(eq_si16(-32767, 16514), false); + } + #[test] + fn test_2() { + assert_eq!(eq_si16(-32767, 32766), false); + assert_eq!(eq_si16(-32767, 32767), false); + assert_eq!(eq_si16(-32547, -32768), false); + assert_eq!(eq_si16(-32547, -32767), false); + assert_eq!(eq_si16(-32547, 0), false); + assert_eq!(eq_si16(-32547, 1), false); + assert_eq!(eq_si16(-32547, 2), false); + assert_eq!(eq_si16(-32547, 3), false); + assert_eq!(eq_si16(-32547, 4), false); + assert_eq!(eq_si16(-32547, 10486), false); + } + #[test] + fn test_3() { + assert_eq!(eq_si16(-32547, 16514), false); + assert_eq!(eq_si16(-32547, 32766), false); + assert_eq!(eq_si16(-32547, 32767), false); + assert_eq!(eq_si16(0, -32768), false); + assert_eq!(eq_si16(0, -32767), false); + assert_eq!(eq_si16(0, -32547), false); + assert_eq!(eq_si16(0, 1), false); + assert_eq!(eq_si16(0, 2), false); + assert_eq!(eq_si16(0, 3), false); + assert_eq!(eq_si16(0, 4), false); + } + #[test] + fn test_4() { + assert_eq!(eq_si16(0, 10486), false); + assert_eq!(eq_si16(0, 16514), false); + assert_eq!(eq_si16(0, 32766), false); + assert_eq!(eq_si16(0, 32767), false); + assert_eq!(eq_si16(1, -32768), false); + assert_eq!(eq_si16(1, -32767), false); + assert_eq!(eq_si16(1, -32547), false); + assert_eq!(eq_si16(1, 0), false); + assert_eq!(eq_si16(1, 2), false); + assert_eq!(eq_si16(1, 3), false); + } + #[test] + fn test_5() { + assert_eq!(eq_si16(1, 4), false); + assert_eq!(eq_si16(1, 10486), false); + assert_eq!(eq_si16(1, 16514), false); + assert_eq!(eq_si16(1, 32766), false); + assert_eq!(eq_si16(1, 32767), false); + assert_eq!(eq_si16(2, -32768), false); + assert_eq!(eq_si16(2, -32767), false); + assert_eq!(eq_si16(2, -32547), false); + assert_eq!(eq_si16(2, 0), false); + assert_eq!(eq_si16(2, 1), false); + } + #[test] + fn test_6() { + assert_eq!(eq_si16(2, 3), false); + assert_eq!(eq_si16(2, 4), false); + assert_eq!(eq_si16(2, 10486), false); + assert_eq!(eq_si16(2, 16514), false); + assert_eq!(eq_si16(2, 32766), false); + assert_eq!(eq_si16(2, 32767), false); + assert_eq!(eq_si16(3, -32768), false); + assert_eq!(eq_si16(3, -32767), false); + assert_eq!(eq_si16(3, -32547), false); + assert_eq!(eq_si16(3, 0), false); + } + #[test] + fn test_7() { + assert_eq!(eq_si16(3, 1), false); + assert_eq!(eq_si16(3, 2), false); + assert_eq!(eq_si16(3, 4), false); + assert_eq!(eq_si16(3, 10486), false); + assert_eq!(eq_si16(3, 16514), false); + assert_eq!(eq_si16(3, 32766), false); + assert_eq!(eq_si16(3, 32767), false); + assert_eq!(eq_si16(4, -32768), false); + assert_eq!(eq_si16(4, -32767), false); + assert_eq!(eq_si16(4, -32547), false); + } + #[test] + fn test_8() { + assert_eq!(eq_si16(4, 0), false); + assert_eq!(eq_si16(4, 1), false); + assert_eq!(eq_si16(4, 2), false); + assert_eq!(eq_si16(4, 3), false); + assert_eq!(eq_si16(4, 10486), false); + assert_eq!(eq_si16(4, 16514), false); + assert_eq!(eq_si16(4, 32766), false); + assert_eq!(eq_si16(4, 32767), false); + assert_eq!(eq_si16(10486, -32768), false); + assert_eq!(eq_si16(10486, -32767), false); + } + #[test] + fn test_9() { + assert_eq!(eq_si16(10486, -32547), false); + assert_eq!(eq_si16(10486, 0), false); + assert_eq!(eq_si16(10486, 1), false); + assert_eq!(eq_si16(10486, 2), false); + assert_eq!(eq_si16(10486, 3), false); + assert_eq!(eq_si16(10486, 4), false); + assert_eq!(eq_si16(10486, 16514), false); + assert_eq!(eq_si16(10486, 32766), false); + assert_eq!(eq_si16(10486, 32767), false); + assert_eq!(eq_si16(16514, -32768), false); + } + #[test] + fn test_10() { + assert_eq!(eq_si16(16514, -32767), false); + assert_eq!(eq_si16(16514, -32547), false); + assert_eq!(eq_si16(16514, 0), false); + assert_eq!(eq_si16(16514, 1), false); + assert_eq!(eq_si16(16514, 2), false); + assert_eq!(eq_si16(16514, 3), false); + assert_eq!(eq_si16(16514, 4), false); + assert_eq!(eq_si16(16514, 10486), false); + assert_eq!(eq_si16(16514, 32766), false); + assert_eq!(eq_si16(16514, 32767), false); + } + #[test] + fn test_11() { + assert_eq!(eq_si16(32766, -32768), false); + assert_eq!(eq_si16(32766, -32767), false); + assert_eq!(eq_si16(32766, -32547), false); + assert_eq!(eq_si16(32766, 0), false); + assert_eq!(eq_si16(32766, 1), false); + assert_eq!(eq_si16(32766, 2), false); + assert_eq!(eq_si16(32766, 3), false); + assert_eq!(eq_si16(32766, 4), false); + assert_eq!(eq_si16(32766, 10486), false); + assert_eq!(eq_si16(32766, 16514), false); + } + #[test] + fn test_12() { + assert_eq!(eq_si16(32766, 32767), false); + assert_eq!(eq_si16(32767, -32768), false); + assert_eq!(eq_si16(32767, -32767), false); + assert_eq!(eq_si16(32767, -32547), false); + assert_eq!(eq_si16(32767, 0), false); + assert_eq!(eq_si16(32767, 1), false); + assert_eq!(eq_si16(32767, 2), false); + assert_eq!(eq_si16(32767, 3), false); + assert_eq!(eq_si16(32767, 4), false); + assert_eq!(eq_si16(32767, 10486), false); + } + #[test] + fn test_13() { + assert_eq!(eq_si16(32767, 16514), false); + assert_eq!(eq_si16(32767, 32766), false); + assert_eq!(eq_si16(-32768, -32768), true); + assert_eq!(eq_si16(-32767, -32767), true); + assert_eq!(eq_si16(-32547, -32547), true); + assert_eq!(eq_si16(0, 0), true); + assert_eq!(eq_si16(1, 1), true); + assert_eq!(eq_si16(2, 2), true); + assert_eq!(eq_si16(3, 3), true); + assert_eq!(eq_si16(4, 4), true); + } + #[test] + fn test_14() { + assert_eq!(eq_si16(10486, 10486), true); + assert_eq!(eq_si16(16514, 16514), true); + assert_eq!(eq_si16(32766, 32766), true); + assert_eq!(eq_si16(32767, 32767), true); + assert_eq!(eq_si32(-2147483648, -2147483647), false); + assert_eq!(eq_si32(-2147483648, -1713183800), false); + assert_eq!(eq_si32(-2147483648, -1252582164), false); + assert_eq!(eq_si32(-2147483648, -1035405763), false); + assert_eq!(eq_si32(-2147483648, 0), false); + assert_eq!(eq_si32(-2147483648, 1), false); + } + #[test] + fn test_15() { + assert_eq!(eq_si32(-2147483648, 2), false); + assert_eq!(eq_si32(-2147483648, 3), false); + assert_eq!(eq_si32(-2147483648, 4), false); + assert_eq!(eq_si32(-2147483648, 2147483646), false); + assert_eq!(eq_si32(-2147483648, 2147483647), false); + assert_eq!(eq_si32(-2147483647, -2147483648), false); + assert_eq!(eq_si32(-2147483647, -1713183800), false); + assert_eq!(eq_si32(-2147483647, -1252582164), false); + assert_eq!(eq_si32(-2147483647, -1035405763), false); + assert_eq!(eq_si32(-2147483647, 0), false); + } + #[test] + fn test_16() { + assert_eq!(eq_si32(-2147483647, 1), false); + assert_eq!(eq_si32(-2147483647, 2), false); + assert_eq!(eq_si32(-2147483647, 3), false); + assert_eq!(eq_si32(-2147483647, 4), false); + assert_eq!(eq_si32(-2147483647, 2147483646), false); + assert_eq!(eq_si32(-2147483647, 2147483647), false); + assert_eq!(eq_si32(-1713183800, -2147483648), false); + assert_eq!(eq_si32(-1713183800, -2147483647), false); + assert_eq!(eq_si32(-1713183800, -1252582164), false); + assert_eq!(eq_si32(-1713183800, -1035405763), false); + } + #[test] + fn test_17() { + assert_eq!(eq_si32(-1713183800, 0), false); + assert_eq!(eq_si32(-1713183800, 1), false); + assert_eq!(eq_si32(-1713183800, 2), false); + assert_eq!(eq_si32(-1713183800, 3), false); + assert_eq!(eq_si32(-1713183800, 4), false); + assert_eq!(eq_si32(-1713183800, 2147483646), false); + assert_eq!(eq_si32(-1713183800, 2147483647), false); + assert_eq!(eq_si32(-1252582164, -2147483648), false); + assert_eq!(eq_si32(-1252582164, -2147483647), false); + assert_eq!(eq_si32(-1252582164, -1713183800), false); + } + #[test] + fn test_18() { + assert_eq!(eq_si32(-1252582164, -1035405763), false); + assert_eq!(eq_si32(-1252582164, 0), false); + assert_eq!(eq_si32(-1252582164, 1), false); + assert_eq!(eq_si32(-1252582164, 2), false); + assert_eq!(eq_si32(-1252582164, 3), false); + assert_eq!(eq_si32(-1252582164, 4), false); + assert_eq!(eq_si32(-1252582164, 2147483646), false); + assert_eq!(eq_si32(-1252582164, 2147483647), false); + assert_eq!(eq_si32(-1035405763, -2147483648), false); + assert_eq!(eq_si32(-1035405763, -2147483647), false); + } + #[test] + fn test_19() { + assert_eq!(eq_si32(-1035405763, -1713183800), false); + assert_eq!(eq_si32(-1035405763, -1252582164), false); + assert_eq!(eq_si32(-1035405763, 0), false); + assert_eq!(eq_si32(-1035405763, 1), false); + assert_eq!(eq_si32(-1035405763, 2), false); + assert_eq!(eq_si32(-1035405763, 3), false); + assert_eq!(eq_si32(-1035405763, 4), false); + assert_eq!(eq_si32(-1035405763, 2147483646), false); + assert_eq!(eq_si32(-1035405763, 2147483647), false); + assert_eq!(eq_si32(0, -2147483648), false); + } + #[test] + fn test_20() { + assert_eq!(eq_si32(0, -2147483647), false); + assert_eq!(eq_si32(0, -1713183800), false); + assert_eq!(eq_si32(0, -1252582164), false); + assert_eq!(eq_si32(0, -1035405763), false); + assert_eq!(eq_si32(0, 1), false); + assert_eq!(eq_si32(0, 2), false); + assert_eq!(eq_si32(0, 3), false); + assert_eq!(eq_si32(0, 4), false); + assert_eq!(eq_si32(0, 2147483646), false); + assert_eq!(eq_si32(0, 2147483647), false); + } + #[test] + fn test_21() { + assert_eq!(eq_si32(1, -2147483648), false); + assert_eq!(eq_si32(1, -2147483647), false); + assert_eq!(eq_si32(1, -1713183800), false); + assert_eq!(eq_si32(1, -1252582164), false); + assert_eq!(eq_si32(1, -1035405763), false); + assert_eq!(eq_si32(1, 0), false); + assert_eq!(eq_si32(1, 2), false); + assert_eq!(eq_si32(1, 3), false); + assert_eq!(eq_si32(1, 4), false); + assert_eq!(eq_si32(1, 2147483646), false); + } + #[test] + fn test_22() { + assert_eq!(eq_si32(1, 2147483647), false); + assert_eq!(eq_si32(2, -2147483648), false); + assert_eq!(eq_si32(2, -2147483647), false); + assert_eq!(eq_si32(2, -1713183800), false); + assert_eq!(eq_si32(2, -1252582164), false); + assert_eq!(eq_si32(2, -1035405763), false); + assert_eq!(eq_si32(2, 0), false); + assert_eq!(eq_si32(2, 1), false); + assert_eq!(eq_si32(2, 3), false); + assert_eq!(eq_si32(2, 4), false); + } + #[test] + fn test_23() { + assert_eq!(eq_si32(2, 2147483646), false); + assert_eq!(eq_si32(2, 2147483647), false); + assert_eq!(eq_si32(3, -2147483648), false); + assert_eq!(eq_si32(3, -2147483647), false); + assert_eq!(eq_si32(3, -1713183800), false); + assert_eq!(eq_si32(3, -1252582164), false); + assert_eq!(eq_si32(3, -1035405763), false); + assert_eq!(eq_si32(3, 0), false); + assert_eq!(eq_si32(3, 1), false); + assert_eq!(eq_si32(3, 2), false); + } + #[test] + fn test_24() { + assert_eq!(eq_si32(3, 4), false); + assert_eq!(eq_si32(3, 2147483646), false); + assert_eq!(eq_si32(3, 2147483647), false); + assert_eq!(eq_si32(4, -2147483648), false); + assert_eq!(eq_si32(4, -2147483647), false); + assert_eq!(eq_si32(4, -1713183800), false); + assert_eq!(eq_si32(4, -1252582164), false); + assert_eq!(eq_si32(4, -1035405763), false); + assert_eq!(eq_si32(4, 0), false); + assert_eq!(eq_si32(4, 1), false); + } + #[test] + fn test_25() { + assert_eq!(eq_si32(4, 2), false); + assert_eq!(eq_si32(4, 3), false); + assert_eq!(eq_si32(4, 2147483646), false); + assert_eq!(eq_si32(4, 2147483647), false); + assert_eq!(eq_si32(2147483646, -2147483648), false); + assert_eq!(eq_si32(2147483646, -2147483647), false); + assert_eq!(eq_si32(2147483646, -1713183800), false); + assert_eq!(eq_si32(2147483646, -1252582164), false); + assert_eq!(eq_si32(2147483646, -1035405763), false); + assert_eq!(eq_si32(2147483646, 0), false); + } + #[test] + fn test_26() { + assert_eq!(eq_si32(2147483646, 1), false); + assert_eq!(eq_si32(2147483646, 2), false); + assert_eq!(eq_si32(2147483646, 3), false); + assert_eq!(eq_si32(2147483646, 4), false); + assert_eq!(eq_si32(2147483646, 2147483647), false); + assert_eq!(eq_si32(2147483647, -2147483648), false); + assert_eq!(eq_si32(2147483647, -2147483647), false); + assert_eq!(eq_si32(2147483647, -1713183800), false); + assert_eq!(eq_si32(2147483647, -1252582164), false); + assert_eq!(eq_si32(2147483647, -1035405763), false); + } + #[test] + fn test_27() { + assert_eq!(eq_si32(2147483647, 0), false); + assert_eq!(eq_si32(2147483647, 1), false); + assert_eq!(eq_si32(2147483647, 2), false); + assert_eq!(eq_si32(2147483647, 3), false); + assert_eq!(eq_si32(2147483647, 4), false); + assert_eq!(eq_si32(2147483647, 2147483646), false); + assert_eq!(eq_si32(-2147483648, -2147483648), true); + assert_eq!(eq_si32(-2147483647, -2147483647), true); + assert_eq!(eq_si32(-1713183800, -1713183800), true); + assert_eq!(eq_si32(-1252582164, -1252582164), true); + } + #[test] + fn test_28() { + assert_eq!(eq_si32(-1035405763, -1035405763), true); + assert_eq!(eq_si32(0, 0), true); + assert_eq!(eq_si32(1, 1), true); + assert_eq!(eq_si32(2, 2), true); + assert_eq!(eq_si32(3, 3), true); + assert_eq!(eq_si32(4, 4), true); + assert_eq!(eq_si32(2147483646, 2147483646), true); + assert_eq!(eq_si32(2147483647, 2147483647), true); + assert_eq!(eq_si64(-9223372036854775808, -9223372036854775807), false); + assert_eq!(eq_si64(-9223372036854775808, -1741927215160008704), false); + } + #[test] + fn test_29() { + assert_eq!(eq_si64(-9223372036854775808, -1328271339354574848), false); + assert_eq!(eq_si64(-9223372036854775808, 0), false); + assert_eq!(eq_si64(-9223372036854775808, 1), false); + assert_eq!(eq_si64(-9223372036854775808, 2), false); + assert_eq!(eq_si64(-9223372036854775808, 3), false); + assert_eq!(eq_si64(-9223372036854775808, 4), false); + assert_eq!(eq_si64(-9223372036854775808, 5577148965131116544), false); + assert_eq!(eq_si64(-9223372036854775808, 9223372036854775806), false); + assert_eq!(eq_si64(-9223372036854775808, 9223372036854775807), false); + assert_eq!(eq_si64(-9223372036854775807, -9223372036854775808), false); + } + #[test] + fn test_30() { + assert_eq!(eq_si64(-9223372036854775807, -1741927215160008704), false); + assert_eq!(eq_si64(-9223372036854775807, -1328271339354574848), false); + assert_eq!(eq_si64(-9223372036854775807, 0), false); + assert_eq!(eq_si64(-9223372036854775807, 1), false); + assert_eq!(eq_si64(-9223372036854775807, 2), false); + assert_eq!(eq_si64(-9223372036854775807, 3), false); + assert_eq!(eq_si64(-9223372036854775807, 4), false); + assert_eq!(eq_si64(-9223372036854775807, 5577148965131116544), false); + assert_eq!(eq_si64(-9223372036854775807, 9223372036854775806), false); + assert_eq!(eq_si64(-9223372036854775807, 9223372036854775807), false); + } + #[test] + fn test_31() { + assert_eq!(eq_si64(-1741927215160008704, -9223372036854775808), false); + assert_eq!(eq_si64(-1741927215160008704, -9223372036854775807), false); + assert_eq!(eq_si64(-1741927215160008704, -1328271339354574848), false); + assert_eq!(eq_si64(-1741927215160008704, 0), false); + assert_eq!(eq_si64(-1741927215160008704, 1), false); + assert_eq!(eq_si64(-1741927215160008704, 2), false); + assert_eq!(eq_si64(-1741927215160008704, 3), false); + assert_eq!(eq_si64(-1741927215160008704, 4), false); + assert_eq!(eq_si64(-1741927215160008704, 5577148965131116544), false); + assert_eq!(eq_si64(-1741927215160008704, 9223372036854775806), false); + } + #[test] + fn test_32() { + assert_eq!(eq_si64(-1741927215160008704, 9223372036854775807), false); + assert_eq!(eq_si64(-1328271339354574848, -9223372036854775808), false); + assert_eq!(eq_si64(-1328271339354574848, -9223372036854775807), false); + assert_eq!(eq_si64(-1328271339354574848, -1741927215160008704), false); + assert_eq!(eq_si64(-1328271339354574848, 0), false); + assert_eq!(eq_si64(-1328271339354574848, 1), false); + assert_eq!(eq_si64(-1328271339354574848, 2), false); + assert_eq!(eq_si64(-1328271339354574848, 3), false); + assert_eq!(eq_si64(-1328271339354574848, 4), false); + assert_eq!(eq_si64(-1328271339354574848, 5577148965131116544), false); + } + #[test] + fn test_33() { + assert_eq!(eq_si64(-1328271339354574848, 9223372036854775806), false); + assert_eq!(eq_si64(-1328271339354574848, 9223372036854775807), false); + assert_eq!(eq_si64(0, -9223372036854775808), false); + assert_eq!(eq_si64(0, -9223372036854775807), false); + assert_eq!(eq_si64(0, -1741927215160008704), false); + assert_eq!(eq_si64(0, -1328271339354574848), false); + assert_eq!(eq_si64(0, 1), false); + assert_eq!(eq_si64(0, 2), false); + assert_eq!(eq_si64(0, 3), false); + assert_eq!(eq_si64(0, 4), false); + } + #[test] + fn test_34() { + assert_eq!(eq_si64(0, 5577148965131116544), false); + assert_eq!(eq_si64(0, 9223372036854775806), false); + assert_eq!(eq_si64(0, 9223372036854775807), false); + assert_eq!(eq_si64(1, -9223372036854775808), false); + assert_eq!(eq_si64(1, -9223372036854775807), false); + assert_eq!(eq_si64(1, -1741927215160008704), false); + assert_eq!(eq_si64(1, -1328271339354574848), false); + assert_eq!(eq_si64(1, 0), false); + assert_eq!(eq_si64(1, 2), false); + assert_eq!(eq_si64(1, 3), false); + } + #[test] + fn test_35() { + assert_eq!(eq_si64(1, 4), false); + assert_eq!(eq_si64(1, 5577148965131116544), false); + assert_eq!(eq_si64(1, 9223372036854775806), false); + assert_eq!(eq_si64(1, 9223372036854775807), false); + assert_eq!(eq_si64(2, -9223372036854775808), false); + assert_eq!(eq_si64(2, -9223372036854775807), false); + assert_eq!(eq_si64(2, -1741927215160008704), false); + assert_eq!(eq_si64(2, -1328271339354574848), false); + assert_eq!(eq_si64(2, 0), false); + assert_eq!(eq_si64(2, 1), false); + } + #[test] + fn test_36() { + assert_eq!(eq_si64(2, 3), false); + assert_eq!(eq_si64(2, 4), false); + assert_eq!(eq_si64(2, 5577148965131116544), false); + assert_eq!(eq_si64(2, 9223372036854775806), false); + assert_eq!(eq_si64(2, 9223372036854775807), false); + assert_eq!(eq_si64(3, -9223372036854775808), false); + assert_eq!(eq_si64(3, -9223372036854775807), false); + assert_eq!(eq_si64(3, -1741927215160008704), false); + assert_eq!(eq_si64(3, -1328271339354574848), false); + assert_eq!(eq_si64(3, 0), false); + } + #[test] + fn test_37() { + assert_eq!(eq_si64(3, 1), false); + assert_eq!(eq_si64(3, 2), false); + assert_eq!(eq_si64(3, 4), false); + assert_eq!(eq_si64(3, 5577148965131116544), false); + assert_eq!(eq_si64(3, 9223372036854775806), false); + assert_eq!(eq_si64(3, 9223372036854775807), false); + assert_eq!(eq_si64(4, -9223372036854775808), false); + assert_eq!(eq_si64(4, -9223372036854775807), false); + assert_eq!(eq_si64(4, -1741927215160008704), false); + assert_eq!(eq_si64(4, -1328271339354574848), false); + } + #[test] + fn test_38() { + assert_eq!(eq_si64(4, 0), false); + assert_eq!(eq_si64(4, 1), false); + assert_eq!(eq_si64(4, 2), false); + assert_eq!(eq_si64(4, 3), false); + assert_eq!(eq_si64(4, 5577148965131116544), false); + assert_eq!(eq_si64(4, 9223372036854775806), false); + assert_eq!(eq_si64(4, 9223372036854775807), false); + assert_eq!(eq_si64(5577148965131116544, -9223372036854775808), false); + assert_eq!(eq_si64(5577148965131116544, -9223372036854775807), false); + assert_eq!(eq_si64(5577148965131116544, -1741927215160008704), false); + } + #[test] + fn test_39() { + assert_eq!(eq_si64(5577148965131116544, -1328271339354574848), false); + assert_eq!(eq_si64(5577148965131116544, 0), false); + assert_eq!(eq_si64(5577148965131116544, 1), false); + assert_eq!(eq_si64(5577148965131116544, 2), false); + assert_eq!(eq_si64(5577148965131116544, 3), false); + assert_eq!(eq_si64(5577148965131116544, 4), false); + assert_eq!(eq_si64(5577148965131116544, 9223372036854775806), false); + assert_eq!(eq_si64(5577148965131116544, 9223372036854775807), false); + assert_eq!(eq_si64(9223372036854775806, -9223372036854775808), false); + assert_eq!(eq_si64(9223372036854775806, -9223372036854775807), false); + } + #[test] + fn test_40() { + assert_eq!(eq_si64(9223372036854775806, -1741927215160008704), false); + assert_eq!(eq_si64(9223372036854775806, -1328271339354574848), false); + assert_eq!(eq_si64(9223372036854775806, 0), false); + assert_eq!(eq_si64(9223372036854775806, 1), false); + assert_eq!(eq_si64(9223372036854775806, 2), false); + assert_eq!(eq_si64(9223372036854775806, 3), false); + assert_eq!(eq_si64(9223372036854775806, 4), false); + assert_eq!(eq_si64(9223372036854775806, 5577148965131116544), false); + assert_eq!(eq_si64(9223372036854775806, 9223372036854775807), false); + assert_eq!(eq_si64(9223372036854775807, -9223372036854775808), false); + } + #[test] + fn test_41() { + assert_eq!(eq_si64(9223372036854775807, -9223372036854775807), false); + assert_eq!(eq_si64(9223372036854775807, -1741927215160008704), false); + assert_eq!(eq_si64(9223372036854775807, -1328271339354574848), false); + assert_eq!(eq_si64(9223372036854775807, 0), false); + assert_eq!(eq_si64(9223372036854775807, 1), false); + assert_eq!(eq_si64(9223372036854775807, 2), false); + assert_eq!(eq_si64(9223372036854775807, 3), false); + assert_eq!(eq_si64(9223372036854775807, 4), false); + assert_eq!(eq_si64(9223372036854775807, 5577148965131116544), false); + assert_eq!(eq_si64(9223372036854775807, 9223372036854775806), false); + } + #[test] + fn test_42() { + assert_eq!(eq_si64(-9223372036854775808, -9223372036854775808), true); + assert_eq!(eq_si64(-9223372036854775807, -9223372036854775807), true); + assert_eq!(eq_si64(-1741927215160008704, -1741927215160008704), true); + assert_eq!(eq_si64(-1328271339354574848, -1328271339354574848), true); + assert_eq!(eq_si64(0, 0), true); + assert_eq!(eq_si64(1, 1), true); + assert_eq!(eq_si64(2, 2), true); + assert_eq!(eq_si64(3, 3), true); + assert_eq!(eq_si64(4, 4), true); + assert_eq!(eq_si64(5577148965131116544, 5577148965131116544), true); + } + #[test] + fn test_43() { + assert_eq!(eq_si64(9223372036854775806, 9223372036854775806), true); + assert_eq!(eq_si64(9223372036854775807, 9223372036854775807), true); + assert_eq!(eq_si8(-128, -127), false); + assert_eq!(eq_si8(-128, 0), false); + assert_eq!(eq_si8(-128, 1), false); + assert_eq!(eq_si8(-128, 2), false); + assert_eq!(eq_si8(-128, 3), false); + assert_eq!(eq_si8(-128, 4), false); + assert_eq!(eq_si8(-128, 16), false); + assert_eq!(eq_si8(-128, 126), false); + } + #[test] + fn test_44() { + assert_eq!(eq_si8(-128, 127), false); + assert_eq!(eq_si8(-127, -128), false); + assert_eq!(eq_si8(-127, 0), false); + assert_eq!(eq_si8(-127, 1), false); + assert_eq!(eq_si8(-127, 2), false); + assert_eq!(eq_si8(-127, 3), false); + assert_eq!(eq_si8(-127, 4), false); + assert_eq!(eq_si8(-127, 16), false); + assert_eq!(eq_si8(-127, 126), false); + assert_eq!(eq_si8(-127, 127), false); + } + #[test] + fn test_45() { + assert_eq!(eq_si8(0, -128), false); + assert_eq!(eq_si8(0, -127), false); + assert_eq!(eq_si8(0, 1), false); + assert_eq!(eq_si8(0, 2), false); + assert_eq!(eq_si8(0, 3), false); + assert_eq!(eq_si8(0, 4), false); + assert_eq!(eq_si8(0, 16), false); + assert_eq!(eq_si8(0, 126), false); + assert_eq!(eq_si8(0, 127), false); + assert_eq!(eq_si8(1, -128), false); + } + #[test] + fn test_46() { + assert_eq!(eq_si8(1, -127), false); + assert_eq!(eq_si8(1, 0), false); + assert_eq!(eq_si8(1, 2), false); + assert_eq!(eq_si8(1, 3), false); + assert_eq!(eq_si8(1, 4), false); + assert_eq!(eq_si8(1, 16), false); + assert_eq!(eq_si8(1, 126), false); + assert_eq!(eq_si8(1, 127), false); + assert_eq!(eq_si8(2, -128), false); + assert_eq!(eq_si8(2, -127), false); + } + #[test] + fn test_47() { + assert_eq!(eq_si8(2, 0), false); + assert_eq!(eq_si8(2, 1), false); + assert_eq!(eq_si8(2, 3), false); + assert_eq!(eq_si8(2, 4), false); + assert_eq!(eq_si8(2, 16), false); + assert_eq!(eq_si8(2, 126), false); + assert_eq!(eq_si8(2, 127), false); + assert_eq!(eq_si8(3, -128), false); + assert_eq!(eq_si8(3, -127), false); + assert_eq!(eq_si8(3, 0), false); + } + #[test] + fn test_48() { + assert_eq!(eq_si8(3, 1), false); + assert_eq!(eq_si8(3, 2), false); + assert_eq!(eq_si8(3, 4), false); + assert_eq!(eq_si8(3, 16), false); + assert_eq!(eq_si8(3, 126), false); + assert_eq!(eq_si8(3, 127), false); + assert_eq!(eq_si8(4, -128), false); + assert_eq!(eq_si8(4, -127), false); + assert_eq!(eq_si8(4, 0), false); + assert_eq!(eq_si8(4, 1), false); + } + #[test] + fn test_49() { + assert_eq!(eq_si8(4, 2), false); + assert_eq!(eq_si8(4, 3), false); + assert_eq!(eq_si8(4, 16), false); + assert_eq!(eq_si8(4, 126), false); + assert_eq!(eq_si8(4, 127), false); + assert_eq!(eq_si8(16, -128), false); + assert_eq!(eq_si8(16, -127), false); + assert_eq!(eq_si8(16, 0), false); + assert_eq!(eq_si8(16, 1), false); + assert_eq!(eq_si8(16, 2), false); + } + #[test] + fn test_50() { + assert_eq!(eq_si8(16, 3), false); + assert_eq!(eq_si8(16, 4), false); + assert_eq!(eq_si8(16, 126), false); + assert_eq!(eq_si8(16, 127), false); + assert_eq!(eq_si8(126, -128), false); + assert_eq!(eq_si8(126, -127), false); + assert_eq!(eq_si8(126, 0), false); + assert_eq!(eq_si8(126, 1), false); + assert_eq!(eq_si8(126, 2), false); + assert_eq!(eq_si8(126, 3), false); + } + #[test] + fn test_51() { + assert_eq!(eq_si8(126, 4), false); + assert_eq!(eq_si8(126, 16), false); + assert_eq!(eq_si8(126, 127), false); + assert_eq!(eq_si8(127, -128), false); + assert_eq!(eq_si8(127, -127), false); + assert_eq!(eq_si8(127, 0), false); + assert_eq!(eq_si8(127, 1), false); + assert_eq!(eq_si8(127, 2), false); + assert_eq!(eq_si8(127, 3), false); + assert_eq!(eq_si8(127, 4), false); + } + #[test] + fn test_52() { + assert_eq!(eq_si8(127, 16), false); + assert_eq!(eq_si8(127, 126), false); + assert_eq!(eq_si8(-128, -128), true); + assert_eq!(eq_si8(-127, -127), true); + assert_eq!(eq_si8(0, 0), true); + assert_eq!(eq_si8(1, 1), true); + assert_eq!(eq_si8(2, 2), true); + assert_eq!(eq_si8(3, 3), true); + assert_eq!(eq_si8(4, 4), true); + assert_eq!(eq_si8(16, 16), true); + } + #[test] + fn test_53() { + assert_eq!(eq_si8(126, 126), true); + assert_eq!(eq_si8(127, 127), true); + assert_eq!(eq_ui16(0, 1), false); + assert_eq!(eq_ui16(0, 2), false); + assert_eq!(eq_ui16(0, 3), false); + assert_eq!(eq_ui16(0, 4), false); + assert_eq!(eq_ui16(0, 1717), false); + assert_eq!(eq_ui16(0, 17988), false); + assert_eq!(eq_ui16(0, 65096), false); + assert_eq!(eq_ui16(0, 65534), false); + } + #[test] + fn test_54() { + assert_eq!(eq_ui16(0, 65535), false); + assert_eq!(eq_ui16(1, 0), false); + assert_eq!(eq_ui16(1, 2), false); + assert_eq!(eq_ui16(1, 3), false); + assert_eq!(eq_ui16(1, 4), false); + assert_eq!(eq_ui16(1, 1717), false); + assert_eq!(eq_ui16(1, 17988), false); + assert_eq!(eq_ui16(1, 65096), false); + assert_eq!(eq_ui16(1, 65534), false); + assert_eq!(eq_ui16(1, 65535), false); + } + #[test] + fn test_55() { + assert_eq!(eq_ui16(2, 0), false); + assert_eq!(eq_ui16(2, 1), false); + assert_eq!(eq_ui16(2, 3), false); + assert_eq!(eq_ui16(2, 4), false); + assert_eq!(eq_ui16(2, 1717), false); + assert_eq!(eq_ui16(2, 17988), false); + assert_eq!(eq_ui16(2, 65096), false); + assert_eq!(eq_ui16(2, 65534), false); + assert_eq!(eq_ui16(2, 65535), false); + assert_eq!(eq_ui16(3, 0), false); + } + #[test] + fn test_56() { + assert_eq!(eq_ui16(3, 1), false); + assert_eq!(eq_ui16(3, 2), false); + assert_eq!(eq_ui16(3, 4), false); + assert_eq!(eq_ui16(3, 1717), false); + assert_eq!(eq_ui16(3, 17988), false); + assert_eq!(eq_ui16(3, 65096), false); + assert_eq!(eq_ui16(3, 65534), false); + assert_eq!(eq_ui16(3, 65535), false); + assert_eq!(eq_ui16(4, 0), false); + assert_eq!(eq_ui16(4, 1), false); + } + #[test] + fn test_57() { + assert_eq!(eq_ui16(4, 2), false); + assert_eq!(eq_ui16(4, 3), false); + assert_eq!(eq_ui16(4, 1717), false); + assert_eq!(eq_ui16(4, 17988), false); + assert_eq!(eq_ui16(4, 65096), false); + assert_eq!(eq_ui16(4, 65534), false); + assert_eq!(eq_ui16(4, 65535), false); + assert_eq!(eq_ui16(1717, 0), false); + assert_eq!(eq_ui16(1717, 1), false); + assert_eq!(eq_ui16(1717, 2), false); + } + #[test] + fn test_58() { + assert_eq!(eq_ui16(1717, 3), false); + assert_eq!(eq_ui16(1717, 4), false); + assert_eq!(eq_ui16(1717, 17988), false); + assert_eq!(eq_ui16(1717, 65096), false); + assert_eq!(eq_ui16(1717, 65534), false); + assert_eq!(eq_ui16(1717, 65535), false); + assert_eq!(eq_ui16(17988, 0), false); + assert_eq!(eq_ui16(17988, 1), false); + assert_eq!(eq_ui16(17988, 2), false); + assert_eq!(eq_ui16(17988, 3), false); + } + #[test] + fn test_59() { + assert_eq!(eq_ui16(17988, 4), false); + assert_eq!(eq_ui16(17988, 1717), false); + assert_eq!(eq_ui16(17988, 65096), false); + assert_eq!(eq_ui16(17988, 65534), false); + assert_eq!(eq_ui16(17988, 65535), false); + assert_eq!(eq_ui16(65096, 0), false); + assert_eq!(eq_ui16(65096, 1), false); + assert_eq!(eq_ui16(65096, 2), false); + assert_eq!(eq_ui16(65096, 3), false); + assert_eq!(eq_ui16(65096, 4), false); + } + #[test] + fn test_60() { + assert_eq!(eq_ui16(65096, 1717), false); + assert_eq!(eq_ui16(65096, 17988), false); + assert_eq!(eq_ui16(65096, 65534), false); + assert_eq!(eq_ui16(65096, 65535), false); + assert_eq!(eq_ui16(65534, 0), false); + assert_eq!(eq_ui16(65534, 1), false); + assert_eq!(eq_ui16(65534, 2), false); + assert_eq!(eq_ui16(65534, 3), false); + assert_eq!(eq_ui16(65534, 4), false); + assert_eq!(eq_ui16(65534, 1717), false); + } + #[test] + fn test_61() { + assert_eq!(eq_ui16(65534, 17988), false); + assert_eq!(eq_ui16(65534, 65096), false); + assert_eq!(eq_ui16(65534, 65535), false); + assert_eq!(eq_ui16(65535, 0), false); + assert_eq!(eq_ui16(65535, 1), false); + assert_eq!(eq_ui16(65535, 2), false); + assert_eq!(eq_ui16(65535, 3), false); + assert_eq!(eq_ui16(65535, 4), false); + assert_eq!(eq_ui16(65535, 1717), false); + assert_eq!(eq_ui16(65535, 17988), false); + } + #[test] + fn test_62() { + assert_eq!(eq_ui16(65535, 65096), false); + assert_eq!(eq_ui16(65535, 65534), false); + assert_eq!(eq_ui16(0, 0), true); + assert_eq!(eq_ui16(1, 1), true); + assert_eq!(eq_ui16(2, 2), true); + assert_eq!(eq_ui16(3, 3), true); + assert_eq!(eq_ui16(4, 4), true); + assert_eq!(eq_ui16(1717, 1717), true); + assert_eq!(eq_ui16(17988, 17988), true); + assert_eq!(eq_ui16(65096, 65096), true); + } + #[test] + fn test_63() { + assert_eq!(eq_ui16(65534, 65534), true); + assert_eq!(eq_ui16(65535, 65535), true); + assert_eq!(eq_ui32(0, 1), false); + assert_eq!(eq_ui32(0, 2), false); + assert_eq!(eq_ui32(0, 3), false); + assert_eq!(eq_ui32(0, 4), false); + assert_eq!(eq_ui32(0, 2119154652), false); + assert_eq!(eq_ui32(0, 3002788344), false); + assert_eq!(eq_ui32(0, 3482297128), false); + assert_eq!(eq_ui32(0, 4294967294), false); + } + #[test] + fn test_64() { + assert_eq!(eq_ui32(0, 4294967295), false); + assert_eq!(eq_ui32(1, 0), false); + assert_eq!(eq_ui32(1, 2), false); + assert_eq!(eq_ui32(1, 3), false); + assert_eq!(eq_ui32(1, 4), false); + assert_eq!(eq_ui32(1, 2119154652), false); + assert_eq!(eq_ui32(1, 3002788344), false); + assert_eq!(eq_ui32(1, 3482297128), false); + assert_eq!(eq_ui32(1, 4294967294), false); + assert_eq!(eq_ui32(1, 4294967295), false); + } + #[test] + fn test_65() { + assert_eq!(eq_ui32(2, 0), false); + assert_eq!(eq_ui32(2, 1), false); + assert_eq!(eq_ui32(2, 3), false); + assert_eq!(eq_ui32(2, 4), false); + assert_eq!(eq_ui32(2, 2119154652), false); + assert_eq!(eq_ui32(2, 3002788344), false); + assert_eq!(eq_ui32(2, 3482297128), false); + assert_eq!(eq_ui32(2, 4294967294), false); + assert_eq!(eq_ui32(2, 4294967295), false); + assert_eq!(eq_ui32(3, 0), false); + } + #[test] + fn test_66() { + assert_eq!(eq_ui32(3, 1), false); + assert_eq!(eq_ui32(3, 2), false); + assert_eq!(eq_ui32(3, 4), false); + assert_eq!(eq_ui32(3, 2119154652), false); + assert_eq!(eq_ui32(3, 3002788344), false); + assert_eq!(eq_ui32(3, 3482297128), false); + assert_eq!(eq_ui32(3, 4294967294), false); + assert_eq!(eq_ui32(3, 4294967295), false); + assert_eq!(eq_ui32(4, 0), false); + assert_eq!(eq_ui32(4, 1), false); + } + #[test] + fn test_67() { + assert_eq!(eq_ui32(4, 2), false); + assert_eq!(eq_ui32(4, 3), false); + assert_eq!(eq_ui32(4, 2119154652), false); + assert_eq!(eq_ui32(4, 3002788344), false); + assert_eq!(eq_ui32(4, 3482297128), false); + assert_eq!(eq_ui32(4, 4294967294), false); + assert_eq!(eq_ui32(4, 4294967295), false); + assert_eq!(eq_ui32(2119154652, 0), false); + assert_eq!(eq_ui32(2119154652, 1), false); + assert_eq!(eq_ui32(2119154652, 2), false); + } + #[test] + fn test_68() { + assert_eq!(eq_ui32(2119154652, 3), false); + assert_eq!(eq_ui32(2119154652, 4), false); + assert_eq!(eq_ui32(2119154652, 3002788344), false); + assert_eq!(eq_ui32(2119154652, 3482297128), false); + assert_eq!(eq_ui32(2119154652, 4294967294), false); + assert_eq!(eq_ui32(2119154652, 4294967295), false); + assert_eq!(eq_ui32(3002788344, 0), false); + assert_eq!(eq_ui32(3002788344, 1), false); + assert_eq!(eq_ui32(3002788344, 2), false); + assert_eq!(eq_ui32(3002788344, 3), false); + } + #[test] + fn test_69() { + assert_eq!(eq_ui32(3002788344, 4), false); + assert_eq!(eq_ui32(3002788344, 2119154652), false); + assert_eq!(eq_ui32(3002788344, 3482297128), false); + assert_eq!(eq_ui32(3002788344, 4294967294), false); + assert_eq!(eq_ui32(3002788344, 4294967295), false); + assert_eq!(eq_ui32(3482297128, 0), false); + assert_eq!(eq_ui32(3482297128, 1), false); + assert_eq!(eq_ui32(3482297128, 2), false); + assert_eq!(eq_ui32(3482297128, 3), false); + assert_eq!(eq_ui32(3482297128, 4), false); + } + #[test] + fn test_70() { + assert_eq!(eq_ui32(3482297128, 2119154652), false); + assert_eq!(eq_ui32(3482297128, 3002788344), false); + assert_eq!(eq_ui32(3482297128, 4294967294), false); + assert_eq!(eq_ui32(3482297128, 4294967295), false); + assert_eq!(eq_ui32(4294967294, 0), false); + assert_eq!(eq_ui32(4294967294, 1), false); + assert_eq!(eq_ui32(4294967294, 2), false); + assert_eq!(eq_ui32(4294967294, 3), false); + assert_eq!(eq_ui32(4294967294, 4), false); + assert_eq!(eq_ui32(4294967294, 2119154652), false); + } + #[test] + fn test_71() { + assert_eq!(eq_ui32(4294967294, 3002788344), false); + assert_eq!(eq_ui32(4294967294, 3482297128), false); + assert_eq!(eq_ui32(4294967294, 4294967295), false); + assert_eq!(eq_ui32(4294967295, 0), false); + assert_eq!(eq_ui32(4294967295, 1), false); + assert_eq!(eq_ui32(4294967295, 2), false); + assert_eq!(eq_ui32(4294967295, 3), false); + assert_eq!(eq_ui32(4294967295, 4), false); + assert_eq!(eq_ui32(4294967295, 2119154652), false); + assert_eq!(eq_ui32(4294967295, 3002788344), false); + } + #[test] + fn test_72() { + assert_eq!(eq_ui32(4294967295, 3482297128), false); + assert_eq!(eq_ui32(4294967295, 4294967294), false); + assert_eq!(eq_ui32(0, 0), true); + assert_eq!(eq_ui32(1, 1), true); + assert_eq!(eq_ui32(2, 2), true); + assert_eq!(eq_ui32(3, 3), true); + assert_eq!(eq_ui32(4, 4), true); + assert_eq!(eq_ui32(2119154652, 2119154652), true); + assert_eq!(eq_ui32(3002788344, 3002788344), true); + assert_eq!(eq_ui32(3482297128, 3482297128), true); + } + #[test] + fn test_73() { + assert_eq!(eq_ui32(4294967294, 4294967294), true); + assert_eq!(eq_ui32(4294967295, 4294967295), true); + assert_eq!(eq_ui64(0, 1), false); + assert_eq!(eq_ui64(0, 2), false); + assert_eq!(eq_ui64(0, 3), false); + assert_eq!(eq_ui64(0, 4), false); + assert_eq!(eq_ui64(0, 191084152064409600), false); + assert_eq!(eq_ui64(0, 11015955194427482112), false); + assert_eq!(eq_ui64(0, 16990600415051759616), false); + assert_eq!(eq_ui64(0, 18446744073709551614), false); + } + #[test] + fn test_74() { + assert_eq!(eq_ui64(0, 18446744073709551615), false); + assert_eq!(eq_ui64(1, 0), false); + assert_eq!(eq_ui64(1, 2), false); + assert_eq!(eq_ui64(1, 3), false); + assert_eq!(eq_ui64(1, 4), false); + assert_eq!(eq_ui64(1, 191084152064409600), false); + assert_eq!(eq_ui64(1, 11015955194427482112), false); + assert_eq!(eq_ui64(1, 16990600415051759616), false); + assert_eq!(eq_ui64(1, 18446744073709551614), false); + assert_eq!(eq_ui64(1, 18446744073709551615), false); + } + #[test] + fn test_75() { + assert_eq!(eq_ui64(2, 0), false); + assert_eq!(eq_ui64(2, 1), false); + assert_eq!(eq_ui64(2, 3), false); + assert_eq!(eq_ui64(2, 4), false); + assert_eq!(eq_ui64(2, 191084152064409600), false); + assert_eq!(eq_ui64(2, 11015955194427482112), false); + assert_eq!(eq_ui64(2, 16990600415051759616), false); + assert_eq!(eq_ui64(2, 18446744073709551614), false); + assert_eq!(eq_ui64(2, 18446744073709551615), false); + assert_eq!(eq_ui64(3, 0), false); + } + #[test] + fn test_76() { + assert_eq!(eq_ui64(3, 1), false); + assert_eq!(eq_ui64(3, 2), false); + assert_eq!(eq_ui64(3, 4), false); + assert_eq!(eq_ui64(3, 191084152064409600), false); + assert_eq!(eq_ui64(3, 11015955194427482112), false); + assert_eq!(eq_ui64(3, 16990600415051759616), false); + assert_eq!(eq_ui64(3, 18446744073709551614), false); + assert_eq!(eq_ui64(3, 18446744073709551615), false); + assert_eq!(eq_ui64(4, 0), false); + assert_eq!(eq_ui64(4, 1), false); + } + #[test] + fn test_77() { + assert_eq!(eq_ui64(4, 2), false); + assert_eq!(eq_ui64(4, 3), false); + assert_eq!(eq_ui64(4, 191084152064409600), false); + assert_eq!(eq_ui64(4, 11015955194427482112), false); + assert_eq!(eq_ui64(4, 16990600415051759616), false); + assert_eq!(eq_ui64(4, 18446744073709551614), false); + assert_eq!(eq_ui64(4, 18446744073709551615), false); + assert_eq!(eq_ui64(191084152064409600, 0), false); + assert_eq!(eq_ui64(191084152064409600, 1), false); + assert_eq!(eq_ui64(191084152064409600, 2), false); + } + #[test] + fn test_78() { + assert_eq!(eq_ui64(191084152064409600, 3), false); + assert_eq!(eq_ui64(191084152064409600, 4), false); + assert_eq!(eq_ui64(191084152064409600, 11015955194427482112), false); + assert_eq!(eq_ui64(191084152064409600, 16990600415051759616), false); + assert_eq!(eq_ui64(191084152064409600, 18446744073709551614), false); + assert_eq!(eq_ui64(191084152064409600, 18446744073709551615), false); + assert_eq!(eq_ui64(11015955194427482112, 0), false); + assert_eq!(eq_ui64(11015955194427482112, 1), false); + assert_eq!(eq_ui64(11015955194427482112, 2), false); + assert_eq!(eq_ui64(11015955194427482112, 3), false); + } + #[test] + fn test_79() { + assert_eq!(eq_ui64(11015955194427482112, 4), false); + assert_eq!(eq_ui64(11015955194427482112, 191084152064409600), false); + assert_eq!(eq_ui64(11015955194427482112, 16990600415051759616), false); + assert_eq!(eq_ui64(11015955194427482112, 18446744073709551614), false); + assert_eq!(eq_ui64(11015955194427482112, 18446744073709551615), false); + assert_eq!(eq_ui64(16990600415051759616, 0), false); + assert_eq!(eq_ui64(16990600415051759616, 1), false); + assert_eq!(eq_ui64(16990600415051759616, 2), false); + assert_eq!(eq_ui64(16990600415051759616, 3), false); + assert_eq!(eq_ui64(16990600415051759616, 4), false); + } + #[test] + fn test_80() { + assert_eq!(eq_ui64(16990600415051759616, 191084152064409600), false); + assert_eq!(eq_ui64(16990600415051759616, 11015955194427482112), false); + assert_eq!(eq_ui64(16990600415051759616, 18446744073709551614), false); + assert_eq!(eq_ui64(16990600415051759616, 18446744073709551615), false); + assert_eq!(eq_ui64(18446744073709551614, 0), false); + assert_eq!(eq_ui64(18446744073709551614, 1), false); + assert_eq!(eq_ui64(18446744073709551614, 2), false); + assert_eq!(eq_ui64(18446744073709551614, 3), false); + assert_eq!(eq_ui64(18446744073709551614, 4), false); + assert_eq!(eq_ui64(18446744073709551614, 191084152064409600), false); + } + #[test] + fn test_81() { + assert_eq!(eq_ui64(18446744073709551614, 11015955194427482112), false); + assert_eq!(eq_ui64(18446744073709551614, 16990600415051759616), false); + assert_eq!(eq_ui64(18446744073709551614, 18446744073709551615), false); + assert_eq!(eq_ui64(18446744073709551615, 0), false); + assert_eq!(eq_ui64(18446744073709551615, 1), false); + assert_eq!(eq_ui64(18446744073709551615, 2), false); + assert_eq!(eq_ui64(18446744073709551615, 3), false); + assert_eq!(eq_ui64(18446744073709551615, 4), false); + assert_eq!(eq_ui64(18446744073709551615, 191084152064409600), false); + assert_eq!(eq_ui64(18446744073709551615, 11015955194427482112), false); + } + #[test] + fn test_82() { + assert_eq!(eq_ui64(18446744073709551615, 16990600415051759616), false); + assert_eq!(eq_ui64(18446744073709551615, 18446744073709551614), false); + assert_eq!(eq_ui64(0, 0), true); + assert_eq!(eq_ui64(1, 1), true); + assert_eq!(eq_ui64(2, 2), true); + assert_eq!(eq_ui64(3, 3), true); + assert_eq!(eq_ui64(4, 4), true); + assert_eq!(eq_ui64(191084152064409600, 191084152064409600), true); + assert_eq!(eq_ui64(11015955194427482112, 11015955194427482112), true); + assert_eq!(eq_ui64(16990600415051759616, 16990600415051759616), true); + } + #[test] + fn test_83() { + assert_eq!(eq_ui64(18446744073709551614, 18446744073709551614), true); + assert_eq!(eq_ui64(18446744073709551615, 18446744073709551615), true); + assert_eq!(eq_ui8(0, 1), false); + assert_eq!(eq_ui8(0, 2), false); + assert_eq!(eq_ui8(0, 3), false); + assert_eq!(eq_ui8(0, 4), false); + assert_eq!(eq_ui8(0, 72), false); + assert_eq!(eq_ui8(0, 100), false); + assert_eq!(eq_ui8(0, 162), false); + assert_eq!(eq_ui8(0, 254), false); + } + #[test] + fn test_84() { + assert_eq!(eq_ui8(0, 255), false); + assert_eq!(eq_ui8(1, 0), false); + assert_eq!(eq_ui8(1, 2), false); + assert_eq!(eq_ui8(1, 3), false); + assert_eq!(eq_ui8(1, 4), false); + assert_eq!(eq_ui8(1, 72), false); + assert_eq!(eq_ui8(1, 100), false); + assert_eq!(eq_ui8(1, 162), false); + assert_eq!(eq_ui8(1, 254), false); + assert_eq!(eq_ui8(1, 255), false); + } + #[test] + fn test_85() { + assert_eq!(eq_ui8(2, 0), false); + assert_eq!(eq_ui8(2, 1), false); + assert_eq!(eq_ui8(2, 3), false); + assert_eq!(eq_ui8(2, 4), false); + assert_eq!(eq_ui8(2, 72), false); + assert_eq!(eq_ui8(2, 100), false); + assert_eq!(eq_ui8(2, 162), false); + assert_eq!(eq_ui8(2, 254), false); + assert_eq!(eq_ui8(2, 255), false); + assert_eq!(eq_ui8(3, 0), false); + } + #[test] + fn test_86() { + assert_eq!(eq_ui8(3, 1), false); + assert_eq!(eq_ui8(3, 2), false); + assert_eq!(eq_ui8(3, 4), false); + assert_eq!(eq_ui8(3, 72), false); + assert_eq!(eq_ui8(3, 100), false); + assert_eq!(eq_ui8(3, 162), false); + assert_eq!(eq_ui8(3, 254), false); + assert_eq!(eq_ui8(3, 255), false); + assert_eq!(eq_ui8(4, 0), false); + assert_eq!(eq_ui8(4, 1), false); + } + #[test] + fn test_87() { + assert_eq!(eq_ui8(4, 2), false); + assert_eq!(eq_ui8(4, 3), false); + assert_eq!(eq_ui8(4, 72), false); + assert_eq!(eq_ui8(4, 100), false); + assert_eq!(eq_ui8(4, 162), false); + assert_eq!(eq_ui8(4, 254), false); + assert_eq!(eq_ui8(4, 255), false); + assert_eq!(eq_ui8(72, 0), false); + assert_eq!(eq_ui8(72, 1), false); + assert_eq!(eq_ui8(72, 2), false); + } + #[test] + fn test_88() { + assert_eq!(eq_ui8(72, 3), false); + assert_eq!(eq_ui8(72, 4), false); + assert_eq!(eq_ui8(72, 100), false); + assert_eq!(eq_ui8(72, 162), false); + assert_eq!(eq_ui8(72, 254), false); + assert_eq!(eq_ui8(72, 255), false); + assert_eq!(eq_ui8(100, 0), false); + assert_eq!(eq_ui8(100, 1), false); + assert_eq!(eq_ui8(100, 2), false); + assert_eq!(eq_ui8(100, 3), false); + } + #[test] + fn test_89() { + assert_eq!(eq_ui8(100, 4), false); + assert_eq!(eq_ui8(100, 72), false); + assert_eq!(eq_ui8(100, 162), false); + assert_eq!(eq_ui8(100, 254), false); + assert_eq!(eq_ui8(100, 255), false); + assert_eq!(eq_ui8(162, 0), false); + assert_eq!(eq_ui8(162, 1), false); + assert_eq!(eq_ui8(162, 2), false); + assert_eq!(eq_ui8(162, 3), false); + assert_eq!(eq_ui8(162, 4), false); + } + #[test] + fn test_90() { + assert_eq!(eq_ui8(162, 72), false); + assert_eq!(eq_ui8(162, 100), false); + assert_eq!(eq_ui8(162, 254), false); + assert_eq!(eq_ui8(162, 255), false); + assert_eq!(eq_ui8(254, 0), false); + assert_eq!(eq_ui8(254, 1), false); + assert_eq!(eq_ui8(254, 2), false); + assert_eq!(eq_ui8(254, 3), false); + assert_eq!(eq_ui8(254, 4), false); + assert_eq!(eq_ui8(254, 72), false); + } + #[test] + fn test_91() { + assert_eq!(eq_ui8(254, 100), false); + assert_eq!(eq_ui8(254, 162), false); + assert_eq!(eq_ui8(254, 255), false); + assert_eq!(eq_ui8(255, 0), false); + assert_eq!(eq_ui8(255, 1), false); + assert_eq!(eq_ui8(255, 2), false); + assert_eq!(eq_ui8(255, 3), false); + assert_eq!(eq_ui8(255, 4), false); + assert_eq!(eq_ui8(255, 72), false); + assert_eq!(eq_ui8(255, 100), false); + } + #[test] + fn test_92() { + assert_eq!(eq_ui8(255, 162), false); + assert_eq!(eq_ui8(255, 254), false); + assert_eq!(eq_ui8(0, 0), true); + assert_eq!(eq_ui8(1, 1), true); + assert_eq!(eq_ui8(2, 2), true); + assert_eq!(eq_ui8(3, 3), true); + assert_eq!(eq_ui8(4, 4), true); + assert_eq!(eq_ui8(72, 72), true); + assert_eq!(eq_ui8(100, 100), true); + assert_eq!(eq_ui8(162, 162), true); + } + #[test] + fn test_93() { + assert_eq!(eq_ui8(254, 254), true); + assert_eq!(eq_ui8(255, 255), true); + assert_eq!(ge_si16(-32768, -32767), false); + assert_eq!(ge_si16(-32768, -32547), false); + assert_eq!(ge_si16(-32768, 0), false); + assert_eq!(ge_si16(-32768, 1), false); + assert_eq!(ge_si16(-32768, 2), false); + assert_eq!(ge_si16(-32768, 3), false); + assert_eq!(ge_si16(-32768, 4), false); + assert_eq!(ge_si16(-32768, 10486), false); + } + #[test] + fn test_94() { + assert_eq!(ge_si16(-32768, 16514), false); + assert_eq!(ge_si16(-32768, 32766), false); + assert_eq!(ge_si16(-32768, 32767), false); + assert_eq!(ge_si16(-32767, -32547), false); + assert_eq!(ge_si16(-32767, 0), false); + assert_eq!(ge_si16(-32767, 1), false); + assert_eq!(ge_si16(-32767, 2), false); + assert_eq!(ge_si16(-32767, 3), false); + assert_eq!(ge_si16(-32767, 4), false); + assert_eq!(ge_si16(-32767, 10486), false); + } + #[test] + fn test_95() { + assert_eq!(ge_si16(-32767, 16514), false); + assert_eq!(ge_si16(-32767, 32766), false); + assert_eq!(ge_si16(-32767, 32767), false); + assert_eq!(ge_si16(-32547, 0), false); + assert_eq!(ge_si16(-32547, 1), false); + assert_eq!(ge_si16(-32547, 2), false); + assert_eq!(ge_si16(-32547, 3), false); + assert_eq!(ge_si16(-32547, 4), false); + assert_eq!(ge_si16(-32547, 10486), false); + assert_eq!(ge_si16(-32547, 16514), false); + } + #[test] + fn test_96() { + assert_eq!(ge_si16(-32547, 32766), false); + assert_eq!(ge_si16(-32547, 32767), false); + assert_eq!(ge_si16(0, 1), false); + assert_eq!(ge_si16(0, 2), false); + assert_eq!(ge_si16(0, 3), false); + assert_eq!(ge_si16(0, 4), false); + assert_eq!(ge_si16(0, 10486), false); + assert_eq!(ge_si16(0, 16514), false); + assert_eq!(ge_si16(0, 32766), false); + assert_eq!(ge_si16(0, 32767), false); + } + #[test] + fn test_97() { + assert_eq!(ge_si16(1, 2), false); + assert_eq!(ge_si16(1, 3), false); + assert_eq!(ge_si16(1, 4), false); + assert_eq!(ge_si16(1, 10486), false); + assert_eq!(ge_si16(1, 16514), false); + assert_eq!(ge_si16(1, 32766), false); + assert_eq!(ge_si16(1, 32767), false); + assert_eq!(ge_si16(2, 3), false); + assert_eq!(ge_si16(2, 4), false); + assert_eq!(ge_si16(2, 10486), false); + } + #[test] + fn test_98() { + assert_eq!(ge_si16(2, 16514), false); + assert_eq!(ge_si16(2, 32766), false); + assert_eq!(ge_si16(2, 32767), false); + assert_eq!(ge_si16(3, 4), false); + assert_eq!(ge_si16(3, 10486), false); + assert_eq!(ge_si16(3, 16514), false); + assert_eq!(ge_si16(3, 32766), false); + assert_eq!(ge_si16(3, 32767), false); + assert_eq!(ge_si16(4, 10486), false); + assert_eq!(ge_si16(4, 16514), false); + } + #[test] + fn test_99() { + assert_eq!(ge_si16(4, 32766), false); + assert_eq!(ge_si16(4, 32767), false); + assert_eq!(ge_si16(10486, 16514), false); + assert_eq!(ge_si16(10486, 32766), false); + assert_eq!(ge_si16(10486, 32767), false); + assert_eq!(ge_si16(16514, 32766), false); + assert_eq!(ge_si16(16514, 32767), false); + assert_eq!(ge_si16(32766, 32767), false); + assert_eq!(ge_si16(-32768, -32768), true); + assert_eq!(ge_si16(-32767, -32768), true); + } + #[test] + fn test_100() { + assert_eq!(ge_si16(-32767, -32767), true); + assert_eq!(ge_si16(-32547, -32768), true); + assert_eq!(ge_si16(-32547, -32767), true); + assert_eq!(ge_si16(-32547, -32547), true); + assert_eq!(ge_si16(0, -32768), true); + assert_eq!(ge_si16(0, -32767), true); + assert_eq!(ge_si16(0, -32547), true); + assert_eq!(ge_si16(0, 0), true); + assert_eq!(ge_si16(1, -32768), true); + assert_eq!(ge_si16(1, -32767), true); + } + #[test] + fn test_101() { + assert_eq!(ge_si16(1, -32547), true); + assert_eq!(ge_si16(1, 0), true); + assert_eq!(ge_si16(1, 1), true); + assert_eq!(ge_si16(2, -32768), true); + assert_eq!(ge_si16(2, -32767), true); + assert_eq!(ge_si16(2, -32547), true); + assert_eq!(ge_si16(2, 0), true); + assert_eq!(ge_si16(2, 1), true); + assert_eq!(ge_si16(2, 2), true); + assert_eq!(ge_si16(3, -32768), true); + } + #[test] + fn test_102() { + assert_eq!(ge_si16(3, -32767), true); + assert_eq!(ge_si16(3, -32547), true); + assert_eq!(ge_si16(3, 0), true); + assert_eq!(ge_si16(3, 1), true); + assert_eq!(ge_si16(3, 2), true); + assert_eq!(ge_si16(3, 3), true); + assert_eq!(ge_si16(4, -32768), true); + assert_eq!(ge_si16(4, -32767), true); + assert_eq!(ge_si16(4, -32547), true); + assert_eq!(ge_si16(4, 0), true); + } + #[test] + fn test_103() { + assert_eq!(ge_si16(4, 1), true); + assert_eq!(ge_si16(4, 2), true); + assert_eq!(ge_si16(4, 3), true); + assert_eq!(ge_si16(4, 4), true); + assert_eq!(ge_si16(10486, -32768), true); + assert_eq!(ge_si16(10486, -32767), true); + assert_eq!(ge_si16(10486, -32547), true); + assert_eq!(ge_si16(10486, 0), true); + assert_eq!(ge_si16(10486, 1), true); + assert_eq!(ge_si16(10486, 2), true); + } + #[test] + fn test_104() { + assert_eq!(ge_si16(10486, 3), true); + assert_eq!(ge_si16(10486, 4), true); + assert_eq!(ge_si16(10486, 10486), true); + assert_eq!(ge_si16(16514, -32768), true); + assert_eq!(ge_si16(16514, -32767), true); + assert_eq!(ge_si16(16514, -32547), true); + assert_eq!(ge_si16(16514, 0), true); + assert_eq!(ge_si16(16514, 1), true); + assert_eq!(ge_si16(16514, 2), true); + assert_eq!(ge_si16(16514, 3), true); + } + #[test] + fn test_105() { + assert_eq!(ge_si16(16514, 4), true); + assert_eq!(ge_si16(16514, 10486), true); + assert_eq!(ge_si16(16514, 16514), true); + assert_eq!(ge_si16(32766, -32768), true); + assert_eq!(ge_si16(32766, -32767), true); + assert_eq!(ge_si16(32766, -32547), true); + assert_eq!(ge_si16(32766, 0), true); + assert_eq!(ge_si16(32766, 1), true); + assert_eq!(ge_si16(32766, 2), true); + assert_eq!(ge_si16(32766, 3), true); + } + #[test] + fn test_106() { + assert_eq!(ge_si16(32766, 4), true); + assert_eq!(ge_si16(32766, 10486), true); + assert_eq!(ge_si16(32766, 16514), true); + assert_eq!(ge_si16(32766, 32766), true); + assert_eq!(ge_si16(32767, -32768), true); + assert_eq!(ge_si16(32767, -32767), true); + assert_eq!(ge_si16(32767, -32547), true); + assert_eq!(ge_si16(32767, 0), true); + assert_eq!(ge_si16(32767, 1), true); + assert_eq!(ge_si16(32767, 2), true); + } + #[test] + fn test_107() { + assert_eq!(ge_si16(32767, 3), true); + assert_eq!(ge_si16(32767, 4), true); + assert_eq!(ge_si16(32767, 10486), true); + assert_eq!(ge_si16(32767, 16514), true); + assert_eq!(ge_si16(32767, 32766), true); + assert_eq!(ge_si16(32767, 32767), true); + assert_eq!(ge_si32(-2147483648, -2147483647), false); + assert_eq!(ge_si32(-2147483648, -1713183800), false); + assert_eq!(ge_si32(-2147483648, -1252582164), false); + assert_eq!(ge_si32(-2147483648, -1035405763), false); + } + #[test] + fn test_108() { + assert_eq!(ge_si32(-2147483648, 0), false); + assert_eq!(ge_si32(-2147483648, 1), false); + assert_eq!(ge_si32(-2147483648, 2), false); + assert_eq!(ge_si32(-2147483648, 3), false); + assert_eq!(ge_si32(-2147483648, 4), false); + assert_eq!(ge_si32(-2147483648, 2147483646), false); + assert_eq!(ge_si32(-2147483648, 2147483647), false); + assert_eq!(ge_si32(-2147483647, -1713183800), false); + assert_eq!(ge_si32(-2147483647, -1252582164), false); + assert_eq!(ge_si32(-2147483647, -1035405763), false); + } + #[test] + fn test_109() { + assert_eq!(ge_si32(-2147483647, 0), false); + assert_eq!(ge_si32(-2147483647, 1), false); + assert_eq!(ge_si32(-2147483647, 2), false); + assert_eq!(ge_si32(-2147483647, 3), false); + assert_eq!(ge_si32(-2147483647, 4), false); + assert_eq!(ge_si32(-2147483647, 2147483646), false); + assert_eq!(ge_si32(-2147483647, 2147483647), false); + assert_eq!(ge_si32(-1713183800, -1252582164), false); + assert_eq!(ge_si32(-1713183800, -1035405763), false); + assert_eq!(ge_si32(-1713183800, 0), false); + } + #[test] + fn test_110() { + assert_eq!(ge_si32(-1713183800, 1), false); + assert_eq!(ge_si32(-1713183800, 2), false); + assert_eq!(ge_si32(-1713183800, 3), false); + assert_eq!(ge_si32(-1713183800, 4), false); + assert_eq!(ge_si32(-1713183800, 2147483646), false); + assert_eq!(ge_si32(-1713183800, 2147483647), false); + assert_eq!(ge_si32(-1252582164, -1035405763), false); + assert_eq!(ge_si32(-1252582164, 0), false); + assert_eq!(ge_si32(-1252582164, 1), false); + assert_eq!(ge_si32(-1252582164, 2), false); + } + #[test] + fn test_111() { + assert_eq!(ge_si32(-1252582164, 3), false); + assert_eq!(ge_si32(-1252582164, 4), false); + assert_eq!(ge_si32(-1252582164, 2147483646), false); + assert_eq!(ge_si32(-1252582164, 2147483647), false); + assert_eq!(ge_si32(-1035405763, 0), false); + assert_eq!(ge_si32(-1035405763, 1), false); + assert_eq!(ge_si32(-1035405763, 2), false); + assert_eq!(ge_si32(-1035405763, 3), false); + assert_eq!(ge_si32(-1035405763, 4), false); + assert_eq!(ge_si32(-1035405763, 2147483646), false); + } + #[test] + fn test_112() { + assert_eq!(ge_si32(-1035405763, 2147483647), false); + assert_eq!(ge_si32(0, 1), false); + assert_eq!(ge_si32(0, 2), false); + assert_eq!(ge_si32(0, 3), false); + assert_eq!(ge_si32(0, 4), false); + assert_eq!(ge_si32(0, 2147483646), false); + assert_eq!(ge_si32(0, 2147483647), false); + assert_eq!(ge_si32(1, 2), false); + assert_eq!(ge_si32(1, 3), false); + assert_eq!(ge_si32(1, 4), false); + } + #[test] + fn test_113() { + assert_eq!(ge_si32(1, 2147483646), false); + assert_eq!(ge_si32(1, 2147483647), false); + assert_eq!(ge_si32(2, 3), false); + assert_eq!(ge_si32(2, 4), false); + assert_eq!(ge_si32(2, 2147483646), false); + assert_eq!(ge_si32(2, 2147483647), false); + assert_eq!(ge_si32(3, 4), false); + assert_eq!(ge_si32(3, 2147483646), false); + assert_eq!(ge_si32(3, 2147483647), false); + assert_eq!(ge_si32(4, 2147483646), false); + } + #[test] + fn test_114() { + assert_eq!(ge_si32(4, 2147483647), false); + assert_eq!(ge_si32(2147483646, 2147483647), false); + assert_eq!(ge_si32(-2147483648, -2147483648), true); + assert_eq!(ge_si32(-2147483647, -2147483648), true); + assert_eq!(ge_si32(-2147483647, -2147483647), true); + assert_eq!(ge_si32(-1713183800, -2147483648), true); + assert_eq!(ge_si32(-1713183800, -2147483647), true); + assert_eq!(ge_si32(-1713183800, -1713183800), true); + assert_eq!(ge_si32(-1252582164, -2147483648), true); + assert_eq!(ge_si32(-1252582164, -2147483647), true); + } + #[test] + fn test_115() { + assert_eq!(ge_si32(-1252582164, -1713183800), true); + assert_eq!(ge_si32(-1252582164, -1252582164), true); + assert_eq!(ge_si32(-1035405763, -2147483648), true); + assert_eq!(ge_si32(-1035405763, -2147483647), true); + assert_eq!(ge_si32(-1035405763, -1713183800), true); + assert_eq!(ge_si32(-1035405763, -1252582164), true); + assert_eq!(ge_si32(-1035405763, -1035405763), true); + assert_eq!(ge_si32(0, -2147483648), true); + assert_eq!(ge_si32(0, -2147483647), true); + assert_eq!(ge_si32(0, -1713183800), true); + } + #[test] + fn test_116() { + assert_eq!(ge_si32(0, -1252582164), true); + assert_eq!(ge_si32(0, -1035405763), true); + assert_eq!(ge_si32(0, 0), true); + assert_eq!(ge_si32(1, -2147483648), true); + assert_eq!(ge_si32(1, -2147483647), true); + assert_eq!(ge_si32(1, -1713183800), true); + assert_eq!(ge_si32(1, -1252582164), true); + assert_eq!(ge_si32(1, -1035405763), true); + assert_eq!(ge_si32(1, 0), true); + assert_eq!(ge_si32(1, 1), true); + } + #[test] + fn test_117() { + assert_eq!(ge_si32(2, -2147483648), true); + assert_eq!(ge_si32(2, -2147483647), true); + assert_eq!(ge_si32(2, -1713183800), true); + assert_eq!(ge_si32(2, -1252582164), true); + assert_eq!(ge_si32(2, -1035405763), true); + assert_eq!(ge_si32(2, 0), true); + assert_eq!(ge_si32(2, 1), true); + assert_eq!(ge_si32(2, 2), true); + assert_eq!(ge_si32(3, -2147483648), true); + assert_eq!(ge_si32(3, -2147483647), true); + } + #[test] + fn test_118() { + assert_eq!(ge_si32(3, -1713183800), true); + assert_eq!(ge_si32(3, -1252582164), true); + assert_eq!(ge_si32(3, -1035405763), true); + assert_eq!(ge_si32(3, 0), true); + assert_eq!(ge_si32(3, 1), true); + assert_eq!(ge_si32(3, 2), true); + assert_eq!(ge_si32(3, 3), true); + assert_eq!(ge_si32(4, -2147483648), true); + assert_eq!(ge_si32(4, -2147483647), true); + assert_eq!(ge_si32(4, -1713183800), true); + } + #[test] + fn test_119() { + assert_eq!(ge_si32(4, -1252582164), true); + assert_eq!(ge_si32(4, -1035405763), true); + assert_eq!(ge_si32(4, 0), true); + assert_eq!(ge_si32(4, 1), true); + assert_eq!(ge_si32(4, 2), true); + assert_eq!(ge_si32(4, 3), true); + assert_eq!(ge_si32(4, 4), true); + assert_eq!(ge_si32(2147483646, -2147483648), true); + assert_eq!(ge_si32(2147483646, -2147483647), true); + assert_eq!(ge_si32(2147483646, -1713183800), true); + } + #[test] + fn test_120() { + assert_eq!(ge_si32(2147483646, -1252582164), true); + assert_eq!(ge_si32(2147483646, -1035405763), true); + assert_eq!(ge_si32(2147483646, 0), true); + assert_eq!(ge_si32(2147483646, 1), true); + assert_eq!(ge_si32(2147483646, 2), true); + assert_eq!(ge_si32(2147483646, 3), true); + assert_eq!(ge_si32(2147483646, 4), true); + assert_eq!(ge_si32(2147483646, 2147483646), true); + assert_eq!(ge_si32(2147483647, -2147483648), true); + assert_eq!(ge_si32(2147483647, -2147483647), true); + } + #[test] + fn test_121() { + assert_eq!(ge_si32(2147483647, -1713183800), true); + assert_eq!(ge_si32(2147483647, -1252582164), true); + assert_eq!(ge_si32(2147483647, -1035405763), true); + assert_eq!(ge_si32(2147483647, 0), true); + assert_eq!(ge_si32(2147483647, 1), true); + assert_eq!(ge_si32(2147483647, 2), true); + assert_eq!(ge_si32(2147483647, 3), true); + assert_eq!(ge_si32(2147483647, 4), true); + assert_eq!(ge_si32(2147483647, 2147483646), true); + assert_eq!(ge_si32(2147483647, 2147483647), true); + } + #[test] + fn test_122() { + assert_eq!(ge_si64(-9223372036854775808, -9223372036854775807), false); + assert_eq!(ge_si64(-9223372036854775808, -1741927215160008704), false); + assert_eq!(ge_si64(-9223372036854775808, -1328271339354574848), false); + assert_eq!(ge_si64(-9223372036854775808, 0), false); + assert_eq!(ge_si64(-9223372036854775808, 1), false); + assert_eq!(ge_si64(-9223372036854775808, 2), false); + assert_eq!(ge_si64(-9223372036854775808, 3), false); + assert_eq!(ge_si64(-9223372036854775808, 4), false); + assert_eq!(ge_si64(-9223372036854775808, 5577148965131116544), false); + assert_eq!(ge_si64(-9223372036854775808, 9223372036854775806), false); + } + #[test] + fn test_123() { + assert_eq!(ge_si64(-9223372036854775808, 9223372036854775807), false); + assert_eq!(ge_si64(-9223372036854775807, -1741927215160008704), false); + assert_eq!(ge_si64(-9223372036854775807, -1328271339354574848), false); + assert_eq!(ge_si64(-9223372036854775807, 0), false); + assert_eq!(ge_si64(-9223372036854775807, 1), false); + assert_eq!(ge_si64(-9223372036854775807, 2), false); + assert_eq!(ge_si64(-9223372036854775807, 3), false); + assert_eq!(ge_si64(-9223372036854775807, 4), false); + assert_eq!(ge_si64(-9223372036854775807, 5577148965131116544), false); + assert_eq!(ge_si64(-9223372036854775807, 9223372036854775806), false); + } + #[test] + fn test_124() { + assert_eq!(ge_si64(-9223372036854775807, 9223372036854775807), false); + assert_eq!(ge_si64(-1741927215160008704, -1328271339354574848), false); + assert_eq!(ge_si64(-1741927215160008704, 0), false); + assert_eq!(ge_si64(-1741927215160008704, 1), false); + assert_eq!(ge_si64(-1741927215160008704, 2), false); + assert_eq!(ge_si64(-1741927215160008704, 3), false); + assert_eq!(ge_si64(-1741927215160008704, 4), false); + assert_eq!(ge_si64(-1741927215160008704, 5577148965131116544), false); + assert_eq!(ge_si64(-1741927215160008704, 9223372036854775806), false); + assert_eq!(ge_si64(-1741927215160008704, 9223372036854775807), false); + } + #[test] + fn test_125() { + assert_eq!(ge_si64(-1328271339354574848, 0), false); + assert_eq!(ge_si64(-1328271339354574848, 1), false); + assert_eq!(ge_si64(-1328271339354574848, 2), false); + assert_eq!(ge_si64(-1328271339354574848, 3), false); + assert_eq!(ge_si64(-1328271339354574848, 4), false); + assert_eq!(ge_si64(-1328271339354574848, 5577148965131116544), false); + assert_eq!(ge_si64(-1328271339354574848, 9223372036854775806), false); + assert_eq!(ge_si64(-1328271339354574848, 9223372036854775807), false); + assert_eq!(ge_si64(0, 1), false); + assert_eq!(ge_si64(0, 2), false); + } + #[test] + fn test_126() { + assert_eq!(ge_si64(0, 3), false); + assert_eq!(ge_si64(0, 4), false); + assert_eq!(ge_si64(0, 5577148965131116544), false); + assert_eq!(ge_si64(0, 9223372036854775806), false); + assert_eq!(ge_si64(0, 9223372036854775807), false); + assert_eq!(ge_si64(1, 2), false); + assert_eq!(ge_si64(1, 3), false); + assert_eq!(ge_si64(1, 4), false); + assert_eq!(ge_si64(1, 5577148965131116544), false); + assert_eq!(ge_si64(1, 9223372036854775806), false); + } + #[test] + fn test_127() { + assert_eq!(ge_si64(1, 9223372036854775807), false); + assert_eq!(ge_si64(2, 3), false); + assert_eq!(ge_si64(2, 4), false); + assert_eq!(ge_si64(2, 5577148965131116544), false); + assert_eq!(ge_si64(2, 9223372036854775806), false); + assert_eq!(ge_si64(2, 9223372036854775807), false); + assert_eq!(ge_si64(3, 4), false); + assert_eq!(ge_si64(3, 5577148965131116544), false); + assert_eq!(ge_si64(3, 9223372036854775806), false); + assert_eq!(ge_si64(3, 9223372036854775807), false); + } + #[test] + fn test_128() { + assert_eq!(ge_si64(4, 5577148965131116544), false); + assert_eq!(ge_si64(4, 9223372036854775806), false); + assert_eq!(ge_si64(4, 9223372036854775807), false); + assert_eq!(ge_si64(5577148965131116544, 9223372036854775806), false); + assert_eq!(ge_si64(5577148965131116544, 9223372036854775807), false); + assert_eq!(ge_si64(9223372036854775806, 9223372036854775807), false); + assert_eq!(ge_si64(-9223372036854775808, -9223372036854775808), true); + assert_eq!(ge_si64(-9223372036854775807, -9223372036854775808), true); + assert_eq!(ge_si64(-9223372036854775807, -9223372036854775807), true); + assert_eq!(ge_si64(-1741927215160008704, -9223372036854775808), true); + } + #[test] + fn test_129() { + assert_eq!(ge_si64(-1741927215160008704, -9223372036854775807), true); + assert_eq!(ge_si64(-1741927215160008704, -1741927215160008704), true); + assert_eq!(ge_si64(-1328271339354574848, -9223372036854775808), true); + assert_eq!(ge_si64(-1328271339354574848, -9223372036854775807), true); + assert_eq!(ge_si64(-1328271339354574848, -1741927215160008704), true); + assert_eq!(ge_si64(-1328271339354574848, -1328271339354574848), true); + assert_eq!(ge_si64(0, -9223372036854775808), true); + assert_eq!(ge_si64(0, -9223372036854775807), true); + assert_eq!(ge_si64(0, -1741927215160008704), true); + assert_eq!(ge_si64(0, -1328271339354574848), true); + } + #[test] + fn test_130() { + assert_eq!(ge_si64(0, 0), true); + assert_eq!(ge_si64(1, -9223372036854775808), true); + assert_eq!(ge_si64(1, -9223372036854775807), true); + assert_eq!(ge_si64(1, -1741927215160008704), true); + assert_eq!(ge_si64(1, -1328271339354574848), true); + assert_eq!(ge_si64(1, 0), true); + assert_eq!(ge_si64(1, 1), true); + assert_eq!(ge_si64(2, -9223372036854775808), true); + assert_eq!(ge_si64(2, -9223372036854775807), true); + assert_eq!(ge_si64(2, -1741927215160008704), true); + } + #[test] + fn test_131() { + assert_eq!(ge_si64(2, -1328271339354574848), true); + assert_eq!(ge_si64(2, 0), true); + assert_eq!(ge_si64(2, 1), true); + assert_eq!(ge_si64(2, 2), true); + assert_eq!(ge_si64(3, -9223372036854775808), true); + assert_eq!(ge_si64(3, -9223372036854775807), true); + assert_eq!(ge_si64(3, -1741927215160008704), true); + assert_eq!(ge_si64(3, -1328271339354574848), true); + assert_eq!(ge_si64(3, 0), true); + assert_eq!(ge_si64(3, 1), true); + } + #[test] + fn test_132() { + assert_eq!(ge_si64(3, 2), true); + assert_eq!(ge_si64(3, 3), true); + assert_eq!(ge_si64(4, -9223372036854775808), true); + assert_eq!(ge_si64(4, -9223372036854775807), true); + assert_eq!(ge_si64(4, -1741927215160008704), true); + assert_eq!(ge_si64(4, -1328271339354574848), true); + assert_eq!(ge_si64(4, 0), true); + assert_eq!(ge_si64(4, 1), true); + assert_eq!(ge_si64(4, 2), true); + assert_eq!(ge_si64(4, 3), true); + } + #[test] + fn test_133() { + assert_eq!(ge_si64(4, 4), true); + assert_eq!(ge_si64(5577148965131116544, -9223372036854775808), true); + assert_eq!(ge_si64(5577148965131116544, -9223372036854775807), true); + assert_eq!(ge_si64(5577148965131116544, -1741927215160008704), true); + assert_eq!(ge_si64(5577148965131116544, -1328271339354574848), true); + assert_eq!(ge_si64(5577148965131116544, 0), true); + assert_eq!(ge_si64(5577148965131116544, 1), true); + assert_eq!(ge_si64(5577148965131116544, 2), true); + assert_eq!(ge_si64(5577148965131116544, 3), true); + assert_eq!(ge_si64(5577148965131116544, 4), true); + } + #[test] + fn test_134() { + assert_eq!(ge_si64(5577148965131116544, 5577148965131116544), true); + assert_eq!(ge_si64(9223372036854775806, -9223372036854775808), true); + assert_eq!(ge_si64(9223372036854775806, -9223372036854775807), true); + assert_eq!(ge_si64(9223372036854775806, -1741927215160008704), true); + assert_eq!(ge_si64(9223372036854775806, -1328271339354574848), true); + assert_eq!(ge_si64(9223372036854775806, 0), true); + assert_eq!(ge_si64(9223372036854775806, 1), true); + assert_eq!(ge_si64(9223372036854775806, 2), true); + assert_eq!(ge_si64(9223372036854775806, 3), true); + assert_eq!(ge_si64(9223372036854775806, 4), true); + } + #[test] + fn test_135() { + assert_eq!(ge_si64(9223372036854775806, 5577148965131116544), true); + assert_eq!(ge_si64(9223372036854775806, 9223372036854775806), true); + assert_eq!(ge_si64(9223372036854775807, -9223372036854775808), true); + assert_eq!(ge_si64(9223372036854775807, -9223372036854775807), true); + assert_eq!(ge_si64(9223372036854775807, -1741927215160008704), true); + assert_eq!(ge_si64(9223372036854775807, -1328271339354574848), true); + assert_eq!(ge_si64(9223372036854775807, 0), true); + assert_eq!(ge_si64(9223372036854775807, 1), true); + assert_eq!(ge_si64(9223372036854775807, 2), true); + assert_eq!(ge_si64(9223372036854775807, 3), true); + } + #[test] + fn test_136() { + assert_eq!(ge_si64(9223372036854775807, 4), true); + assert_eq!(ge_si64(9223372036854775807, 5577148965131116544), true); + assert_eq!(ge_si64(9223372036854775807, 9223372036854775806), true); + assert_eq!(ge_si64(9223372036854775807, 9223372036854775807), true); + assert_eq!(ge_si8(-128, -127), false); + assert_eq!(ge_si8(-128, 0), false); + assert_eq!(ge_si8(-128, 1), false); + assert_eq!(ge_si8(-128, 2), false); + assert_eq!(ge_si8(-128, 3), false); + assert_eq!(ge_si8(-128, 4), false); + } + #[test] + fn test_137() { + assert_eq!(ge_si8(-128, 16), false); + assert_eq!(ge_si8(-128, 126), false); + assert_eq!(ge_si8(-128, 127), false); + assert_eq!(ge_si8(-127, 0), false); + assert_eq!(ge_si8(-127, 1), false); + assert_eq!(ge_si8(-127, 2), false); + assert_eq!(ge_si8(-127, 3), false); + assert_eq!(ge_si8(-127, 4), false); + assert_eq!(ge_si8(-127, 16), false); + assert_eq!(ge_si8(-127, 126), false); + } + #[test] + fn test_138() { + assert_eq!(ge_si8(-127, 127), false); + assert_eq!(ge_si8(0, 1), false); + assert_eq!(ge_si8(0, 2), false); + assert_eq!(ge_si8(0, 3), false); + assert_eq!(ge_si8(0, 4), false); + assert_eq!(ge_si8(0, 16), false); + assert_eq!(ge_si8(0, 126), false); + assert_eq!(ge_si8(0, 127), false); + assert_eq!(ge_si8(1, 2), false); + assert_eq!(ge_si8(1, 3), false); + } + #[test] + fn test_139() { + assert_eq!(ge_si8(1, 4), false); + assert_eq!(ge_si8(1, 16), false); + assert_eq!(ge_si8(1, 126), false); + assert_eq!(ge_si8(1, 127), false); + assert_eq!(ge_si8(2, 3), false); + assert_eq!(ge_si8(2, 4), false); + assert_eq!(ge_si8(2, 16), false); + assert_eq!(ge_si8(2, 126), false); + assert_eq!(ge_si8(2, 127), false); + assert_eq!(ge_si8(3, 4), false); + } + #[test] + fn test_140() { + assert_eq!(ge_si8(3, 16), false); + assert_eq!(ge_si8(3, 126), false); + assert_eq!(ge_si8(3, 127), false); + assert_eq!(ge_si8(4, 16), false); + assert_eq!(ge_si8(4, 126), false); + assert_eq!(ge_si8(4, 127), false); + assert_eq!(ge_si8(16, 126), false); + assert_eq!(ge_si8(16, 127), false); + assert_eq!(ge_si8(126, 127), false); + assert_eq!(ge_si8(-128, -128), true); + } + #[test] + fn test_141() { + assert_eq!(ge_si8(-127, -128), true); + assert_eq!(ge_si8(-127, -127), true); + assert_eq!(ge_si8(0, -128), true); + assert_eq!(ge_si8(0, -127), true); + assert_eq!(ge_si8(0, 0), true); + assert_eq!(ge_si8(1, -128), true); + assert_eq!(ge_si8(1, -127), true); + assert_eq!(ge_si8(1, 0), true); + assert_eq!(ge_si8(1, 1), true); + assert_eq!(ge_si8(2, -128), true); + } + #[test] + fn test_142() { + assert_eq!(ge_si8(2, -127), true); + assert_eq!(ge_si8(2, 0), true); + assert_eq!(ge_si8(2, 1), true); + assert_eq!(ge_si8(2, 2), true); + assert_eq!(ge_si8(3, -128), true); + assert_eq!(ge_si8(3, -127), true); + assert_eq!(ge_si8(3, 0), true); + assert_eq!(ge_si8(3, 1), true); + assert_eq!(ge_si8(3, 2), true); + assert_eq!(ge_si8(3, 3), true); + } + #[test] + fn test_143() { + assert_eq!(ge_si8(4, -128), true); + assert_eq!(ge_si8(4, -127), true); + assert_eq!(ge_si8(4, 0), true); + assert_eq!(ge_si8(4, 1), true); + assert_eq!(ge_si8(4, 2), true); + assert_eq!(ge_si8(4, 3), true); + assert_eq!(ge_si8(4, 4), true); + assert_eq!(ge_si8(16, -128), true); + assert_eq!(ge_si8(16, -127), true); + assert_eq!(ge_si8(16, 0), true); + } + #[test] + fn test_144() { + assert_eq!(ge_si8(16, 1), true); + assert_eq!(ge_si8(16, 2), true); + assert_eq!(ge_si8(16, 3), true); + assert_eq!(ge_si8(16, 4), true); + assert_eq!(ge_si8(16, 16), true); + assert_eq!(ge_si8(126, -128), true); + assert_eq!(ge_si8(126, -127), true); + assert_eq!(ge_si8(126, 0), true); + assert_eq!(ge_si8(126, 1), true); + assert_eq!(ge_si8(126, 2), true); + } + #[test] + fn test_145() { + assert_eq!(ge_si8(126, 3), true); + assert_eq!(ge_si8(126, 4), true); + assert_eq!(ge_si8(126, 16), true); + assert_eq!(ge_si8(126, 126), true); + assert_eq!(ge_si8(127, -128), true); + assert_eq!(ge_si8(127, -127), true); + assert_eq!(ge_si8(127, 0), true); + assert_eq!(ge_si8(127, 1), true); + assert_eq!(ge_si8(127, 2), true); + assert_eq!(ge_si8(127, 3), true); + } + #[test] + fn test_146() { + assert_eq!(ge_si8(127, 4), true); + assert_eq!(ge_si8(127, 16), true); + assert_eq!(ge_si8(127, 126), true); + assert_eq!(ge_si8(127, 127), true); + assert_eq!(ge_ui16(0, 1), false); + assert_eq!(ge_ui16(0, 2), false); + assert_eq!(ge_ui16(0, 3), false); + assert_eq!(ge_ui16(0, 4), false); + assert_eq!(ge_ui16(0, 1717), false); + assert_eq!(ge_ui16(0, 17988), false); + } + #[test] + fn test_147() { + assert_eq!(ge_ui16(0, 65096), false); + assert_eq!(ge_ui16(0, 65534), false); + assert_eq!(ge_ui16(0, 65535), false); + assert_eq!(ge_ui16(1, 2), false); + assert_eq!(ge_ui16(1, 3), false); + assert_eq!(ge_ui16(1, 4), false); + assert_eq!(ge_ui16(1, 1717), false); + assert_eq!(ge_ui16(1, 17988), false); + assert_eq!(ge_ui16(1, 65096), false); + assert_eq!(ge_ui16(1, 65534), false); + } + #[test] + fn test_148() { + assert_eq!(ge_ui16(1, 65535), false); + assert_eq!(ge_ui16(2, 3), false); + assert_eq!(ge_ui16(2, 4), false); + assert_eq!(ge_ui16(2, 1717), false); + assert_eq!(ge_ui16(2, 17988), false); + assert_eq!(ge_ui16(2, 65096), false); + assert_eq!(ge_ui16(2, 65534), false); + assert_eq!(ge_ui16(2, 65535), false); + assert_eq!(ge_ui16(3, 4), false); + assert_eq!(ge_ui16(3, 1717), false); + } + #[test] + fn test_149() { + assert_eq!(ge_ui16(3, 17988), false); + assert_eq!(ge_ui16(3, 65096), false); + assert_eq!(ge_ui16(3, 65534), false); + assert_eq!(ge_ui16(3, 65535), false); + assert_eq!(ge_ui16(4, 1717), false); + assert_eq!(ge_ui16(4, 17988), false); + assert_eq!(ge_ui16(4, 65096), false); + assert_eq!(ge_ui16(4, 65534), false); + assert_eq!(ge_ui16(4, 65535), false); + assert_eq!(ge_ui16(1717, 17988), false); + } + #[test] + fn test_150() { + assert_eq!(ge_ui16(1717, 65096), false); + assert_eq!(ge_ui16(1717, 65534), false); + assert_eq!(ge_ui16(1717, 65535), false); + assert_eq!(ge_ui16(17988, 65096), false); + assert_eq!(ge_ui16(17988, 65534), false); + assert_eq!(ge_ui16(17988, 65535), false); + assert_eq!(ge_ui16(65096, 65534), false); + assert_eq!(ge_ui16(65096, 65535), false); + assert_eq!(ge_ui16(65534, 65535), false); + assert_eq!(ge_ui16(0, 0), true); + } + #[test] + fn test_151() { + assert_eq!(ge_ui16(1, 0), true); + assert_eq!(ge_ui16(1, 1), true); + assert_eq!(ge_ui16(2, 0), true); + assert_eq!(ge_ui16(2, 1), true); + assert_eq!(ge_ui16(2, 2), true); + assert_eq!(ge_ui16(3, 0), true); + assert_eq!(ge_ui16(3, 1), true); + assert_eq!(ge_ui16(3, 2), true); + assert_eq!(ge_ui16(3, 3), true); + assert_eq!(ge_ui16(4, 0), true); + } + #[test] + fn test_152() { + assert_eq!(ge_ui16(4, 1), true); + assert_eq!(ge_ui16(4, 2), true); + assert_eq!(ge_ui16(4, 3), true); + assert_eq!(ge_ui16(4, 4), true); + assert_eq!(ge_ui16(1717, 0), true); + assert_eq!(ge_ui16(1717, 1), true); + assert_eq!(ge_ui16(1717, 2), true); + assert_eq!(ge_ui16(1717, 3), true); + assert_eq!(ge_ui16(1717, 4), true); + assert_eq!(ge_ui16(1717, 1717), true); + } + #[test] + fn test_153() { + assert_eq!(ge_ui16(17988, 0), true); + assert_eq!(ge_ui16(17988, 1), true); + assert_eq!(ge_ui16(17988, 2), true); + assert_eq!(ge_ui16(17988, 3), true); + assert_eq!(ge_ui16(17988, 4), true); + assert_eq!(ge_ui16(17988, 1717), true); + assert_eq!(ge_ui16(17988, 17988), true); + assert_eq!(ge_ui16(65096, 0), true); + assert_eq!(ge_ui16(65096, 1), true); + assert_eq!(ge_ui16(65096, 2), true); + } + #[test] + fn test_154() { + assert_eq!(ge_ui16(65096, 3), true); + assert_eq!(ge_ui16(65096, 4), true); + assert_eq!(ge_ui16(65096, 1717), true); + assert_eq!(ge_ui16(65096, 17988), true); + assert_eq!(ge_ui16(65096, 65096), true); + assert_eq!(ge_ui16(65534, 0), true); + assert_eq!(ge_ui16(65534, 1), true); + assert_eq!(ge_ui16(65534, 2), true); + assert_eq!(ge_ui16(65534, 3), true); + assert_eq!(ge_ui16(65534, 4), true); + } + #[test] + fn test_155() { + assert_eq!(ge_ui16(65534, 1717), true); + assert_eq!(ge_ui16(65534, 17988), true); + assert_eq!(ge_ui16(65534, 65096), true); + assert_eq!(ge_ui16(65534, 65534), true); + assert_eq!(ge_ui16(65535, 0), true); + assert_eq!(ge_ui16(65535, 1), true); + assert_eq!(ge_ui16(65535, 2), true); + assert_eq!(ge_ui16(65535, 3), true); + assert_eq!(ge_ui16(65535, 4), true); + assert_eq!(ge_ui16(65535, 1717), true); + } + #[test] + fn test_156() { + assert_eq!(ge_ui16(65535, 17988), true); + assert_eq!(ge_ui16(65535, 65096), true); + assert_eq!(ge_ui16(65535, 65534), true); + assert_eq!(ge_ui16(65535, 65535), true); + assert_eq!(ge_ui32(0, 1), false); + assert_eq!(ge_ui32(0, 2), false); + assert_eq!(ge_ui32(0, 3), false); + assert_eq!(ge_ui32(0, 4), false); + assert_eq!(ge_ui32(0, 2119154652), false); + assert_eq!(ge_ui32(0, 3002788344), false); + } + #[test] + fn test_157() { + assert_eq!(ge_ui32(0, 3482297128), false); + assert_eq!(ge_ui32(0, 4294967294), false); + assert_eq!(ge_ui32(0, 4294967295), false); + assert_eq!(ge_ui32(1, 2), false); + assert_eq!(ge_ui32(1, 3), false); + assert_eq!(ge_ui32(1, 4), false); + assert_eq!(ge_ui32(1, 2119154652), false); + assert_eq!(ge_ui32(1, 3002788344), false); + assert_eq!(ge_ui32(1, 3482297128), false); + assert_eq!(ge_ui32(1, 4294967294), false); + } + #[test] + fn test_158() { + assert_eq!(ge_ui32(1, 4294967295), false); + assert_eq!(ge_ui32(2, 3), false); + assert_eq!(ge_ui32(2, 4), false); + assert_eq!(ge_ui32(2, 2119154652), false); + assert_eq!(ge_ui32(2, 3002788344), false); + assert_eq!(ge_ui32(2, 3482297128), false); + assert_eq!(ge_ui32(2, 4294967294), false); + assert_eq!(ge_ui32(2, 4294967295), false); + assert_eq!(ge_ui32(3, 4), false); + assert_eq!(ge_ui32(3, 2119154652), false); + } + #[test] + fn test_159() { + assert_eq!(ge_ui32(3, 3002788344), false); + assert_eq!(ge_ui32(3, 3482297128), false); + assert_eq!(ge_ui32(3, 4294967294), false); + assert_eq!(ge_ui32(3, 4294967295), false); + assert_eq!(ge_ui32(4, 2119154652), false); + assert_eq!(ge_ui32(4, 3002788344), false); + assert_eq!(ge_ui32(4, 3482297128), false); + assert_eq!(ge_ui32(4, 4294967294), false); + assert_eq!(ge_ui32(4, 4294967295), false); + assert_eq!(ge_ui32(2119154652, 3002788344), false); + } + #[test] + fn test_160() { + assert_eq!(ge_ui32(2119154652, 3482297128), false); + assert_eq!(ge_ui32(2119154652, 4294967294), false); + assert_eq!(ge_ui32(2119154652, 4294967295), false); + assert_eq!(ge_ui32(3002788344, 3482297128), false); + assert_eq!(ge_ui32(3002788344, 4294967294), false); + assert_eq!(ge_ui32(3002788344, 4294967295), false); + assert_eq!(ge_ui32(3482297128, 4294967294), false); + assert_eq!(ge_ui32(3482297128, 4294967295), false); + assert_eq!(ge_ui32(4294967294, 4294967295), false); + assert_eq!(ge_ui32(0, 0), true); + } + #[test] + fn test_161() { + assert_eq!(ge_ui32(1, 0), true); + assert_eq!(ge_ui32(1, 1), true); + assert_eq!(ge_ui32(2, 0), true); + assert_eq!(ge_ui32(2, 1), true); + assert_eq!(ge_ui32(2, 2), true); + assert_eq!(ge_ui32(3, 0), true); + assert_eq!(ge_ui32(3, 1), true); + assert_eq!(ge_ui32(3, 2), true); + assert_eq!(ge_ui32(3, 3), true); + assert_eq!(ge_ui32(4, 0), true); + } + #[test] + fn test_162() { + assert_eq!(ge_ui32(4, 1), true); + assert_eq!(ge_ui32(4, 2), true); + assert_eq!(ge_ui32(4, 3), true); + assert_eq!(ge_ui32(4, 4), true); + assert_eq!(ge_ui32(2119154652, 0), true); + assert_eq!(ge_ui32(2119154652, 1), true); + assert_eq!(ge_ui32(2119154652, 2), true); + assert_eq!(ge_ui32(2119154652, 3), true); + assert_eq!(ge_ui32(2119154652, 4), true); + assert_eq!(ge_ui32(2119154652, 2119154652), true); + } + #[test] + fn test_163() { + assert_eq!(ge_ui32(3002788344, 0), true); + assert_eq!(ge_ui32(3002788344, 1), true); + assert_eq!(ge_ui32(3002788344, 2), true); + assert_eq!(ge_ui32(3002788344, 3), true); + assert_eq!(ge_ui32(3002788344, 4), true); + assert_eq!(ge_ui32(3002788344, 2119154652), true); + assert_eq!(ge_ui32(3002788344, 3002788344), true); + assert_eq!(ge_ui32(3482297128, 0), true); + assert_eq!(ge_ui32(3482297128, 1), true); + assert_eq!(ge_ui32(3482297128, 2), true); + } + #[test] + fn test_164() { + assert_eq!(ge_ui32(3482297128, 3), true); + assert_eq!(ge_ui32(3482297128, 4), true); + assert_eq!(ge_ui32(3482297128, 2119154652), true); + assert_eq!(ge_ui32(3482297128, 3002788344), true); + assert_eq!(ge_ui32(3482297128, 3482297128), true); + assert_eq!(ge_ui32(4294967294, 0), true); + assert_eq!(ge_ui32(4294967294, 1), true); + assert_eq!(ge_ui32(4294967294, 2), true); + assert_eq!(ge_ui32(4294967294, 3), true); + assert_eq!(ge_ui32(4294967294, 4), true); + } + #[test] + fn test_165() { + assert_eq!(ge_ui32(4294967294, 2119154652), true); + assert_eq!(ge_ui32(4294967294, 3002788344), true); + assert_eq!(ge_ui32(4294967294, 3482297128), true); + assert_eq!(ge_ui32(4294967294, 4294967294), true); + assert_eq!(ge_ui32(4294967295, 0), true); + assert_eq!(ge_ui32(4294967295, 1), true); + assert_eq!(ge_ui32(4294967295, 2), true); + assert_eq!(ge_ui32(4294967295, 3), true); + assert_eq!(ge_ui32(4294967295, 4), true); + assert_eq!(ge_ui32(4294967295, 2119154652), true); + } + #[test] + fn test_166() { + assert_eq!(ge_ui32(4294967295, 3002788344), true); + assert_eq!(ge_ui32(4294967295, 3482297128), true); + assert_eq!(ge_ui32(4294967295, 4294967294), true); + assert_eq!(ge_ui32(4294967295, 4294967295), true); + assert_eq!(ge_ui64(0, 1), false); + assert_eq!(ge_ui64(0, 2), false); + assert_eq!(ge_ui64(0, 3), false); + assert_eq!(ge_ui64(0, 4), false); + assert_eq!(ge_ui64(0, 191084152064409600), false); + assert_eq!(ge_ui64(0, 11015955194427482112), false); + } + #[test] + fn test_167() { + assert_eq!(ge_ui64(0, 16990600415051759616), false); + assert_eq!(ge_ui64(0, 18446744073709551614), false); + assert_eq!(ge_ui64(0, 18446744073709551615), false); + assert_eq!(ge_ui64(1, 2), false); + assert_eq!(ge_ui64(1, 3), false); + assert_eq!(ge_ui64(1, 4), false); + assert_eq!(ge_ui64(1, 191084152064409600), false); + assert_eq!(ge_ui64(1, 11015955194427482112), false); + assert_eq!(ge_ui64(1, 16990600415051759616), false); + assert_eq!(ge_ui64(1, 18446744073709551614), false); + } + #[test] + fn test_168() { + assert_eq!(ge_ui64(1, 18446744073709551615), false); + assert_eq!(ge_ui64(2, 3), false); + assert_eq!(ge_ui64(2, 4), false); + assert_eq!(ge_ui64(2, 191084152064409600), false); + assert_eq!(ge_ui64(2, 11015955194427482112), false); + assert_eq!(ge_ui64(2, 16990600415051759616), false); + assert_eq!(ge_ui64(2, 18446744073709551614), false); + assert_eq!(ge_ui64(2, 18446744073709551615), false); + assert_eq!(ge_ui64(3, 4), false); + assert_eq!(ge_ui64(3, 191084152064409600), false); + } + #[test] + fn test_169() { + assert_eq!(ge_ui64(3, 11015955194427482112), false); + assert_eq!(ge_ui64(3, 16990600415051759616), false); + assert_eq!(ge_ui64(3, 18446744073709551614), false); + assert_eq!(ge_ui64(3, 18446744073709551615), false); + assert_eq!(ge_ui64(4, 191084152064409600), false); + assert_eq!(ge_ui64(4, 11015955194427482112), false); + assert_eq!(ge_ui64(4, 16990600415051759616), false); + assert_eq!(ge_ui64(4, 18446744073709551614), false); + assert_eq!(ge_ui64(4, 18446744073709551615), false); + assert_eq!(ge_ui64(191084152064409600, 11015955194427482112), false); + } + #[test] + fn test_170() { + assert_eq!(ge_ui64(191084152064409600, 16990600415051759616), false); + assert_eq!(ge_ui64(191084152064409600, 18446744073709551614), false); + assert_eq!(ge_ui64(191084152064409600, 18446744073709551615), false); + assert_eq!(ge_ui64(11015955194427482112, 16990600415051759616), false); + assert_eq!(ge_ui64(11015955194427482112, 18446744073709551614), false); + assert_eq!(ge_ui64(11015955194427482112, 18446744073709551615), false); + assert_eq!(ge_ui64(16990600415051759616, 18446744073709551614), false); + assert_eq!(ge_ui64(16990600415051759616, 18446744073709551615), false); + assert_eq!(ge_ui64(18446744073709551614, 18446744073709551615), false); + assert_eq!(ge_ui64(0, 0), true); + } + #[test] + fn test_171() { + assert_eq!(ge_ui64(1, 0), true); + assert_eq!(ge_ui64(1, 1), true); + assert_eq!(ge_ui64(2, 0), true); + assert_eq!(ge_ui64(2, 1), true); + assert_eq!(ge_ui64(2, 2), true); + assert_eq!(ge_ui64(3, 0), true); + assert_eq!(ge_ui64(3, 1), true); + assert_eq!(ge_ui64(3, 2), true); + assert_eq!(ge_ui64(3, 3), true); + assert_eq!(ge_ui64(4, 0), true); + } + #[test] + fn test_172() { + assert_eq!(ge_ui64(4, 1), true); + assert_eq!(ge_ui64(4, 2), true); + assert_eq!(ge_ui64(4, 3), true); + assert_eq!(ge_ui64(4, 4), true); + assert_eq!(ge_ui64(191084152064409600, 0), true); + assert_eq!(ge_ui64(191084152064409600, 1), true); + assert_eq!(ge_ui64(191084152064409600, 2), true); + assert_eq!(ge_ui64(191084152064409600, 3), true); + assert_eq!(ge_ui64(191084152064409600, 4), true); + assert_eq!(ge_ui64(191084152064409600, 191084152064409600), true); + } + #[test] + fn test_173() { + assert_eq!(ge_ui64(11015955194427482112, 0), true); + assert_eq!(ge_ui64(11015955194427482112, 1), true); + assert_eq!(ge_ui64(11015955194427482112, 2), true); + assert_eq!(ge_ui64(11015955194427482112, 3), true); + assert_eq!(ge_ui64(11015955194427482112, 4), true); + assert_eq!(ge_ui64(11015955194427482112, 191084152064409600), true); + assert_eq!(ge_ui64(11015955194427482112, 11015955194427482112), true); + assert_eq!(ge_ui64(16990600415051759616, 0), true); + assert_eq!(ge_ui64(16990600415051759616, 1), true); + assert_eq!(ge_ui64(16990600415051759616, 2), true); + } + #[test] + fn test_174() { + assert_eq!(ge_ui64(16990600415051759616, 3), true); + assert_eq!(ge_ui64(16990600415051759616, 4), true); + assert_eq!(ge_ui64(16990600415051759616, 191084152064409600), true); + assert_eq!(ge_ui64(16990600415051759616, 11015955194427482112), true); + assert_eq!(ge_ui64(16990600415051759616, 16990600415051759616), true); + assert_eq!(ge_ui64(18446744073709551614, 0), true); + assert_eq!(ge_ui64(18446744073709551614, 1), true); + assert_eq!(ge_ui64(18446744073709551614, 2), true); + assert_eq!(ge_ui64(18446744073709551614, 3), true); + assert_eq!(ge_ui64(18446744073709551614, 4), true); + } + #[test] + fn test_175() { + assert_eq!(ge_ui64(18446744073709551614, 191084152064409600), true); + assert_eq!(ge_ui64(18446744073709551614, 11015955194427482112), true); + assert_eq!(ge_ui64(18446744073709551614, 16990600415051759616), true); + assert_eq!(ge_ui64(18446744073709551614, 18446744073709551614), true); + assert_eq!(ge_ui64(18446744073709551615, 0), true); + assert_eq!(ge_ui64(18446744073709551615, 1), true); + assert_eq!(ge_ui64(18446744073709551615, 2), true); + assert_eq!(ge_ui64(18446744073709551615, 3), true); + assert_eq!(ge_ui64(18446744073709551615, 4), true); + assert_eq!(ge_ui64(18446744073709551615, 191084152064409600), true); + } + #[test] + fn test_176() { + assert_eq!(ge_ui64(18446744073709551615, 11015955194427482112), true); + assert_eq!(ge_ui64(18446744073709551615, 16990600415051759616), true); + assert_eq!(ge_ui64(18446744073709551615, 18446744073709551614), true); + assert_eq!(ge_ui64(18446744073709551615, 18446744073709551615), true); + assert_eq!(ge_ui8(0, 1), false); + assert_eq!(ge_ui8(0, 2), false); + assert_eq!(ge_ui8(0, 3), false); + assert_eq!(ge_ui8(0, 4), false); + assert_eq!(ge_ui8(0, 72), false); + assert_eq!(ge_ui8(0, 100), false); + } + #[test] + fn test_177() { + assert_eq!(ge_ui8(0, 162), false); + assert_eq!(ge_ui8(0, 254), false); + assert_eq!(ge_ui8(0, 255), false); + assert_eq!(ge_ui8(1, 2), false); + assert_eq!(ge_ui8(1, 3), false); + assert_eq!(ge_ui8(1, 4), false); + assert_eq!(ge_ui8(1, 72), false); + assert_eq!(ge_ui8(1, 100), false); + assert_eq!(ge_ui8(1, 162), false); + assert_eq!(ge_ui8(1, 254), false); + } + #[test] + fn test_178() { + assert_eq!(ge_ui8(1, 255), false); + assert_eq!(ge_ui8(2, 3), false); + assert_eq!(ge_ui8(2, 4), false); + assert_eq!(ge_ui8(2, 72), false); + assert_eq!(ge_ui8(2, 100), false); + assert_eq!(ge_ui8(2, 162), false); + assert_eq!(ge_ui8(2, 254), false); + assert_eq!(ge_ui8(2, 255), false); + assert_eq!(ge_ui8(3, 4), false); + assert_eq!(ge_ui8(3, 72), false); + } + #[test] + fn test_179() { + assert_eq!(ge_ui8(3, 100), false); + assert_eq!(ge_ui8(3, 162), false); + assert_eq!(ge_ui8(3, 254), false); + assert_eq!(ge_ui8(3, 255), false); + assert_eq!(ge_ui8(4, 72), false); + assert_eq!(ge_ui8(4, 100), false); + assert_eq!(ge_ui8(4, 162), false); + assert_eq!(ge_ui8(4, 254), false); + assert_eq!(ge_ui8(4, 255), false); + assert_eq!(ge_ui8(72, 100), false); + } + #[test] + fn test_180() { + assert_eq!(ge_ui8(72, 162), false); + assert_eq!(ge_ui8(72, 254), false); + assert_eq!(ge_ui8(72, 255), false); + assert_eq!(ge_ui8(100, 162), false); + assert_eq!(ge_ui8(100, 254), false); + assert_eq!(ge_ui8(100, 255), false); + assert_eq!(ge_ui8(162, 254), false); + assert_eq!(ge_ui8(162, 255), false); + assert_eq!(ge_ui8(254, 255), false); + assert_eq!(ge_ui8(0, 0), true); + } + #[test] + fn test_181() { + assert_eq!(ge_ui8(1, 0), true); + assert_eq!(ge_ui8(1, 1), true); + assert_eq!(ge_ui8(2, 0), true); + assert_eq!(ge_ui8(2, 1), true); + assert_eq!(ge_ui8(2, 2), true); + assert_eq!(ge_ui8(3, 0), true); + assert_eq!(ge_ui8(3, 1), true); + assert_eq!(ge_ui8(3, 2), true); + assert_eq!(ge_ui8(3, 3), true); + assert_eq!(ge_ui8(4, 0), true); + } + #[test] + fn test_182() { + assert_eq!(ge_ui8(4, 1), true); + assert_eq!(ge_ui8(4, 2), true); + assert_eq!(ge_ui8(4, 3), true); + assert_eq!(ge_ui8(4, 4), true); + assert_eq!(ge_ui8(72, 0), true); + assert_eq!(ge_ui8(72, 1), true); + assert_eq!(ge_ui8(72, 2), true); + assert_eq!(ge_ui8(72, 3), true); + assert_eq!(ge_ui8(72, 4), true); + assert_eq!(ge_ui8(72, 72), true); + } + #[test] + fn test_183() { + assert_eq!(ge_ui8(100, 0), true); + assert_eq!(ge_ui8(100, 1), true); + assert_eq!(ge_ui8(100, 2), true); + assert_eq!(ge_ui8(100, 3), true); + assert_eq!(ge_ui8(100, 4), true); + assert_eq!(ge_ui8(100, 72), true); + assert_eq!(ge_ui8(100, 100), true); + assert_eq!(ge_ui8(162, 0), true); + assert_eq!(ge_ui8(162, 1), true); + assert_eq!(ge_ui8(162, 2), true); + } + #[test] + fn test_184() { + assert_eq!(ge_ui8(162, 3), true); + assert_eq!(ge_ui8(162, 4), true); + assert_eq!(ge_ui8(162, 72), true); + assert_eq!(ge_ui8(162, 100), true); + assert_eq!(ge_ui8(162, 162), true); + assert_eq!(ge_ui8(254, 0), true); + assert_eq!(ge_ui8(254, 1), true); + assert_eq!(ge_ui8(254, 2), true); + assert_eq!(ge_ui8(254, 3), true); + assert_eq!(ge_ui8(254, 4), true); + } + #[test] + fn test_185() { + assert_eq!(ge_ui8(254, 72), true); + assert_eq!(ge_ui8(254, 100), true); + assert_eq!(ge_ui8(254, 162), true); + assert_eq!(ge_ui8(254, 254), true); + assert_eq!(ge_ui8(255, 0), true); + assert_eq!(ge_ui8(255, 1), true); + assert_eq!(ge_ui8(255, 2), true); + assert_eq!(ge_ui8(255, 3), true); + assert_eq!(ge_ui8(255, 4), true); + assert_eq!(ge_ui8(255, 72), true); + } + #[test] + fn test_186() { + assert_eq!(ge_ui8(255, 100), true); + assert_eq!(ge_ui8(255, 162), true); + assert_eq!(ge_ui8(255, 254), true); + assert_eq!(ge_ui8(255, 255), true); + assert_eq!(gt_si16(-32768, -32768), false); + assert_eq!(gt_si16(-32768, -32767), false); + assert_eq!(gt_si16(-32768, -32547), false); + assert_eq!(gt_si16(-32768, 0), false); + assert_eq!(gt_si16(-32768, 1), false); + assert_eq!(gt_si16(-32768, 2), false); + } + #[test] + fn test_187() { + assert_eq!(gt_si16(-32768, 3), false); + assert_eq!(gt_si16(-32768, 4), false); + assert_eq!(gt_si16(-32768, 10486), false); + assert_eq!(gt_si16(-32768, 16514), false); + assert_eq!(gt_si16(-32768, 32766), false); + assert_eq!(gt_si16(-32768, 32767), false); + assert_eq!(gt_si16(-32767, -32767), false); + assert_eq!(gt_si16(-32767, -32547), false); + assert_eq!(gt_si16(-32767, 0), false); + assert_eq!(gt_si16(-32767, 1), false); + } + #[test] + fn test_188() { + assert_eq!(gt_si16(-32767, 2), false); + assert_eq!(gt_si16(-32767, 3), false); + assert_eq!(gt_si16(-32767, 4), false); + assert_eq!(gt_si16(-32767, 10486), false); + assert_eq!(gt_si16(-32767, 16514), false); + assert_eq!(gt_si16(-32767, 32766), false); + assert_eq!(gt_si16(-32767, 32767), false); + assert_eq!(gt_si16(-32547, -32547), false); + assert_eq!(gt_si16(-32547, 0), false); + assert_eq!(gt_si16(-32547, 1), false); + } + #[test] + fn test_189() { + assert_eq!(gt_si16(-32547, 2), false); + assert_eq!(gt_si16(-32547, 3), false); + assert_eq!(gt_si16(-32547, 4), false); + assert_eq!(gt_si16(-32547, 10486), false); + assert_eq!(gt_si16(-32547, 16514), false); + assert_eq!(gt_si16(-32547, 32766), false); + assert_eq!(gt_si16(-32547, 32767), false); + assert_eq!(gt_si16(0, 0), false); + assert_eq!(gt_si16(0, 1), false); + assert_eq!(gt_si16(0, 2), false); + } + #[test] + fn test_190() { + assert_eq!(gt_si16(0, 3), false); + assert_eq!(gt_si16(0, 4), false); + assert_eq!(gt_si16(0, 10486), false); + assert_eq!(gt_si16(0, 16514), false); + assert_eq!(gt_si16(0, 32766), false); + assert_eq!(gt_si16(0, 32767), false); + assert_eq!(gt_si16(1, 1), false); + assert_eq!(gt_si16(1, 2), false); + assert_eq!(gt_si16(1, 3), false); + assert_eq!(gt_si16(1, 4), false); + } + #[test] + fn test_191() { + assert_eq!(gt_si16(1, 10486), false); + assert_eq!(gt_si16(1, 16514), false); + assert_eq!(gt_si16(1, 32766), false); + assert_eq!(gt_si16(1, 32767), false); + assert_eq!(gt_si16(2, 2), false); + assert_eq!(gt_si16(2, 3), false); + assert_eq!(gt_si16(2, 4), false); + assert_eq!(gt_si16(2, 10486), false); + assert_eq!(gt_si16(2, 16514), false); + assert_eq!(gt_si16(2, 32766), false); + } + #[test] + fn test_192() { + assert_eq!(gt_si16(2, 32767), false); + assert_eq!(gt_si16(3, 3), false); + assert_eq!(gt_si16(3, 4), false); + assert_eq!(gt_si16(3, 10486), false); + assert_eq!(gt_si16(3, 16514), false); + assert_eq!(gt_si16(3, 32766), false); + assert_eq!(gt_si16(3, 32767), false); + assert_eq!(gt_si16(4, 4), false); + assert_eq!(gt_si16(4, 10486), false); + assert_eq!(gt_si16(4, 16514), false); + } + #[test] + fn test_193() { + assert_eq!(gt_si16(4, 32766), false); + assert_eq!(gt_si16(4, 32767), false); + assert_eq!(gt_si16(10486, 10486), false); + assert_eq!(gt_si16(10486, 16514), false); + assert_eq!(gt_si16(10486, 32766), false); + assert_eq!(gt_si16(10486, 32767), false); + assert_eq!(gt_si16(16514, 16514), false); + assert_eq!(gt_si16(16514, 32766), false); + assert_eq!(gt_si16(16514, 32767), false); + assert_eq!(gt_si16(32766, 32766), false); + } + #[test] + fn test_194() { + assert_eq!(gt_si16(32766, 32767), false); + assert_eq!(gt_si16(32767, 32767), false); + assert_eq!(gt_si16(-32767, -32768), true); + assert_eq!(gt_si16(-32547, -32768), true); + assert_eq!(gt_si16(-32547, -32767), true); + assert_eq!(gt_si16(0, -32768), true); + assert_eq!(gt_si16(0, -32767), true); + assert_eq!(gt_si16(0, -32547), true); + assert_eq!(gt_si16(1, -32768), true); + assert_eq!(gt_si16(1, -32767), true); + } + #[test] + fn test_195() { + assert_eq!(gt_si16(1, -32547), true); + assert_eq!(gt_si16(1, 0), true); + assert_eq!(gt_si16(2, -32768), true); + assert_eq!(gt_si16(2, -32767), true); + assert_eq!(gt_si16(2, -32547), true); + assert_eq!(gt_si16(2, 0), true); + assert_eq!(gt_si16(2, 1), true); + assert_eq!(gt_si16(3, -32768), true); + assert_eq!(gt_si16(3, -32767), true); + assert_eq!(gt_si16(3, -32547), true); + } + #[test] + fn test_196() { + assert_eq!(gt_si16(3, 0), true); + assert_eq!(gt_si16(3, 1), true); + assert_eq!(gt_si16(3, 2), true); + assert_eq!(gt_si16(4, -32768), true); + assert_eq!(gt_si16(4, -32767), true); + assert_eq!(gt_si16(4, -32547), true); + assert_eq!(gt_si16(4, 0), true); + assert_eq!(gt_si16(4, 1), true); + assert_eq!(gt_si16(4, 2), true); + assert_eq!(gt_si16(4, 3), true); + } + #[test] + fn test_197() { + assert_eq!(gt_si16(10486, -32768), true); + assert_eq!(gt_si16(10486, -32767), true); + assert_eq!(gt_si16(10486, -32547), true); + assert_eq!(gt_si16(10486, 0), true); + assert_eq!(gt_si16(10486, 1), true); + assert_eq!(gt_si16(10486, 2), true); + assert_eq!(gt_si16(10486, 3), true); + assert_eq!(gt_si16(10486, 4), true); + assert_eq!(gt_si16(16514, -32768), true); + assert_eq!(gt_si16(16514, -32767), true); + } + #[test] + fn test_198() { + assert_eq!(gt_si16(16514, -32547), true); + assert_eq!(gt_si16(16514, 0), true); + assert_eq!(gt_si16(16514, 1), true); + assert_eq!(gt_si16(16514, 2), true); + assert_eq!(gt_si16(16514, 3), true); + assert_eq!(gt_si16(16514, 4), true); + assert_eq!(gt_si16(16514, 10486), true); + assert_eq!(gt_si16(32766, -32768), true); + assert_eq!(gt_si16(32766, -32767), true); + assert_eq!(gt_si16(32766, -32547), true); + } + #[test] + fn test_199() { + assert_eq!(gt_si16(32766, 0), true); + assert_eq!(gt_si16(32766, 1), true); + assert_eq!(gt_si16(32766, 2), true); + assert_eq!(gt_si16(32766, 3), true); + assert_eq!(gt_si16(32766, 4), true); + assert_eq!(gt_si16(32766, 10486), true); + assert_eq!(gt_si16(32766, 16514), true); + assert_eq!(gt_si16(32767, -32768), true); + assert_eq!(gt_si16(32767, -32767), true); + assert_eq!(gt_si16(32767, -32547), true); + } + #[test] + fn test_200() { + assert_eq!(gt_si16(32767, 0), true); + assert_eq!(gt_si16(32767, 1), true); + assert_eq!(gt_si16(32767, 2), true); + assert_eq!(gt_si16(32767, 3), true); + assert_eq!(gt_si16(32767, 4), true); + assert_eq!(gt_si16(32767, 10486), true); + assert_eq!(gt_si16(32767, 16514), true); + assert_eq!(gt_si16(32767, 32766), true); + assert_eq!(gt_si32(-2147483648, -2147483648), false); + assert_eq!(gt_si32(-2147483648, -2147483647), false); + } + #[test] + fn test_201() { + assert_eq!(gt_si32(-2147483648, -1713183800), false); + assert_eq!(gt_si32(-2147483648, -1252582164), false); + assert_eq!(gt_si32(-2147483648, -1035405763), false); + assert_eq!(gt_si32(-2147483648, 0), false); + assert_eq!(gt_si32(-2147483648, 1), false); + assert_eq!(gt_si32(-2147483648, 2), false); + assert_eq!(gt_si32(-2147483648, 3), false); + assert_eq!(gt_si32(-2147483648, 4), false); + assert_eq!(gt_si32(-2147483648, 2147483646), false); + assert_eq!(gt_si32(-2147483648, 2147483647), false); + } + #[test] + fn test_202() { + assert_eq!(gt_si32(-2147483647, -2147483647), false); + assert_eq!(gt_si32(-2147483647, -1713183800), false); + assert_eq!(gt_si32(-2147483647, -1252582164), false); + assert_eq!(gt_si32(-2147483647, -1035405763), false); + assert_eq!(gt_si32(-2147483647, 0), false); + assert_eq!(gt_si32(-2147483647, 1), false); + assert_eq!(gt_si32(-2147483647, 2), false); + assert_eq!(gt_si32(-2147483647, 3), false); + assert_eq!(gt_si32(-2147483647, 4), false); + assert_eq!(gt_si32(-2147483647, 2147483646), false); + } + #[test] + fn test_203() { + assert_eq!(gt_si32(-2147483647, 2147483647), false); + assert_eq!(gt_si32(-1713183800, -1713183800), false); + assert_eq!(gt_si32(-1713183800, -1252582164), false); + assert_eq!(gt_si32(-1713183800, -1035405763), false); + assert_eq!(gt_si32(-1713183800, 0), false); + assert_eq!(gt_si32(-1713183800, 1), false); + assert_eq!(gt_si32(-1713183800, 2), false); + assert_eq!(gt_si32(-1713183800, 3), false); + assert_eq!(gt_si32(-1713183800, 4), false); + assert_eq!(gt_si32(-1713183800, 2147483646), false); + } + #[test] + fn test_204() { + assert_eq!(gt_si32(-1713183800, 2147483647), false); + assert_eq!(gt_si32(-1252582164, -1252582164), false); + assert_eq!(gt_si32(-1252582164, -1035405763), false); + assert_eq!(gt_si32(-1252582164, 0), false); + assert_eq!(gt_si32(-1252582164, 1), false); + assert_eq!(gt_si32(-1252582164, 2), false); + assert_eq!(gt_si32(-1252582164, 3), false); + assert_eq!(gt_si32(-1252582164, 4), false); + assert_eq!(gt_si32(-1252582164, 2147483646), false); + assert_eq!(gt_si32(-1252582164, 2147483647), false); + } + #[test] + fn test_205() { + assert_eq!(gt_si32(-1035405763, -1035405763), false); + assert_eq!(gt_si32(-1035405763, 0), false); + assert_eq!(gt_si32(-1035405763, 1), false); + assert_eq!(gt_si32(-1035405763, 2), false); + assert_eq!(gt_si32(-1035405763, 3), false); + assert_eq!(gt_si32(-1035405763, 4), false); + assert_eq!(gt_si32(-1035405763, 2147483646), false); + assert_eq!(gt_si32(-1035405763, 2147483647), false); + assert_eq!(gt_si32(0, 0), false); + assert_eq!(gt_si32(0, 1), false); + } + #[test] + fn test_206() { + assert_eq!(gt_si32(0, 2), false); + assert_eq!(gt_si32(0, 3), false); + assert_eq!(gt_si32(0, 4), false); + assert_eq!(gt_si32(0, 2147483646), false); + assert_eq!(gt_si32(0, 2147483647), false); + assert_eq!(gt_si32(1, 1), false); + assert_eq!(gt_si32(1, 2), false); + assert_eq!(gt_si32(1, 3), false); + assert_eq!(gt_si32(1, 4), false); + assert_eq!(gt_si32(1, 2147483646), false); + } + #[test] + fn test_207() { + assert_eq!(gt_si32(1, 2147483647), false); + assert_eq!(gt_si32(2, 2), false); + assert_eq!(gt_si32(2, 3), false); + assert_eq!(gt_si32(2, 4), false); + assert_eq!(gt_si32(2, 2147483646), false); + assert_eq!(gt_si32(2, 2147483647), false); + assert_eq!(gt_si32(3, 3), false); + assert_eq!(gt_si32(3, 4), false); + assert_eq!(gt_si32(3, 2147483646), false); + assert_eq!(gt_si32(3, 2147483647), false); + } + #[test] + fn test_208() { + assert_eq!(gt_si32(4, 4), false); + assert_eq!(gt_si32(4, 2147483646), false); + assert_eq!(gt_si32(4, 2147483647), false); + assert_eq!(gt_si32(2147483646, 2147483646), false); + assert_eq!(gt_si32(2147483646, 2147483647), false); + assert_eq!(gt_si32(2147483647, 2147483647), false); + assert_eq!(gt_si32(-2147483647, -2147483648), true); + assert_eq!(gt_si32(-1713183800, -2147483648), true); + assert_eq!(gt_si32(-1713183800, -2147483647), true); + assert_eq!(gt_si32(-1252582164, -2147483648), true); + } + #[test] + fn test_209() { + assert_eq!(gt_si32(-1252582164, -2147483647), true); + assert_eq!(gt_si32(-1252582164, -1713183800), true); + assert_eq!(gt_si32(-1035405763, -2147483648), true); + assert_eq!(gt_si32(-1035405763, -2147483647), true); + assert_eq!(gt_si32(-1035405763, -1713183800), true); + assert_eq!(gt_si32(-1035405763, -1252582164), true); + assert_eq!(gt_si32(0, -2147483648), true); + assert_eq!(gt_si32(0, -2147483647), true); + assert_eq!(gt_si32(0, -1713183800), true); + assert_eq!(gt_si32(0, -1252582164), true); + } + #[test] + fn test_210() { + assert_eq!(gt_si32(0, -1035405763), true); + assert_eq!(gt_si32(1, -2147483648), true); + assert_eq!(gt_si32(1, -2147483647), true); + assert_eq!(gt_si32(1, -1713183800), true); + assert_eq!(gt_si32(1, -1252582164), true); + assert_eq!(gt_si32(1, -1035405763), true); + assert_eq!(gt_si32(1, 0), true); + assert_eq!(gt_si32(2, -2147483648), true); + assert_eq!(gt_si32(2, -2147483647), true); + assert_eq!(gt_si32(2, -1713183800), true); + } + #[test] + fn test_211() { + assert_eq!(gt_si32(2, -1252582164), true); + assert_eq!(gt_si32(2, -1035405763), true); + assert_eq!(gt_si32(2, 0), true); + assert_eq!(gt_si32(2, 1), true); + assert_eq!(gt_si32(3, -2147483648), true); + assert_eq!(gt_si32(3, -2147483647), true); + assert_eq!(gt_si32(3, -1713183800), true); + assert_eq!(gt_si32(3, -1252582164), true); + assert_eq!(gt_si32(3, -1035405763), true); + assert_eq!(gt_si32(3, 0), true); + } + #[test] + fn test_212() { + assert_eq!(gt_si32(3, 1), true); + assert_eq!(gt_si32(3, 2), true); + assert_eq!(gt_si32(4, -2147483648), true); + assert_eq!(gt_si32(4, -2147483647), true); + assert_eq!(gt_si32(4, -1713183800), true); + assert_eq!(gt_si32(4, -1252582164), true); + assert_eq!(gt_si32(4, -1035405763), true); + assert_eq!(gt_si32(4, 0), true); + assert_eq!(gt_si32(4, 1), true); + assert_eq!(gt_si32(4, 2), true); + } + #[test] + fn test_213() { + assert_eq!(gt_si32(4, 3), true); + assert_eq!(gt_si32(2147483646, -2147483648), true); + assert_eq!(gt_si32(2147483646, -2147483647), true); + assert_eq!(gt_si32(2147483646, -1713183800), true); + assert_eq!(gt_si32(2147483646, -1252582164), true); + assert_eq!(gt_si32(2147483646, -1035405763), true); + assert_eq!(gt_si32(2147483646, 0), true); + assert_eq!(gt_si32(2147483646, 1), true); + assert_eq!(gt_si32(2147483646, 2), true); + assert_eq!(gt_si32(2147483646, 3), true); + } + #[test] + fn test_214() { + assert_eq!(gt_si32(2147483646, 4), true); + assert_eq!(gt_si32(2147483647, -2147483648), true); + assert_eq!(gt_si32(2147483647, -2147483647), true); + assert_eq!(gt_si32(2147483647, -1713183800), true); + assert_eq!(gt_si32(2147483647, -1252582164), true); + assert_eq!(gt_si32(2147483647, -1035405763), true); + assert_eq!(gt_si32(2147483647, 0), true); + assert_eq!(gt_si32(2147483647, 1), true); + assert_eq!(gt_si32(2147483647, 2), true); + assert_eq!(gt_si32(2147483647, 3), true); + } + #[test] + fn test_215() { + assert_eq!(gt_si32(2147483647, 4), true); + assert_eq!(gt_si32(2147483647, 2147483646), true); + assert_eq!(gt_si64(-9223372036854775808, -9223372036854775808), false); + assert_eq!(gt_si64(-9223372036854775808, -9223372036854775807), false); + assert_eq!(gt_si64(-9223372036854775808, -1741927215160008704), false); + assert_eq!(gt_si64(-9223372036854775808, -1328271339354574848), false); + assert_eq!(gt_si64(-9223372036854775808, 0), false); + assert_eq!(gt_si64(-9223372036854775808, 1), false); + assert_eq!(gt_si64(-9223372036854775808, 2), false); + assert_eq!(gt_si64(-9223372036854775808, 3), false); + } + #[test] + fn test_216() { + assert_eq!(gt_si64(-9223372036854775808, 4), false); + assert_eq!(gt_si64(-9223372036854775808, 5577148965131116544), false); + assert_eq!(gt_si64(-9223372036854775808, 9223372036854775806), false); + assert_eq!(gt_si64(-9223372036854775808, 9223372036854775807), false); + assert_eq!(gt_si64(-9223372036854775807, -9223372036854775807), false); + assert_eq!(gt_si64(-9223372036854775807, -1741927215160008704), false); + assert_eq!(gt_si64(-9223372036854775807, -1328271339354574848), false); + assert_eq!(gt_si64(-9223372036854775807, 0), false); + assert_eq!(gt_si64(-9223372036854775807, 1), false); + assert_eq!(gt_si64(-9223372036854775807, 2), false); + } + #[test] + fn test_217() { + assert_eq!(gt_si64(-9223372036854775807, 3), false); + assert_eq!(gt_si64(-9223372036854775807, 4), false); + assert_eq!(gt_si64(-9223372036854775807, 5577148965131116544), false); + assert_eq!(gt_si64(-9223372036854775807, 9223372036854775806), false); + assert_eq!(gt_si64(-9223372036854775807, 9223372036854775807), false); + assert_eq!(gt_si64(-1741927215160008704, -1741927215160008704), false); + assert_eq!(gt_si64(-1741927215160008704, -1328271339354574848), false); + assert_eq!(gt_si64(-1741927215160008704, 0), false); + assert_eq!(gt_si64(-1741927215160008704, 1), false); + assert_eq!(gt_si64(-1741927215160008704, 2), false); + } + #[test] + fn test_218() { + assert_eq!(gt_si64(-1741927215160008704, 3), false); + assert_eq!(gt_si64(-1741927215160008704, 4), false); + assert_eq!(gt_si64(-1741927215160008704, 5577148965131116544), false); + assert_eq!(gt_si64(-1741927215160008704, 9223372036854775806), false); + assert_eq!(gt_si64(-1741927215160008704, 9223372036854775807), false); + assert_eq!(gt_si64(-1328271339354574848, -1328271339354574848), false); + assert_eq!(gt_si64(-1328271339354574848, 0), false); + assert_eq!(gt_si64(-1328271339354574848, 1), false); + assert_eq!(gt_si64(-1328271339354574848, 2), false); + assert_eq!(gt_si64(-1328271339354574848, 3), false); + } + #[test] + fn test_219() { + assert_eq!(gt_si64(-1328271339354574848, 4), false); + assert_eq!(gt_si64(-1328271339354574848, 5577148965131116544), false); + assert_eq!(gt_si64(-1328271339354574848, 9223372036854775806), false); + assert_eq!(gt_si64(-1328271339354574848, 9223372036854775807), false); + assert_eq!(gt_si64(0, 0), false); + assert_eq!(gt_si64(0, 1), false); + assert_eq!(gt_si64(0, 2), false); + assert_eq!(gt_si64(0, 3), false); + assert_eq!(gt_si64(0, 4), false); + assert_eq!(gt_si64(0, 5577148965131116544), false); + } + #[test] + fn test_220() { + assert_eq!(gt_si64(0, 9223372036854775806), false); + assert_eq!(gt_si64(0, 9223372036854775807), false); + assert_eq!(gt_si64(1, 1), false); + assert_eq!(gt_si64(1, 2), false); + assert_eq!(gt_si64(1, 3), false); + assert_eq!(gt_si64(1, 4), false); + assert_eq!(gt_si64(1, 5577148965131116544), false); + assert_eq!(gt_si64(1, 9223372036854775806), false); + assert_eq!(gt_si64(1, 9223372036854775807), false); + assert_eq!(gt_si64(2, 2), false); + } + #[test] + fn test_221() { + assert_eq!(gt_si64(2, 3), false); + assert_eq!(gt_si64(2, 4), false); + assert_eq!(gt_si64(2, 5577148965131116544), false); + assert_eq!(gt_si64(2, 9223372036854775806), false); + assert_eq!(gt_si64(2, 9223372036854775807), false); + assert_eq!(gt_si64(3, 3), false); + assert_eq!(gt_si64(3, 4), false); + assert_eq!(gt_si64(3, 5577148965131116544), false); + assert_eq!(gt_si64(3, 9223372036854775806), false); + assert_eq!(gt_si64(3, 9223372036854775807), false); + } + #[test] + fn test_222() { + assert_eq!(gt_si64(4, 4), false); + assert_eq!(gt_si64(4, 5577148965131116544), false); + assert_eq!(gt_si64(4, 9223372036854775806), false); + assert_eq!(gt_si64(4, 9223372036854775807), false); + assert_eq!(gt_si64(5577148965131116544, 5577148965131116544), false); + assert_eq!(gt_si64(5577148965131116544, 9223372036854775806), false); + assert_eq!(gt_si64(5577148965131116544, 9223372036854775807), false); + assert_eq!(gt_si64(9223372036854775806, 9223372036854775806), false); + assert_eq!(gt_si64(9223372036854775806, 9223372036854775807), false); + assert_eq!(gt_si64(9223372036854775807, 9223372036854775807), false); + } + #[test] + fn test_223() { + assert_eq!(gt_si64(-9223372036854775807, -9223372036854775808), true); + assert_eq!(gt_si64(-1741927215160008704, -9223372036854775808), true); + assert_eq!(gt_si64(-1741927215160008704, -9223372036854775807), true); + assert_eq!(gt_si64(-1328271339354574848, -9223372036854775808), true); + assert_eq!(gt_si64(-1328271339354574848, -9223372036854775807), true); + assert_eq!(gt_si64(-1328271339354574848, -1741927215160008704), true); + assert_eq!(gt_si64(0, -9223372036854775808), true); + assert_eq!(gt_si64(0, -9223372036854775807), true); + assert_eq!(gt_si64(0, -1741927215160008704), true); + assert_eq!(gt_si64(0, -1328271339354574848), true); + } + #[test] + fn test_224() { + assert_eq!(gt_si64(1, -9223372036854775808), true); + assert_eq!(gt_si64(1, -9223372036854775807), true); + assert_eq!(gt_si64(1, -1741927215160008704), true); + assert_eq!(gt_si64(1, -1328271339354574848), true); + assert_eq!(gt_si64(1, 0), true); + assert_eq!(gt_si64(2, -9223372036854775808), true); + assert_eq!(gt_si64(2, -9223372036854775807), true); + assert_eq!(gt_si64(2, -1741927215160008704), true); + assert_eq!(gt_si64(2, -1328271339354574848), true); + assert_eq!(gt_si64(2, 0), true); + } + #[test] + fn test_225() { + assert_eq!(gt_si64(2, 1), true); + assert_eq!(gt_si64(3, -9223372036854775808), true); + assert_eq!(gt_si64(3, -9223372036854775807), true); + assert_eq!(gt_si64(3, -1741927215160008704), true); + assert_eq!(gt_si64(3, -1328271339354574848), true); + assert_eq!(gt_si64(3, 0), true); + assert_eq!(gt_si64(3, 1), true); + assert_eq!(gt_si64(3, 2), true); + assert_eq!(gt_si64(4, -9223372036854775808), true); + assert_eq!(gt_si64(4, -9223372036854775807), true); + } + #[test] + fn test_226() { + assert_eq!(gt_si64(4, -1741927215160008704), true); + assert_eq!(gt_si64(4, -1328271339354574848), true); + assert_eq!(gt_si64(4, 0), true); + assert_eq!(gt_si64(4, 1), true); + assert_eq!(gt_si64(4, 2), true); + assert_eq!(gt_si64(4, 3), true); + assert_eq!(gt_si64(5577148965131116544, -9223372036854775808), true); + assert_eq!(gt_si64(5577148965131116544, -9223372036854775807), true); + assert_eq!(gt_si64(5577148965131116544, -1741927215160008704), true); + assert_eq!(gt_si64(5577148965131116544, -1328271339354574848), true); + } + #[test] + fn test_227() { + assert_eq!(gt_si64(5577148965131116544, 0), true); + assert_eq!(gt_si64(5577148965131116544, 1), true); + assert_eq!(gt_si64(5577148965131116544, 2), true); + assert_eq!(gt_si64(5577148965131116544, 3), true); + assert_eq!(gt_si64(5577148965131116544, 4), true); + assert_eq!(gt_si64(9223372036854775806, -9223372036854775808), true); + assert_eq!(gt_si64(9223372036854775806, -9223372036854775807), true); + assert_eq!(gt_si64(9223372036854775806, -1741927215160008704), true); + assert_eq!(gt_si64(9223372036854775806, -1328271339354574848), true); + assert_eq!(gt_si64(9223372036854775806, 0), true); + } + #[test] + fn test_228() { + assert_eq!(gt_si64(9223372036854775806, 1), true); + assert_eq!(gt_si64(9223372036854775806, 2), true); + assert_eq!(gt_si64(9223372036854775806, 3), true); + assert_eq!(gt_si64(9223372036854775806, 4), true); + assert_eq!(gt_si64(9223372036854775806, 5577148965131116544), true); + assert_eq!(gt_si64(9223372036854775807, -9223372036854775808), true); + assert_eq!(gt_si64(9223372036854775807, -9223372036854775807), true); + assert_eq!(gt_si64(9223372036854775807, -1741927215160008704), true); + assert_eq!(gt_si64(9223372036854775807, -1328271339354574848), true); + assert_eq!(gt_si64(9223372036854775807, 0), true); + } + #[test] + fn test_229() { + assert_eq!(gt_si64(9223372036854775807, 1), true); + assert_eq!(gt_si64(9223372036854775807, 2), true); + assert_eq!(gt_si64(9223372036854775807, 3), true); + assert_eq!(gt_si64(9223372036854775807, 4), true); + assert_eq!(gt_si64(9223372036854775807, 5577148965131116544), true); + assert_eq!(gt_si64(9223372036854775807, 9223372036854775806), true); + assert_eq!(gt_si8(-128, -128), false); + assert_eq!(gt_si8(-128, -127), false); + assert_eq!(gt_si8(-128, 0), false); + assert_eq!(gt_si8(-128, 1), false); + } + #[test] + fn test_230() { + assert_eq!(gt_si8(-128, 2), false); + assert_eq!(gt_si8(-128, 3), false); + assert_eq!(gt_si8(-128, 4), false); + assert_eq!(gt_si8(-128, 16), false); + assert_eq!(gt_si8(-128, 126), false); + assert_eq!(gt_si8(-128, 127), false); + assert_eq!(gt_si8(-127, -127), false); + assert_eq!(gt_si8(-127, 0), false); + assert_eq!(gt_si8(-127, 1), false); + assert_eq!(gt_si8(-127, 2), false); + } + #[test] + fn test_231() { + assert_eq!(gt_si8(-127, 3), false); + assert_eq!(gt_si8(-127, 4), false); + assert_eq!(gt_si8(-127, 16), false); + assert_eq!(gt_si8(-127, 126), false); + assert_eq!(gt_si8(-127, 127), false); + assert_eq!(gt_si8(0, 0), false); + assert_eq!(gt_si8(0, 1), false); + assert_eq!(gt_si8(0, 2), false); + assert_eq!(gt_si8(0, 3), false); + assert_eq!(gt_si8(0, 4), false); + } + #[test] + fn test_232() { + assert_eq!(gt_si8(0, 16), false); + assert_eq!(gt_si8(0, 126), false); + assert_eq!(gt_si8(0, 127), false); + assert_eq!(gt_si8(1, 1), false); + assert_eq!(gt_si8(1, 2), false); + assert_eq!(gt_si8(1, 3), false); + assert_eq!(gt_si8(1, 4), false); + assert_eq!(gt_si8(1, 16), false); + assert_eq!(gt_si8(1, 126), false); + assert_eq!(gt_si8(1, 127), false); + } + #[test] + fn test_233() { + assert_eq!(gt_si8(2, 2), false); + assert_eq!(gt_si8(2, 3), false); + assert_eq!(gt_si8(2, 4), false); + assert_eq!(gt_si8(2, 16), false); + assert_eq!(gt_si8(2, 126), false); + assert_eq!(gt_si8(2, 127), false); + assert_eq!(gt_si8(3, 3), false); + assert_eq!(gt_si8(3, 4), false); + assert_eq!(gt_si8(3, 16), false); + assert_eq!(gt_si8(3, 126), false); + } + #[test] + fn test_234() { + assert_eq!(gt_si8(3, 127), false); + assert_eq!(gt_si8(4, 4), false); + assert_eq!(gt_si8(4, 16), false); + assert_eq!(gt_si8(4, 126), false); + assert_eq!(gt_si8(4, 127), false); + assert_eq!(gt_si8(16, 16), false); + assert_eq!(gt_si8(16, 126), false); + assert_eq!(gt_si8(16, 127), false); + assert_eq!(gt_si8(126, 126), false); + assert_eq!(gt_si8(126, 127), false); + } + #[test] + fn test_235() { + assert_eq!(gt_si8(127, 127), false); + assert_eq!(gt_si8(-127, -128), true); + assert_eq!(gt_si8(0, -128), true); + assert_eq!(gt_si8(0, -127), true); + assert_eq!(gt_si8(1, -128), true); + assert_eq!(gt_si8(1, -127), true); + assert_eq!(gt_si8(1, 0), true); + assert_eq!(gt_si8(2, -128), true); + assert_eq!(gt_si8(2, -127), true); + assert_eq!(gt_si8(2, 0), true); + } + #[test] + fn test_236() { + assert_eq!(gt_si8(2, 1), true); + assert_eq!(gt_si8(3, -128), true); + assert_eq!(gt_si8(3, -127), true); + assert_eq!(gt_si8(3, 0), true); + assert_eq!(gt_si8(3, 1), true); + assert_eq!(gt_si8(3, 2), true); + assert_eq!(gt_si8(4, -128), true); + assert_eq!(gt_si8(4, -127), true); + assert_eq!(gt_si8(4, 0), true); + assert_eq!(gt_si8(4, 1), true); + } + #[test] + fn test_237() { + assert_eq!(gt_si8(4, 2), true); + assert_eq!(gt_si8(4, 3), true); + assert_eq!(gt_si8(16, -128), true); + assert_eq!(gt_si8(16, -127), true); + assert_eq!(gt_si8(16, 0), true); + assert_eq!(gt_si8(16, 1), true); + assert_eq!(gt_si8(16, 2), true); + assert_eq!(gt_si8(16, 3), true); + assert_eq!(gt_si8(16, 4), true); + assert_eq!(gt_si8(126, -128), true); + } + #[test] + fn test_238() { + assert_eq!(gt_si8(126, -127), true); + assert_eq!(gt_si8(126, 0), true); + assert_eq!(gt_si8(126, 1), true); + assert_eq!(gt_si8(126, 2), true); + assert_eq!(gt_si8(126, 3), true); + assert_eq!(gt_si8(126, 4), true); + assert_eq!(gt_si8(126, 16), true); + assert_eq!(gt_si8(127, -128), true); + assert_eq!(gt_si8(127, -127), true); + assert_eq!(gt_si8(127, 0), true); + } + #[test] + fn test_239() { + assert_eq!(gt_si8(127, 1), true); + assert_eq!(gt_si8(127, 2), true); + assert_eq!(gt_si8(127, 3), true); + assert_eq!(gt_si8(127, 4), true); + assert_eq!(gt_si8(127, 16), true); + assert_eq!(gt_si8(127, 126), true); + assert_eq!(gt_ui16(0, 0), false); + assert_eq!(gt_ui16(0, 1), false); + assert_eq!(gt_ui16(0, 2), false); + assert_eq!(gt_ui16(0, 3), false); + } + #[test] + fn test_240() { + assert_eq!(gt_ui16(0, 4), false); + assert_eq!(gt_ui16(0, 1717), false); + assert_eq!(gt_ui16(0, 17988), false); + assert_eq!(gt_ui16(0, 65096), false); + assert_eq!(gt_ui16(0, 65534), false); + assert_eq!(gt_ui16(0, 65535), false); + assert_eq!(gt_ui16(1, 1), false); + assert_eq!(gt_ui16(1, 2), false); + assert_eq!(gt_ui16(1, 3), false); + assert_eq!(gt_ui16(1, 4), false); + } + #[test] + fn test_241() { + assert_eq!(gt_ui16(1, 1717), false); + assert_eq!(gt_ui16(1, 17988), false); + assert_eq!(gt_ui16(1, 65096), false); + assert_eq!(gt_ui16(1, 65534), false); + assert_eq!(gt_ui16(1, 65535), false); + assert_eq!(gt_ui16(2, 2), false); + assert_eq!(gt_ui16(2, 3), false); + assert_eq!(gt_ui16(2, 4), false); + assert_eq!(gt_ui16(2, 1717), false); + assert_eq!(gt_ui16(2, 17988), false); + } + #[test] + fn test_242() { + assert_eq!(gt_ui16(2, 65096), false); + assert_eq!(gt_ui16(2, 65534), false); + assert_eq!(gt_ui16(2, 65535), false); + assert_eq!(gt_ui16(3, 3), false); + assert_eq!(gt_ui16(3, 4), false); + assert_eq!(gt_ui16(3, 1717), false); + assert_eq!(gt_ui16(3, 17988), false); + assert_eq!(gt_ui16(3, 65096), false); + assert_eq!(gt_ui16(3, 65534), false); + assert_eq!(gt_ui16(3, 65535), false); + } + #[test] + fn test_243() { + assert_eq!(gt_ui16(4, 4), false); + assert_eq!(gt_ui16(4, 1717), false); + assert_eq!(gt_ui16(4, 17988), false); + assert_eq!(gt_ui16(4, 65096), false); + assert_eq!(gt_ui16(4, 65534), false); + assert_eq!(gt_ui16(4, 65535), false); + assert_eq!(gt_ui16(1717, 1717), false); + assert_eq!(gt_ui16(1717, 17988), false); + assert_eq!(gt_ui16(1717, 65096), false); + assert_eq!(gt_ui16(1717, 65534), false); + } + #[test] + fn test_244() { + assert_eq!(gt_ui16(1717, 65535), false); + assert_eq!(gt_ui16(17988, 17988), false); + assert_eq!(gt_ui16(17988, 65096), false); + assert_eq!(gt_ui16(17988, 65534), false); + assert_eq!(gt_ui16(17988, 65535), false); + assert_eq!(gt_ui16(65096, 65096), false); + assert_eq!(gt_ui16(65096, 65534), false); + assert_eq!(gt_ui16(65096, 65535), false); + assert_eq!(gt_ui16(65534, 65534), false); + assert_eq!(gt_ui16(65534, 65535), false); + } + #[test] + fn test_245() { + assert_eq!(gt_ui16(65535, 65535), false); + assert_eq!(gt_ui16(1, 0), true); + assert_eq!(gt_ui16(2, 0), true); + assert_eq!(gt_ui16(2, 1), true); + assert_eq!(gt_ui16(3, 0), true); + assert_eq!(gt_ui16(3, 1), true); + assert_eq!(gt_ui16(3, 2), true); + assert_eq!(gt_ui16(4, 0), true); + assert_eq!(gt_ui16(4, 1), true); + assert_eq!(gt_ui16(4, 2), true); + } + #[test] + fn test_246() { + assert_eq!(gt_ui16(4, 3), true); + assert_eq!(gt_ui16(1717, 0), true); + assert_eq!(gt_ui16(1717, 1), true); + assert_eq!(gt_ui16(1717, 2), true); + assert_eq!(gt_ui16(1717, 3), true); + assert_eq!(gt_ui16(1717, 4), true); + assert_eq!(gt_ui16(17988, 0), true); + assert_eq!(gt_ui16(17988, 1), true); + assert_eq!(gt_ui16(17988, 2), true); + assert_eq!(gt_ui16(17988, 3), true); + } + #[test] + fn test_247() { + assert_eq!(gt_ui16(17988, 4), true); + assert_eq!(gt_ui16(17988, 1717), true); + assert_eq!(gt_ui16(65096, 0), true); + assert_eq!(gt_ui16(65096, 1), true); + assert_eq!(gt_ui16(65096, 2), true); + assert_eq!(gt_ui16(65096, 3), true); + assert_eq!(gt_ui16(65096, 4), true); + assert_eq!(gt_ui16(65096, 1717), true); + assert_eq!(gt_ui16(65096, 17988), true); + assert_eq!(gt_ui16(65534, 0), true); + } + #[test] + fn test_248() { + assert_eq!(gt_ui16(65534, 1), true); + assert_eq!(gt_ui16(65534, 2), true); + assert_eq!(gt_ui16(65534, 3), true); + assert_eq!(gt_ui16(65534, 4), true); + assert_eq!(gt_ui16(65534, 1717), true); + assert_eq!(gt_ui16(65534, 17988), true); + assert_eq!(gt_ui16(65534, 65096), true); + assert_eq!(gt_ui16(65535, 0), true); + assert_eq!(gt_ui16(65535, 1), true); + assert_eq!(gt_ui16(65535, 2), true); + } + #[test] + fn test_249() { + assert_eq!(gt_ui16(65535, 3), true); + assert_eq!(gt_ui16(65535, 4), true); + assert_eq!(gt_ui16(65535, 1717), true); + assert_eq!(gt_ui16(65535, 17988), true); + assert_eq!(gt_ui16(65535, 65096), true); + assert_eq!(gt_ui16(65535, 65534), true); + assert_eq!(gt_ui32(0, 0), false); + assert_eq!(gt_ui32(0, 1), false); + assert_eq!(gt_ui32(0, 2), false); + assert_eq!(gt_ui32(0, 3), false); + } + #[test] + fn test_250() { + assert_eq!(gt_ui32(0, 4), false); + assert_eq!(gt_ui32(0, 2119154652), false); + assert_eq!(gt_ui32(0, 3002788344), false); + assert_eq!(gt_ui32(0, 3482297128), false); + assert_eq!(gt_ui32(0, 4294967294), false); + assert_eq!(gt_ui32(0, 4294967295), false); + assert_eq!(gt_ui32(1, 1), false); + assert_eq!(gt_ui32(1, 2), false); + assert_eq!(gt_ui32(1, 3), false); + assert_eq!(gt_ui32(1, 4), false); + } + #[test] + fn test_251() { + assert_eq!(gt_ui32(1, 2119154652), false); + assert_eq!(gt_ui32(1, 3002788344), false); + assert_eq!(gt_ui32(1, 3482297128), false); + assert_eq!(gt_ui32(1, 4294967294), false); + assert_eq!(gt_ui32(1, 4294967295), false); + assert_eq!(gt_ui32(2, 2), false); + assert_eq!(gt_ui32(2, 3), false); + assert_eq!(gt_ui32(2, 4), false); + assert_eq!(gt_ui32(2, 2119154652), false); + assert_eq!(gt_ui32(2, 3002788344), false); + } + #[test] + fn test_252() { + assert_eq!(gt_ui32(2, 3482297128), false); + assert_eq!(gt_ui32(2, 4294967294), false); + assert_eq!(gt_ui32(2, 4294967295), false); + assert_eq!(gt_ui32(3, 3), false); + assert_eq!(gt_ui32(3, 4), false); + assert_eq!(gt_ui32(3, 2119154652), false); + assert_eq!(gt_ui32(3, 3002788344), false); + assert_eq!(gt_ui32(3, 3482297128), false); + assert_eq!(gt_ui32(3, 4294967294), false); + assert_eq!(gt_ui32(3, 4294967295), false); + } + #[test] + fn test_253() { + assert_eq!(gt_ui32(4, 4), false); + assert_eq!(gt_ui32(4, 2119154652), false); + assert_eq!(gt_ui32(4, 3002788344), false); + assert_eq!(gt_ui32(4, 3482297128), false); + assert_eq!(gt_ui32(4, 4294967294), false); + assert_eq!(gt_ui32(4, 4294967295), false); + assert_eq!(gt_ui32(2119154652, 2119154652), false); + assert_eq!(gt_ui32(2119154652, 3002788344), false); + assert_eq!(gt_ui32(2119154652, 3482297128), false); + assert_eq!(gt_ui32(2119154652, 4294967294), false); + } + #[test] + fn test_254() { + assert_eq!(gt_ui32(2119154652, 4294967295), false); + assert_eq!(gt_ui32(3002788344, 3002788344), false); + assert_eq!(gt_ui32(3002788344, 3482297128), false); + assert_eq!(gt_ui32(3002788344, 4294967294), false); + assert_eq!(gt_ui32(3002788344, 4294967295), false); + assert_eq!(gt_ui32(3482297128, 3482297128), false); + assert_eq!(gt_ui32(3482297128, 4294967294), false); + assert_eq!(gt_ui32(3482297128, 4294967295), false); + assert_eq!(gt_ui32(4294967294, 4294967294), false); + assert_eq!(gt_ui32(4294967294, 4294967295), false); + } + #[test] + fn test_255() { + assert_eq!(gt_ui32(4294967295, 4294967295), false); + assert_eq!(gt_ui32(1, 0), true); + assert_eq!(gt_ui32(2, 0), true); + assert_eq!(gt_ui32(2, 1), true); + assert_eq!(gt_ui32(3, 0), true); + assert_eq!(gt_ui32(3, 1), true); + assert_eq!(gt_ui32(3, 2), true); + assert_eq!(gt_ui32(4, 0), true); + assert_eq!(gt_ui32(4, 1), true); + assert_eq!(gt_ui32(4, 2), true); + } + #[test] + fn test_256() { + assert_eq!(gt_ui32(4, 3), true); + assert_eq!(gt_ui32(2119154652, 0), true); + assert_eq!(gt_ui32(2119154652, 1), true); + assert_eq!(gt_ui32(2119154652, 2), true); + assert_eq!(gt_ui32(2119154652, 3), true); + assert_eq!(gt_ui32(2119154652, 4), true); + assert_eq!(gt_ui32(3002788344, 0), true); + assert_eq!(gt_ui32(3002788344, 1), true); + assert_eq!(gt_ui32(3002788344, 2), true); + assert_eq!(gt_ui32(3002788344, 3), true); + } + #[test] + fn test_257() { + assert_eq!(gt_ui32(3002788344, 4), true); + assert_eq!(gt_ui32(3002788344, 2119154652), true); + assert_eq!(gt_ui32(3482297128, 0), true); + assert_eq!(gt_ui32(3482297128, 1), true); + assert_eq!(gt_ui32(3482297128, 2), true); + assert_eq!(gt_ui32(3482297128, 3), true); + assert_eq!(gt_ui32(3482297128, 4), true); + assert_eq!(gt_ui32(3482297128, 2119154652), true); + assert_eq!(gt_ui32(3482297128, 3002788344), true); + assert_eq!(gt_ui32(4294967294, 0), true); + } + #[test] + fn test_258() { + assert_eq!(gt_ui32(4294967294, 1), true); + assert_eq!(gt_ui32(4294967294, 2), true); + assert_eq!(gt_ui32(4294967294, 3), true); + assert_eq!(gt_ui32(4294967294, 4), true); + assert_eq!(gt_ui32(4294967294, 2119154652), true); + assert_eq!(gt_ui32(4294967294, 3002788344), true); + assert_eq!(gt_ui32(4294967294, 3482297128), true); + assert_eq!(gt_ui32(4294967295, 0), true); + assert_eq!(gt_ui32(4294967295, 1), true); + assert_eq!(gt_ui32(4294967295, 2), true); + } + #[test] + fn test_259() { + assert_eq!(gt_ui32(4294967295, 3), true); + assert_eq!(gt_ui32(4294967295, 4), true); + assert_eq!(gt_ui32(4294967295, 2119154652), true); + assert_eq!(gt_ui32(4294967295, 3002788344), true); + assert_eq!(gt_ui32(4294967295, 3482297128), true); + assert_eq!(gt_ui32(4294967295, 4294967294), true); + assert_eq!(gt_ui64(0, 0), false); + assert_eq!(gt_ui64(0, 1), false); + assert_eq!(gt_ui64(0, 2), false); + assert_eq!(gt_ui64(0, 3), false); + } + #[test] + fn test_260() { + assert_eq!(gt_ui64(0, 4), false); + assert_eq!(gt_ui64(0, 191084152064409600), false); + assert_eq!(gt_ui64(0, 11015955194427482112), false); + assert_eq!(gt_ui64(0, 16990600415051759616), false); + assert_eq!(gt_ui64(0, 18446744073709551614), false); + assert_eq!(gt_ui64(0, 18446744073709551615), false); + assert_eq!(gt_ui64(1, 1), false); + assert_eq!(gt_ui64(1, 2), false); + assert_eq!(gt_ui64(1, 3), false); + assert_eq!(gt_ui64(1, 4), false); + } + #[test] + fn test_261() { + assert_eq!(gt_ui64(1, 191084152064409600), false); + assert_eq!(gt_ui64(1, 11015955194427482112), false); + assert_eq!(gt_ui64(1, 16990600415051759616), false); + assert_eq!(gt_ui64(1, 18446744073709551614), false); + assert_eq!(gt_ui64(1, 18446744073709551615), false); + assert_eq!(gt_ui64(2, 2), false); + assert_eq!(gt_ui64(2, 3), false); + assert_eq!(gt_ui64(2, 4), false); + assert_eq!(gt_ui64(2, 191084152064409600), false); + assert_eq!(gt_ui64(2, 11015955194427482112), false); + } + #[test] + fn test_262() { + assert_eq!(gt_ui64(2, 16990600415051759616), false); + assert_eq!(gt_ui64(2, 18446744073709551614), false); + assert_eq!(gt_ui64(2, 18446744073709551615), false); + assert_eq!(gt_ui64(3, 3), false); + assert_eq!(gt_ui64(3, 4), false); + assert_eq!(gt_ui64(3, 191084152064409600), false); + assert_eq!(gt_ui64(3, 11015955194427482112), false); + assert_eq!(gt_ui64(3, 16990600415051759616), false); + assert_eq!(gt_ui64(3, 18446744073709551614), false); + assert_eq!(gt_ui64(3, 18446744073709551615), false); + } + #[test] + fn test_263() { + assert_eq!(gt_ui64(4, 4), false); + assert_eq!(gt_ui64(4, 191084152064409600), false); + assert_eq!(gt_ui64(4, 11015955194427482112), false); + assert_eq!(gt_ui64(4, 16990600415051759616), false); + assert_eq!(gt_ui64(4, 18446744073709551614), false); + assert_eq!(gt_ui64(4, 18446744073709551615), false); + assert_eq!(gt_ui64(191084152064409600, 191084152064409600), false); + assert_eq!(gt_ui64(191084152064409600, 11015955194427482112), false); + assert_eq!(gt_ui64(191084152064409600, 16990600415051759616), false); + assert_eq!(gt_ui64(191084152064409600, 18446744073709551614), false); + } + #[test] + fn test_264() { + assert_eq!(gt_ui64(191084152064409600, 18446744073709551615), false); + assert_eq!(gt_ui64(11015955194427482112, 11015955194427482112), false); + assert_eq!(gt_ui64(11015955194427482112, 16990600415051759616), false); + assert_eq!(gt_ui64(11015955194427482112, 18446744073709551614), false); + assert_eq!(gt_ui64(11015955194427482112, 18446744073709551615), false); + assert_eq!(gt_ui64(16990600415051759616, 16990600415051759616), false); + assert_eq!(gt_ui64(16990600415051759616, 18446744073709551614), false); + assert_eq!(gt_ui64(16990600415051759616, 18446744073709551615), false); + assert_eq!(gt_ui64(18446744073709551614, 18446744073709551614), false); + assert_eq!(gt_ui64(18446744073709551614, 18446744073709551615), false); + } + #[test] + fn test_265() { + assert_eq!(gt_ui64(18446744073709551615, 18446744073709551615), false); + assert_eq!(gt_ui64(1, 0), true); + assert_eq!(gt_ui64(2, 0), true); + assert_eq!(gt_ui64(2, 1), true); + assert_eq!(gt_ui64(3, 0), true); + assert_eq!(gt_ui64(3, 1), true); + assert_eq!(gt_ui64(3, 2), true); + assert_eq!(gt_ui64(4, 0), true); + assert_eq!(gt_ui64(4, 1), true); + assert_eq!(gt_ui64(4, 2), true); + } + #[test] + fn test_266() { + assert_eq!(gt_ui64(4, 3), true); + assert_eq!(gt_ui64(191084152064409600, 0), true); + assert_eq!(gt_ui64(191084152064409600, 1), true); + assert_eq!(gt_ui64(191084152064409600, 2), true); + assert_eq!(gt_ui64(191084152064409600, 3), true); + assert_eq!(gt_ui64(191084152064409600, 4), true); + assert_eq!(gt_ui64(11015955194427482112, 0), true); + assert_eq!(gt_ui64(11015955194427482112, 1), true); + assert_eq!(gt_ui64(11015955194427482112, 2), true); + assert_eq!(gt_ui64(11015955194427482112, 3), true); + } + #[test] + fn test_267() { + assert_eq!(gt_ui64(11015955194427482112, 4), true); + assert_eq!(gt_ui64(11015955194427482112, 191084152064409600), true); + assert_eq!(gt_ui64(16990600415051759616, 0), true); + assert_eq!(gt_ui64(16990600415051759616, 1), true); + assert_eq!(gt_ui64(16990600415051759616, 2), true); + assert_eq!(gt_ui64(16990600415051759616, 3), true); + assert_eq!(gt_ui64(16990600415051759616, 4), true); + assert_eq!(gt_ui64(16990600415051759616, 191084152064409600), true); + assert_eq!(gt_ui64(16990600415051759616, 11015955194427482112), true); + assert_eq!(gt_ui64(18446744073709551614, 0), true); + } + #[test] + fn test_268() { + assert_eq!(gt_ui64(18446744073709551614, 1), true); + assert_eq!(gt_ui64(18446744073709551614, 2), true); + assert_eq!(gt_ui64(18446744073709551614, 3), true); + assert_eq!(gt_ui64(18446744073709551614, 4), true); + assert_eq!(gt_ui64(18446744073709551614, 191084152064409600), true); + assert_eq!(gt_ui64(18446744073709551614, 11015955194427482112), true); + assert_eq!(gt_ui64(18446744073709551614, 16990600415051759616), true); + assert_eq!(gt_ui64(18446744073709551615, 0), true); + assert_eq!(gt_ui64(18446744073709551615, 1), true); + assert_eq!(gt_ui64(18446744073709551615, 2), true); + } + #[test] + fn test_269() { + assert_eq!(gt_ui64(18446744073709551615, 3), true); + assert_eq!(gt_ui64(18446744073709551615, 4), true); + assert_eq!(gt_ui64(18446744073709551615, 191084152064409600), true); + assert_eq!(gt_ui64(18446744073709551615, 11015955194427482112), true); + assert_eq!(gt_ui64(18446744073709551615, 16990600415051759616), true); + assert_eq!(gt_ui64(18446744073709551615, 18446744073709551614), true); + assert_eq!(gt_ui8(0, 0), false); + assert_eq!(gt_ui8(0, 1), false); + assert_eq!(gt_ui8(0, 2), false); + assert_eq!(gt_ui8(0, 3), false); + } + #[test] + fn test_270() { + assert_eq!(gt_ui8(0, 4), false); + assert_eq!(gt_ui8(0, 72), false); + assert_eq!(gt_ui8(0, 100), false); + assert_eq!(gt_ui8(0, 162), false); + assert_eq!(gt_ui8(0, 254), false); + assert_eq!(gt_ui8(0, 255), false); + assert_eq!(gt_ui8(1, 1), false); + assert_eq!(gt_ui8(1, 2), false); + assert_eq!(gt_ui8(1, 3), false); + assert_eq!(gt_ui8(1, 4), false); + } + #[test] + fn test_271() { + assert_eq!(gt_ui8(1, 72), false); + assert_eq!(gt_ui8(1, 100), false); + assert_eq!(gt_ui8(1, 162), false); + assert_eq!(gt_ui8(1, 254), false); + assert_eq!(gt_ui8(1, 255), false); + assert_eq!(gt_ui8(2, 2), false); + assert_eq!(gt_ui8(2, 3), false); + assert_eq!(gt_ui8(2, 4), false); + assert_eq!(gt_ui8(2, 72), false); + assert_eq!(gt_ui8(2, 100), false); + } + #[test] + fn test_272() { + assert_eq!(gt_ui8(2, 162), false); + assert_eq!(gt_ui8(2, 254), false); + assert_eq!(gt_ui8(2, 255), false); + assert_eq!(gt_ui8(3, 3), false); + assert_eq!(gt_ui8(3, 4), false); + assert_eq!(gt_ui8(3, 72), false); + assert_eq!(gt_ui8(3, 100), false); + assert_eq!(gt_ui8(3, 162), false); + assert_eq!(gt_ui8(3, 254), false); + assert_eq!(gt_ui8(3, 255), false); + } + #[test] + fn test_273() { + assert_eq!(gt_ui8(4, 4), false); + assert_eq!(gt_ui8(4, 72), false); + assert_eq!(gt_ui8(4, 100), false); + assert_eq!(gt_ui8(4, 162), false); + assert_eq!(gt_ui8(4, 254), false); + assert_eq!(gt_ui8(4, 255), false); + assert_eq!(gt_ui8(72, 72), false); + assert_eq!(gt_ui8(72, 100), false); + assert_eq!(gt_ui8(72, 162), false); + assert_eq!(gt_ui8(72, 254), false); + } + #[test] + fn test_274() { + assert_eq!(gt_ui8(72, 255), false); + assert_eq!(gt_ui8(100, 100), false); + assert_eq!(gt_ui8(100, 162), false); + assert_eq!(gt_ui8(100, 254), false); + assert_eq!(gt_ui8(100, 255), false); + assert_eq!(gt_ui8(162, 162), false); + assert_eq!(gt_ui8(162, 254), false); + assert_eq!(gt_ui8(162, 255), false); + assert_eq!(gt_ui8(254, 254), false); + assert_eq!(gt_ui8(254, 255), false); + } + #[test] + fn test_275() { + assert_eq!(gt_ui8(255, 255), false); + assert_eq!(gt_ui8(1, 0), true); + assert_eq!(gt_ui8(2, 0), true); + assert_eq!(gt_ui8(2, 1), true); + assert_eq!(gt_ui8(3, 0), true); + assert_eq!(gt_ui8(3, 1), true); + assert_eq!(gt_ui8(3, 2), true); + assert_eq!(gt_ui8(4, 0), true); + assert_eq!(gt_ui8(4, 1), true); + assert_eq!(gt_ui8(4, 2), true); + } + #[test] + fn test_276() { + assert_eq!(gt_ui8(4, 3), true); + assert_eq!(gt_ui8(72, 0), true); + assert_eq!(gt_ui8(72, 1), true); + assert_eq!(gt_ui8(72, 2), true); + assert_eq!(gt_ui8(72, 3), true); + assert_eq!(gt_ui8(72, 4), true); + assert_eq!(gt_ui8(100, 0), true); + assert_eq!(gt_ui8(100, 1), true); + assert_eq!(gt_ui8(100, 2), true); + assert_eq!(gt_ui8(100, 3), true); + } + #[test] + fn test_277() { + assert_eq!(gt_ui8(100, 4), true); + assert_eq!(gt_ui8(100, 72), true); + assert_eq!(gt_ui8(162, 0), true); + assert_eq!(gt_ui8(162, 1), true); + assert_eq!(gt_ui8(162, 2), true); + assert_eq!(gt_ui8(162, 3), true); + assert_eq!(gt_ui8(162, 4), true); + assert_eq!(gt_ui8(162, 72), true); + assert_eq!(gt_ui8(162, 100), true); + assert_eq!(gt_ui8(254, 0), true); + } + #[test] + fn test_278() { + assert_eq!(gt_ui8(254, 1), true); + assert_eq!(gt_ui8(254, 2), true); + assert_eq!(gt_ui8(254, 3), true); + assert_eq!(gt_ui8(254, 4), true); + assert_eq!(gt_ui8(254, 72), true); + assert_eq!(gt_ui8(254, 100), true); + assert_eq!(gt_ui8(254, 162), true); + assert_eq!(gt_ui8(255, 0), true); + assert_eq!(gt_ui8(255, 1), true); + assert_eq!(gt_ui8(255, 2), true); + } + #[test] + fn test_279() { + assert_eq!(gt_ui8(255, 3), true); + assert_eq!(gt_ui8(255, 4), true); + assert_eq!(gt_ui8(255, 72), true); + assert_eq!(gt_ui8(255, 100), true); + assert_eq!(gt_ui8(255, 162), true); + assert_eq!(gt_ui8(255, 254), true); + assert_eq!(le_si16(-32767, -32768), false); + assert_eq!(le_si16(-32547, -32768), false); + assert_eq!(le_si16(-32547, -32767), false); + assert_eq!(le_si16(0, -32768), false); + } + #[test] + fn test_280() { + assert_eq!(le_si16(0, -32767), false); + assert_eq!(le_si16(0, -32547), false); + assert_eq!(le_si16(1, -32768), false); + assert_eq!(le_si16(1, -32767), false); + assert_eq!(le_si16(1, -32547), false); + assert_eq!(le_si16(1, 0), false); + assert_eq!(le_si16(2, -32768), false); + assert_eq!(le_si16(2, -32767), false); + assert_eq!(le_si16(2, -32547), false); + assert_eq!(le_si16(2, 0), false); + } + #[test] + fn test_281() { + assert_eq!(le_si16(2, 1), false); + assert_eq!(le_si16(3, -32768), false); + assert_eq!(le_si16(3, -32767), false); + assert_eq!(le_si16(3, -32547), false); + assert_eq!(le_si16(3, 0), false); + assert_eq!(le_si16(3, 1), false); + assert_eq!(le_si16(3, 2), false); + assert_eq!(le_si16(4, -32768), false); + assert_eq!(le_si16(4, -32767), false); + assert_eq!(le_si16(4, -32547), false); + } + #[test] + fn test_282() { + assert_eq!(le_si16(4, 0), false); + assert_eq!(le_si16(4, 1), false); + assert_eq!(le_si16(4, 2), false); + assert_eq!(le_si16(4, 3), false); + assert_eq!(le_si16(10486, -32768), false); + assert_eq!(le_si16(10486, -32767), false); + assert_eq!(le_si16(10486, -32547), false); + assert_eq!(le_si16(10486, 0), false); + assert_eq!(le_si16(10486, 1), false); + assert_eq!(le_si16(10486, 2), false); + } + #[test] + fn test_283() { + assert_eq!(le_si16(10486, 3), false); + assert_eq!(le_si16(10486, 4), false); + assert_eq!(le_si16(16514, -32768), false); + assert_eq!(le_si16(16514, -32767), false); + assert_eq!(le_si16(16514, -32547), false); + assert_eq!(le_si16(16514, 0), false); + assert_eq!(le_si16(16514, 1), false); + assert_eq!(le_si16(16514, 2), false); + assert_eq!(le_si16(16514, 3), false); + assert_eq!(le_si16(16514, 4), false); + } + #[test] + fn test_284() { + assert_eq!(le_si16(16514, 10486), false); + assert_eq!(le_si16(32766, -32768), false); + assert_eq!(le_si16(32766, -32767), false); + assert_eq!(le_si16(32766, -32547), false); + assert_eq!(le_si16(32766, 0), false); + assert_eq!(le_si16(32766, 1), false); + assert_eq!(le_si16(32766, 2), false); + assert_eq!(le_si16(32766, 3), false); + assert_eq!(le_si16(32766, 4), false); + assert_eq!(le_si16(32766, 10486), false); + } + #[test] + fn test_285() { + assert_eq!(le_si16(32766, 16514), false); + assert_eq!(le_si16(32767, -32768), false); + assert_eq!(le_si16(32767, -32767), false); + assert_eq!(le_si16(32767, -32547), false); + assert_eq!(le_si16(32767, 0), false); + assert_eq!(le_si16(32767, 1), false); + assert_eq!(le_si16(32767, 2), false); + assert_eq!(le_si16(32767, 3), false); + assert_eq!(le_si16(32767, 4), false); + assert_eq!(le_si16(32767, 10486), false); + } + #[test] + fn test_286() { + assert_eq!(le_si16(32767, 16514), false); + assert_eq!(le_si16(32767, 32766), false); + assert_eq!(le_si16(-32768, -32768), true); + assert_eq!(le_si16(-32768, -32767), true); + assert_eq!(le_si16(-32768, -32547), true); + assert_eq!(le_si16(-32768, 0), true); + assert_eq!(le_si16(-32768, 1), true); + assert_eq!(le_si16(-32768, 2), true); + assert_eq!(le_si16(-32768, 3), true); + assert_eq!(le_si16(-32768, 4), true); + } + #[test] + fn test_287() { + assert_eq!(le_si16(-32768, 10486), true); + assert_eq!(le_si16(-32768, 16514), true); + assert_eq!(le_si16(-32768, 32766), true); + assert_eq!(le_si16(-32768, 32767), true); + assert_eq!(le_si16(-32767, -32767), true); + assert_eq!(le_si16(-32767, -32547), true); + assert_eq!(le_si16(-32767, 0), true); + assert_eq!(le_si16(-32767, 1), true); + assert_eq!(le_si16(-32767, 2), true); + assert_eq!(le_si16(-32767, 3), true); + } + #[test] + fn test_288() { + assert_eq!(le_si16(-32767, 4), true); + assert_eq!(le_si16(-32767, 10486), true); + assert_eq!(le_si16(-32767, 16514), true); + assert_eq!(le_si16(-32767, 32766), true); + assert_eq!(le_si16(-32767, 32767), true); + assert_eq!(le_si16(-32547, -32547), true); + assert_eq!(le_si16(-32547, 0), true); + assert_eq!(le_si16(-32547, 1), true); + assert_eq!(le_si16(-32547, 2), true); + assert_eq!(le_si16(-32547, 3), true); + } + #[test] + fn test_289() { + assert_eq!(le_si16(-32547, 4), true); + assert_eq!(le_si16(-32547, 10486), true); + assert_eq!(le_si16(-32547, 16514), true); + assert_eq!(le_si16(-32547, 32766), true); + assert_eq!(le_si16(-32547, 32767), true); + assert_eq!(le_si16(0, 0), true); + assert_eq!(le_si16(0, 1), true); + assert_eq!(le_si16(0, 2), true); + assert_eq!(le_si16(0, 3), true); + assert_eq!(le_si16(0, 4), true); + } + #[test] + fn test_290() { + assert_eq!(le_si16(0, 10486), true); + assert_eq!(le_si16(0, 16514), true); + assert_eq!(le_si16(0, 32766), true); + assert_eq!(le_si16(0, 32767), true); + assert_eq!(le_si16(1, 1), true); + assert_eq!(le_si16(1, 2), true); + assert_eq!(le_si16(1, 3), true); + assert_eq!(le_si16(1, 4), true); + assert_eq!(le_si16(1, 10486), true); + assert_eq!(le_si16(1, 16514), true); + } + #[test] + fn test_291() { + assert_eq!(le_si16(1, 32766), true); + assert_eq!(le_si16(1, 32767), true); + assert_eq!(le_si16(2, 2), true); + assert_eq!(le_si16(2, 3), true); + assert_eq!(le_si16(2, 4), true); + assert_eq!(le_si16(2, 10486), true); + assert_eq!(le_si16(2, 16514), true); + assert_eq!(le_si16(2, 32766), true); + assert_eq!(le_si16(2, 32767), true); + assert_eq!(le_si16(3, 3), true); + } + #[test] + fn test_292() { + assert_eq!(le_si16(3, 4), true); + assert_eq!(le_si16(3, 10486), true); + assert_eq!(le_si16(3, 16514), true); + assert_eq!(le_si16(3, 32766), true); + assert_eq!(le_si16(3, 32767), true); + assert_eq!(le_si16(4, 4), true); + assert_eq!(le_si16(4, 10486), true); + assert_eq!(le_si16(4, 16514), true); + assert_eq!(le_si16(4, 32766), true); + assert_eq!(le_si16(4, 32767), true); + } + #[test] + fn test_293() { + assert_eq!(le_si16(10486, 10486), true); + assert_eq!(le_si16(10486, 16514), true); + assert_eq!(le_si16(10486, 32766), true); + assert_eq!(le_si16(10486, 32767), true); + assert_eq!(le_si16(16514, 16514), true); + assert_eq!(le_si16(16514, 32766), true); + assert_eq!(le_si16(16514, 32767), true); + assert_eq!(le_si16(32766, 32766), true); + assert_eq!(le_si16(32766, 32767), true); + assert_eq!(le_si16(32767, 32767), true); + } + #[test] + fn test_294() { + assert_eq!(le_si32(-2147483647, -2147483648), false); + assert_eq!(le_si32(-1713183800, -2147483648), false); + assert_eq!(le_si32(-1713183800, -2147483647), false); + assert_eq!(le_si32(-1252582164, -2147483648), false); + assert_eq!(le_si32(-1252582164, -2147483647), false); + assert_eq!(le_si32(-1252582164, -1713183800), false); + assert_eq!(le_si32(-1035405763, -2147483648), false); + assert_eq!(le_si32(-1035405763, -2147483647), false); + assert_eq!(le_si32(-1035405763, -1713183800), false); + assert_eq!(le_si32(-1035405763, -1252582164), false); + } + #[test] + fn test_295() { + assert_eq!(le_si32(0, -2147483648), false); + assert_eq!(le_si32(0, -2147483647), false); + assert_eq!(le_si32(0, -1713183800), false); + assert_eq!(le_si32(0, -1252582164), false); + assert_eq!(le_si32(0, -1035405763), false); + assert_eq!(le_si32(1, -2147483648), false); + assert_eq!(le_si32(1, -2147483647), false); + assert_eq!(le_si32(1, -1713183800), false); + assert_eq!(le_si32(1, -1252582164), false); + assert_eq!(le_si32(1, -1035405763), false); + } + #[test] + fn test_296() { + assert_eq!(le_si32(1, 0), false); + assert_eq!(le_si32(2, -2147483648), false); + assert_eq!(le_si32(2, -2147483647), false); + assert_eq!(le_si32(2, -1713183800), false); + assert_eq!(le_si32(2, -1252582164), false); + assert_eq!(le_si32(2, -1035405763), false); + assert_eq!(le_si32(2, 0), false); + assert_eq!(le_si32(2, 1), false); + assert_eq!(le_si32(3, -2147483648), false); + assert_eq!(le_si32(3, -2147483647), false); + } + #[test] + fn test_297() { + assert_eq!(le_si32(3, -1713183800), false); + assert_eq!(le_si32(3, -1252582164), false); + assert_eq!(le_si32(3, -1035405763), false); + assert_eq!(le_si32(3, 0), false); + assert_eq!(le_si32(3, 1), false); + assert_eq!(le_si32(3, 2), false); + assert_eq!(le_si32(4, -2147483648), false); + assert_eq!(le_si32(4, -2147483647), false); + assert_eq!(le_si32(4, -1713183800), false); + assert_eq!(le_si32(4, -1252582164), false); + } + #[test] + fn test_298() { + assert_eq!(le_si32(4, -1035405763), false); + assert_eq!(le_si32(4, 0), false); + assert_eq!(le_si32(4, 1), false); + assert_eq!(le_si32(4, 2), false); + assert_eq!(le_si32(4, 3), false); + assert_eq!(le_si32(2147483646, -2147483648), false); + assert_eq!(le_si32(2147483646, -2147483647), false); + assert_eq!(le_si32(2147483646, -1713183800), false); + assert_eq!(le_si32(2147483646, -1252582164), false); + assert_eq!(le_si32(2147483646, -1035405763), false); + } + #[test] + fn test_299() { + assert_eq!(le_si32(2147483646, 0), false); + assert_eq!(le_si32(2147483646, 1), false); + assert_eq!(le_si32(2147483646, 2), false); + assert_eq!(le_si32(2147483646, 3), false); + assert_eq!(le_si32(2147483646, 4), false); + assert_eq!(le_si32(2147483647, -2147483648), false); + assert_eq!(le_si32(2147483647, -2147483647), false); + assert_eq!(le_si32(2147483647, -1713183800), false); + assert_eq!(le_si32(2147483647, -1252582164), false); + assert_eq!(le_si32(2147483647, -1035405763), false); + } + #[test] + fn test_300() { + assert_eq!(le_si32(2147483647, 0), false); + assert_eq!(le_si32(2147483647, 1), false); + assert_eq!(le_si32(2147483647, 2), false); + assert_eq!(le_si32(2147483647, 3), false); + assert_eq!(le_si32(2147483647, 4), false); + assert_eq!(le_si32(2147483647, 2147483646), false); + assert_eq!(le_si32(-2147483648, -2147483648), true); + assert_eq!(le_si32(-2147483648, -2147483647), true); + assert_eq!(le_si32(-2147483648, -1713183800), true); + assert_eq!(le_si32(-2147483648, -1252582164), true); + } + #[test] + fn test_301() { + assert_eq!(le_si32(-2147483648, -1035405763), true); + assert_eq!(le_si32(-2147483648, 0), true); + assert_eq!(le_si32(-2147483648, 1), true); + assert_eq!(le_si32(-2147483648, 2), true); + assert_eq!(le_si32(-2147483648, 3), true); + assert_eq!(le_si32(-2147483648, 4), true); + assert_eq!(le_si32(-2147483648, 2147483646), true); + assert_eq!(le_si32(-2147483648, 2147483647), true); + assert_eq!(le_si32(-2147483647, -2147483647), true); + assert_eq!(le_si32(-2147483647, -1713183800), true); + } + #[test] + fn test_302() { + assert_eq!(le_si32(-2147483647, -1252582164), true); + assert_eq!(le_si32(-2147483647, -1035405763), true); + assert_eq!(le_si32(-2147483647, 0), true); + assert_eq!(le_si32(-2147483647, 1), true); + assert_eq!(le_si32(-2147483647, 2), true); + assert_eq!(le_si32(-2147483647, 3), true); + assert_eq!(le_si32(-2147483647, 4), true); + assert_eq!(le_si32(-2147483647, 2147483646), true); + assert_eq!(le_si32(-2147483647, 2147483647), true); + assert_eq!(le_si32(-1713183800, -1713183800), true); + } + #[test] + fn test_303() { + assert_eq!(le_si32(-1713183800, -1252582164), true); + assert_eq!(le_si32(-1713183800, -1035405763), true); + assert_eq!(le_si32(-1713183800, 0), true); + assert_eq!(le_si32(-1713183800, 1), true); + assert_eq!(le_si32(-1713183800, 2), true); + assert_eq!(le_si32(-1713183800, 3), true); + assert_eq!(le_si32(-1713183800, 4), true); + assert_eq!(le_si32(-1713183800, 2147483646), true); + assert_eq!(le_si32(-1713183800, 2147483647), true); + assert_eq!(le_si32(-1252582164, -1252582164), true); + } + #[test] + fn test_304() { + assert_eq!(le_si32(-1252582164, -1035405763), true); + assert_eq!(le_si32(-1252582164, 0), true); + assert_eq!(le_si32(-1252582164, 1), true); + assert_eq!(le_si32(-1252582164, 2), true); + assert_eq!(le_si32(-1252582164, 3), true); + assert_eq!(le_si32(-1252582164, 4), true); + assert_eq!(le_si32(-1252582164, 2147483646), true); + assert_eq!(le_si32(-1252582164, 2147483647), true); + assert_eq!(le_si32(-1035405763, -1035405763), true); + assert_eq!(le_si32(-1035405763, 0), true); + } + #[test] + fn test_305() { + assert_eq!(le_si32(-1035405763, 1), true); + assert_eq!(le_si32(-1035405763, 2), true); + assert_eq!(le_si32(-1035405763, 3), true); + assert_eq!(le_si32(-1035405763, 4), true); + assert_eq!(le_si32(-1035405763, 2147483646), true); + assert_eq!(le_si32(-1035405763, 2147483647), true); + assert_eq!(le_si32(0, 0), true); + assert_eq!(le_si32(0, 1), true); + assert_eq!(le_si32(0, 2), true); + assert_eq!(le_si32(0, 3), true); + } + #[test] + fn test_306() { + assert_eq!(le_si32(0, 4), true); + assert_eq!(le_si32(0, 2147483646), true); + assert_eq!(le_si32(0, 2147483647), true); + assert_eq!(le_si32(1, 1), true); + assert_eq!(le_si32(1, 2), true); + assert_eq!(le_si32(1, 3), true); + assert_eq!(le_si32(1, 4), true); + assert_eq!(le_si32(1, 2147483646), true); + assert_eq!(le_si32(1, 2147483647), true); + assert_eq!(le_si32(2, 2), true); + } + #[test] + fn test_307() { + assert_eq!(le_si32(2, 3), true); + assert_eq!(le_si32(2, 4), true); + assert_eq!(le_si32(2, 2147483646), true); + assert_eq!(le_si32(2, 2147483647), true); + assert_eq!(le_si32(3, 3), true); + assert_eq!(le_si32(3, 4), true); + assert_eq!(le_si32(3, 2147483646), true); + assert_eq!(le_si32(3, 2147483647), true); + assert_eq!(le_si32(4, 4), true); + assert_eq!(le_si32(4, 2147483646), true); + } + #[test] + fn test_308() { + assert_eq!(le_si32(4, 2147483647), true); + assert_eq!(le_si32(2147483646, 2147483646), true); + assert_eq!(le_si32(2147483646, 2147483647), true); + assert_eq!(le_si32(2147483647, 2147483647), true); + assert_eq!(le_si64(-9223372036854775807, -9223372036854775808), false); + assert_eq!(le_si64(-1741927215160008704, -9223372036854775808), false); + assert_eq!(le_si64(-1741927215160008704, -9223372036854775807), false); + assert_eq!(le_si64(-1328271339354574848, -9223372036854775808), false); + assert_eq!(le_si64(-1328271339354574848, -9223372036854775807), false); + assert_eq!(le_si64(-1328271339354574848, -1741927215160008704), false); + } + #[test] + fn test_309() { + assert_eq!(le_si64(0, -9223372036854775808), false); + assert_eq!(le_si64(0, -9223372036854775807), false); + assert_eq!(le_si64(0, -1741927215160008704), false); + assert_eq!(le_si64(0, -1328271339354574848), false); + assert_eq!(le_si64(1, -9223372036854775808), false); + assert_eq!(le_si64(1, -9223372036854775807), false); + assert_eq!(le_si64(1, -1741927215160008704), false); + assert_eq!(le_si64(1, -1328271339354574848), false); + assert_eq!(le_si64(1, 0), false); + assert_eq!(le_si64(2, -9223372036854775808), false); + } + #[test] + fn test_310() { + assert_eq!(le_si64(2, -9223372036854775807), false); + assert_eq!(le_si64(2, -1741927215160008704), false); + assert_eq!(le_si64(2, -1328271339354574848), false); + assert_eq!(le_si64(2, 0), false); + assert_eq!(le_si64(2, 1), false); + assert_eq!(le_si64(3, -9223372036854775808), false); + assert_eq!(le_si64(3, -9223372036854775807), false); + assert_eq!(le_si64(3, -1741927215160008704), false); + assert_eq!(le_si64(3, -1328271339354574848), false); + assert_eq!(le_si64(3, 0), false); + } + #[test] + fn test_311() { + assert_eq!(le_si64(3, 1), false); + assert_eq!(le_si64(3, 2), false); + assert_eq!(le_si64(4, -9223372036854775808), false); + assert_eq!(le_si64(4, -9223372036854775807), false); + assert_eq!(le_si64(4, -1741927215160008704), false); + assert_eq!(le_si64(4, -1328271339354574848), false); + assert_eq!(le_si64(4, 0), false); + assert_eq!(le_si64(4, 1), false); + assert_eq!(le_si64(4, 2), false); + assert_eq!(le_si64(4, 3), false); + } + #[test] + fn test_312() { + assert_eq!(le_si64(5577148965131116544, -9223372036854775808), false); + assert_eq!(le_si64(5577148965131116544, -9223372036854775807), false); + assert_eq!(le_si64(5577148965131116544, -1741927215160008704), false); + assert_eq!(le_si64(5577148965131116544, -1328271339354574848), false); + assert_eq!(le_si64(5577148965131116544, 0), false); + assert_eq!(le_si64(5577148965131116544, 1), false); + assert_eq!(le_si64(5577148965131116544, 2), false); + assert_eq!(le_si64(5577148965131116544, 3), false); + assert_eq!(le_si64(5577148965131116544, 4), false); + assert_eq!(le_si64(9223372036854775806, -9223372036854775808), false); + } + #[test] + fn test_313() { + assert_eq!(le_si64(9223372036854775806, -9223372036854775807), false); + assert_eq!(le_si64(9223372036854775806, -1741927215160008704), false); + assert_eq!(le_si64(9223372036854775806, -1328271339354574848), false); + assert_eq!(le_si64(9223372036854775806, 0), false); + assert_eq!(le_si64(9223372036854775806, 1), false); + assert_eq!(le_si64(9223372036854775806, 2), false); + assert_eq!(le_si64(9223372036854775806, 3), false); + assert_eq!(le_si64(9223372036854775806, 4), false); + assert_eq!(le_si64(9223372036854775806, 5577148965131116544), false); + assert_eq!(le_si64(9223372036854775807, -9223372036854775808), false); + } + #[test] + fn test_314() { + assert_eq!(le_si64(9223372036854775807, -9223372036854775807), false); + assert_eq!(le_si64(9223372036854775807, -1741927215160008704), false); + assert_eq!(le_si64(9223372036854775807, -1328271339354574848), false); + assert_eq!(le_si64(9223372036854775807, 0), false); + assert_eq!(le_si64(9223372036854775807, 1), false); + assert_eq!(le_si64(9223372036854775807, 2), false); + assert_eq!(le_si64(9223372036854775807, 3), false); + assert_eq!(le_si64(9223372036854775807, 4), false); + assert_eq!(le_si64(9223372036854775807, 5577148965131116544), false); + assert_eq!(le_si64(9223372036854775807, 9223372036854775806), false); + } + #[test] + fn test_315() { + assert_eq!(le_si64(-9223372036854775808, -9223372036854775808), true); + assert_eq!(le_si64(-9223372036854775808, -9223372036854775807), true); + assert_eq!(le_si64(-9223372036854775808, -1741927215160008704), true); + assert_eq!(le_si64(-9223372036854775808, -1328271339354574848), true); + assert_eq!(le_si64(-9223372036854775808, 0), true); + assert_eq!(le_si64(-9223372036854775808, 1), true); + assert_eq!(le_si64(-9223372036854775808, 2), true); + assert_eq!(le_si64(-9223372036854775808, 3), true); + assert_eq!(le_si64(-9223372036854775808, 4), true); + assert_eq!(le_si64(-9223372036854775808, 5577148965131116544), true); + } + #[test] + fn test_316() { + assert_eq!(le_si64(-9223372036854775808, 9223372036854775806), true); + assert_eq!(le_si64(-9223372036854775808, 9223372036854775807), true); + assert_eq!(le_si64(-9223372036854775807, -9223372036854775807), true); + assert_eq!(le_si64(-9223372036854775807, -1741927215160008704), true); + assert_eq!(le_si64(-9223372036854775807, -1328271339354574848), true); + assert_eq!(le_si64(-9223372036854775807, 0), true); + assert_eq!(le_si64(-9223372036854775807, 1), true); + assert_eq!(le_si64(-9223372036854775807, 2), true); + assert_eq!(le_si64(-9223372036854775807, 3), true); + assert_eq!(le_si64(-9223372036854775807, 4), true); + } + #[test] + fn test_317() { + assert_eq!(le_si64(-9223372036854775807, 5577148965131116544), true); + assert_eq!(le_si64(-9223372036854775807, 9223372036854775806), true); + assert_eq!(le_si64(-9223372036854775807, 9223372036854775807), true); + assert_eq!(le_si64(-1741927215160008704, -1741927215160008704), true); + assert_eq!(le_si64(-1741927215160008704, -1328271339354574848), true); + assert_eq!(le_si64(-1741927215160008704, 0), true); + assert_eq!(le_si64(-1741927215160008704, 1), true); + assert_eq!(le_si64(-1741927215160008704, 2), true); + assert_eq!(le_si64(-1741927215160008704, 3), true); + assert_eq!(le_si64(-1741927215160008704, 4), true); + } + #[test] + fn test_318() { + assert_eq!(le_si64(-1741927215160008704, 5577148965131116544), true); + assert_eq!(le_si64(-1741927215160008704, 9223372036854775806), true); + assert_eq!(le_si64(-1741927215160008704, 9223372036854775807), true); + assert_eq!(le_si64(-1328271339354574848, -1328271339354574848), true); + assert_eq!(le_si64(-1328271339354574848, 0), true); + assert_eq!(le_si64(-1328271339354574848, 1), true); + assert_eq!(le_si64(-1328271339354574848, 2), true); + assert_eq!(le_si64(-1328271339354574848, 3), true); + assert_eq!(le_si64(-1328271339354574848, 4), true); + assert_eq!(le_si64(-1328271339354574848, 5577148965131116544), true); + } + #[test] + fn test_319() { + assert_eq!(le_si64(-1328271339354574848, 9223372036854775806), true); + assert_eq!(le_si64(-1328271339354574848, 9223372036854775807), true); + assert_eq!(le_si64(0, 0), true); + assert_eq!(le_si64(0, 1), true); + assert_eq!(le_si64(0, 2), true); + assert_eq!(le_si64(0, 3), true); + assert_eq!(le_si64(0, 4), true); + assert_eq!(le_si64(0, 5577148965131116544), true); + assert_eq!(le_si64(0, 9223372036854775806), true); + assert_eq!(le_si64(0, 9223372036854775807), true); + } + #[test] + fn test_320() { + assert_eq!(le_si64(1, 1), true); + assert_eq!(le_si64(1, 2), true); + assert_eq!(le_si64(1, 3), true); + assert_eq!(le_si64(1, 4), true); + assert_eq!(le_si64(1, 5577148965131116544), true); + assert_eq!(le_si64(1, 9223372036854775806), true); + assert_eq!(le_si64(1, 9223372036854775807), true); + assert_eq!(le_si64(2, 2), true); + assert_eq!(le_si64(2, 3), true); + assert_eq!(le_si64(2, 4), true); + } + #[test] + fn test_321() { + assert_eq!(le_si64(2, 5577148965131116544), true); + assert_eq!(le_si64(2, 9223372036854775806), true); + assert_eq!(le_si64(2, 9223372036854775807), true); + assert_eq!(le_si64(3, 3), true); + assert_eq!(le_si64(3, 4), true); + assert_eq!(le_si64(3, 5577148965131116544), true); + assert_eq!(le_si64(3, 9223372036854775806), true); + assert_eq!(le_si64(3, 9223372036854775807), true); + assert_eq!(le_si64(4, 4), true); + assert_eq!(le_si64(4, 5577148965131116544), true); + } + #[test] + fn test_322() { + assert_eq!(le_si64(4, 9223372036854775806), true); + assert_eq!(le_si64(4, 9223372036854775807), true); + assert_eq!(le_si64(5577148965131116544, 5577148965131116544), true); + assert_eq!(le_si64(5577148965131116544, 9223372036854775806), true); + assert_eq!(le_si64(5577148965131116544, 9223372036854775807), true); + assert_eq!(le_si64(9223372036854775806, 9223372036854775806), true); + assert_eq!(le_si64(9223372036854775806, 9223372036854775807), true); + assert_eq!(le_si64(9223372036854775807, 9223372036854775807), true); + assert_eq!(le_si8(-127, -128), false); + assert_eq!(le_si8(0, -128), false); + } + #[test] + fn test_323() { + assert_eq!(le_si8(0, -127), false); + assert_eq!(le_si8(1, -128), false); + assert_eq!(le_si8(1, -127), false); + assert_eq!(le_si8(1, 0), false); + assert_eq!(le_si8(2, -128), false); + assert_eq!(le_si8(2, -127), false); + assert_eq!(le_si8(2, 0), false); + assert_eq!(le_si8(2, 1), false); + assert_eq!(le_si8(3, -128), false); + assert_eq!(le_si8(3, -127), false); + } + #[test] + fn test_324() { + assert_eq!(le_si8(3, 0), false); + assert_eq!(le_si8(3, 1), false); + assert_eq!(le_si8(3, 2), false); + assert_eq!(le_si8(4, -128), false); + assert_eq!(le_si8(4, -127), false); + assert_eq!(le_si8(4, 0), false); + assert_eq!(le_si8(4, 1), false); + assert_eq!(le_si8(4, 2), false); + assert_eq!(le_si8(4, 3), false); + assert_eq!(le_si8(16, -128), false); + } + #[test] + fn test_325() { + assert_eq!(le_si8(16, -127), false); + assert_eq!(le_si8(16, 0), false); + assert_eq!(le_si8(16, 1), false); + assert_eq!(le_si8(16, 2), false); + assert_eq!(le_si8(16, 3), false); + assert_eq!(le_si8(16, 4), false); + assert_eq!(le_si8(126, -128), false); + assert_eq!(le_si8(126, -127), false); + assert_eq!(le_si8(126, 0), false); + assert_eq!(le_si8(126, 1), false); + } + #[test] + fn test_326() { + assert_eq!(le_si8(126, 2), false); + assert_eq!(le_si8(126, 3), false); + assert_eq!(le_si8(126, 4), false); + assert_eq!(le_si8(126, 16), false); + assert_eq!(le_si8(127, -128), false); + assert_eq!(le_si8(127, -127), false); + assert_eq!(le_si8(127, 0), false); + assert_eq!(le_si8(127, 1), false); + assert_eq!(le_si8(127, 2), false); + assert_eq!(le_si8(127, 3), false); + } + #[test] + fn test_327() { + assert_eq!(le_si8(127, 4), false); + assert_eq!(le_si8(127, 16), false); + assert_eq!(le_si8(127, 126), false); + assert_eq!(le_si8(-128, -128), true); + assert_eq!(le_si8(-128, -127), true); + assert_eq!(le_si8(-128, 0), true); + assert_eq!(le_si8(-128, 1), true); + assert_eq!(le_si8(-128, 2), true); + assert_eq!(le_si8(-128, 3), true); + assert_eq!(le_si8(-128, 4), true); + } + #[test] + fn test_328() { + assert_eq!(le_si8(-128, 16), true); + assert_eq!(le_si8(-128, 126), true); + assert_eq!(le_si8(-128, 127), true); + assert_eq!(le_si8(-127, -127), true); + assert_eq!(le_si8(-127, 0), true); + assert_eq!(le_si8(-127, 1), true); + assert_eq!(le_si8(-127, 2), true); + assert_eq!(le_si8(-127, 3), true); + assert_eq!(le_si8(-127, 4), true); + assert_eq!(le_si8(-127, 16), true); + } + #[test] + fn test_329() { + assert_eq!(le_si8(-127, 126), true); + assert_eq!(le_si8(-127, 127), true); + assert_eq!(le_si8(0, 0), true); + assert_eq!(le_si8(0, 1), true); + assert_eq!(le_si8(0, 2), true); + assert_eq!(le_si8(0, 3), true); + assert_eq!(le_si8(0, 4), true); + assert_eq!(le_si8(0, 16), true); + assert_eq!(le_si8(0, 126), true); + assert_eq!(le_si8(0, 127), true); + } + #[test] + fn test_330() { + assert_eq!(le_si8(1, 1), true); + assert_eq!(le_si8(1, 2), true); + assert_eq!(le_si8(1, 3), true); + assert_eq!(le_si8(1, 4), true); + assert_eq!(le_si8(1, 16), true); + assert_eq!(le_si8(1, 126), true); + assert_eq!(le_si8(1, 127), true); + assert_eq!(le_si8(2, 2), true); + assert_eq!(le_si8(2, 3), true); + assert_eq!(le_si8(2, 4), true); + } + #[test] + fn test_331() { + assert_eq!(le_si8(2, 16), true); + assert_eq!(le_si8(2, 126), true); + assert_eq!(le_si8(2, 127), true); + assert_eq!(le_si8(3, 3), true); + assert_eq!(le_si8(3, 4), true); + assert_eq!(le_si8(3, 16), true); + assert_eq!(le_si8(3, 126), true); + assert_eq!(le_si8(3, 127), true); + assert_eq!(le_si8(4, 4), true); + assert_eq!(le_si8(4, 16), true); + } + #[test] + fn test_332() { + assert_eq!(le_si8(4, 126), true); + assert_eq!(le_si8(4, 127), true); + assert_eq!(le_si8(16, 16), true); + assert_eq!(le_si8(16, 126), true); + assert_eq!(le_si8(16, 127), true); + assert_eq!(le_si8(126, 126), true); + assert_eq!(le_si8(126, 127), true); + assert_eq!(le_si8(127, 127), true); + assert_eq!(le_ui16(1, 0), false); + assert_eq!(le_ui16(2, 0), false); + } + #[test] + fn test_333() { + assert_eq!(le_ui16(2, 1), false); + assert_eq!(le_ui16(3, 0), false); + assert_eq!(le_ui16(3, 1), false); + assert_eq!(le_ui16(3, 2), false); + assert_eq!(le_ui16(4, 0), false); + assert_eq!(le_ui16(4, 1), false); + assert_eq!(le_ui16(4, 2), false); + assert_eq!(le_ui16(4, 3), false); + assert_eq!(le_ui16(1717, 0), false); + assert_eq!(le_ui16(1717, 1), false); + } + #[test] + fn test_334() { + assert_eq!(le_ui16(1717, 2), false); + assert_eq!(le_ui16(1717, 3), false); + assert_eq!(le_ui16(1717, 4), false); + assert_eq!(le_ui16(17988, 0), false); + assert_eq!(le_ui16(17988, 1), false); + assert_eq!(le_ui16(17988, 2), false); + assert_eq!(le_ui16(17988, 3), false); + assert_eq!(le_ui16(17988, 4), false); + assert_eq!(le_ui16(17988, 1717), false); + assert_eq!(le_ui16(65096, 0), false); + } + #[test] + fn test_335() { + assert_eq!(le_ui16(65096, 1), false); + assert_eq!(le_ui16(65096, 2), false); + assert_eq!(le_ui16(65096, 3), false); + assert_eq!(le_ui16(65096, 4), false); + assert_eq!(le_ui16(65096, 1717), false); + assert_eq!(le_ui16(65096, 17988), false); + assert_eq!(le_ui16(65534, 0), false); + assert_eq!(le_ui16(65534, 1), false); + assert_eq!(le_ui16(65534, 2), false); + assert_eq!(le_ui16(65534, 3), false); + } + #[test] + fn test_336() { + assert_eq!(le_ui16(65534, 4), false); + assert_eq!(le_ui16(65534, 1717), false); + assert_eq!(le_ui16(65534, 17988), false); + assert_eq!(le_ui16(65534, 65096), false); + assert_eq!(le_ui16(65535, 0), false); + assert_eq!(le_ui16(65535, 1), false); + assert_eq!(le_ui16(65535, 2), false); + assert_eq!(le_ui16(65535, 3), false); + assert_eq!(le_ui16(65535, 4), false); + assert_eq!(le_ui16(65535, 1717), false); + } + #[test] + fn test_337() { + assert_eq!(le_ui16(65535, 17988), false); + assert_eq!(le_ui16(65535, 65096), false); + assert_eq!(le_ui16(65535, 65534), false); + assert_eq!(le_ui16(0, 0), true); + assert_eq!(le_ui16(0, 1), true); + assert_eq!(le_ui16(0, 2), true); + assert_eq!(le_ui16(0, 3), true); + assert_eq!(le_ui16(0, 4), true); + assert_eq!(le_ui16(0, 1717), true); + assert_eq!(le_ui16(0, 17988), true); + } + #[test] + fn test_338() { + assert_eq!(le_ui16(0, 65096), true); + assert_eq!(le_ui16(0, 65534), true); + assert_eq!(le_ui16(0, 65535), true); + assert_eq!(le_ui16(1, 1), true); + assert_eq!(le_ui16(1, 2), true); + assert_eq!(le_ui16(1, 3), true); + assert_eq!(le_ui16(1, 4), true); + assert_eq!(le_ui16(1, 1717), true); + assert_eq!(le_ui16(1, 17988), true); + assert_eq!(le_ui16(1, 65096), true); + } + #[test] + fn test_339() { + assert_eq!(le_ui16(1, 65534), true); + assert_eq!(le_ui16(1, 65535), true); + assert_eq!(le_ui16(2, 2), true); + assert_eq!(le_ui16(2, 3), true); + assert_eq!(le_ui16(2, 4), true); + assert_eq!(le_ui16(2, 1717), true); + assert_eq!(le_ui16(2, 17988), true); + assert_eq!(le_ui16(2, 65096), true); + assert_eq!(le_ui16(2, 65534), true); + assert_eq!(le_ui16(2, 65535), true); + } + #[test] + fn test_340() { + assert_eq!(le_ui16(3, 3), true); + assert_eq!(le_ui16(3, 4), true); + assert_eq!(le_ui16(3, 1717), true); + assert_eq!(le_ui16(3, 17988), true); + assert_eq!(le_ui16(3, 65096), true); + assert_eq!(le_ui16(3, 65534), true); + assert_eq!(le_ui16(3, 65535), true); + assert_eq!(le_ui16(4, 4), true); + assert_eq!(le_ui16(4, 1717), true); + assert_eq!(le_ui16(4, 17988), true); + } + #[test] + fn test_341() { + assert_eq!(le_ui16(4, 65096), true); + assert_eq!(le_ui16(4, 65534), true); + assert_eq!(le_ui16(4, 65535), true); + assert_eq!(le_ui16(1717, 1717), true); + assert_eq!(le_ui16(1717, 17988), true); + assert_eq!(le_ui16(1717, 65096), true); + assert_eq!(le_ui16(1717, 65534), true); + assert_eq!(le_ui16(1717, 65535), true); + assert_eq!(le_ui16(17988, 17988), true); + assert_eq!(le_ui16(17988, 65096), true); + } + #[test] + fn test_342() { + assert_eq!(le_ui16(17988, 65534), true); + assert_eq!(le_ui16(17988, 65535), true); + assert_eq!(le_ui16(65096, 65096), true); + assert_eq!(le_ui16(65096, 65534), true); + assert_eq!(le_ui16(65096, 65535), true); + assert_eq!(le_ui16(65534, 65534), true); + assert_eq!(le_ui16(65534, 65535), true); + assert_eq!(le_ui16(65535, 65535), true); + assert_eq!(le_ui32(1, 0), false); + assert_eq!(le_ui32(2, 0), false); + } + #[test] + fn test_343() { + assert_eq!(le_ui32(2, 1), false); + assert_eq!(le_ui32(3, 0), false); + assert_eq!(le_ui32(3, 1), false); + assert_eq!(le_ui32(3, 2), false); + assert_eq!(le_ui32(4, 0), false); + assert_eq!(le_ui32(4, 1), false); + assert_eq!(le_ui32(4, 2), false); + assert_eq!(le_ui32(4, 3), false); + assert_eq!(le_ui32(2119154652, 0), false); + assert_eq!(le_ui32(2119154652, 1), false); + } + #[test] + fn test_344() { + assert_eq!(le_ui32(2119154652, 2), false); + assert_eq!(le_ui32(2119154652, 3), false); + assert_eq!(le_ui32(2119154652, 4), false); + assert_eq!(le_ui32(3002788344, 0), false); + assert_eq!(le_ui32(3002788344, 1), false); + assert_eq!(le_ui32(3002788344, 2), false); + assert_eq!(le_ui32(3002788344, 3), false); + assert_eq!(le_ui32(3002788344, 4), false); + assert_eq!(le_ui32(3002788344, 2119154652), false); + assert_eq!(le_ui32(3482297128, 0), false); + } + #[test] + fn test_345() { + assert_eq!(le_ui32(3482297128, 1), false); + assert_eq!(le_ui32(3482297128, 2), false); + assert_eq!(le_ui32(3482297128, 3), false); + assert_eq!(le_ui32(3482297128, 4), false); + assert_eq!(le_ui32(3482297128, 2119154652), false); + assert_eq!(le_ui32(3482297128, 3002788344), false); + assert_eq!(le_ui32(4294967294, 0), false); + assert_eq!(le_ui32(4294967294, 1), false); + assert_eq!(le_ui32(4294967294, 2), false); + assert_eq!(le_ui32(4294967294, 3), false); + } + #[test] + fn test_346() { + assert_eq!(le_ui32(4294967294, 4), false); + assert_eq!(le_ui32(4294967294, 2119154652), false); + assert_eq!(le_ui32(4294967294, 3002788344), false); + assert_eq!(le_ui32(4294967294, 3482297128), false); + assert_eq!(le_ui32(4294967295, 0), false); + assert_eq!(le_ui32(4294967295, 1), false); + assert_eq!(le_ui32(4294967295, 2), false); + assert_eq!(le_ui32(4294967295, 3), false); + assert_eq!(le_ui32(4294967295, 4), false); + assert_eq!(le_ui32(4294967295, 2119154652), false); + } + #[test] + fn test_347() { + assert_eq!(le_ui32(4294967295, 3002788344), false); + assert_eq!(le_ui32(4294967295, 3482297128), false); + assert_eq!(le_ui32(4294967295, 4294967294), false); + assert_eq!(le_ui32(0, 0), true); + assert_eq!(le_ui32(0, 1), true); + assert_eq!(le_ui32(0, 2), true); + assert_eq!(le_ui32(0, 3), true); + assert_eq!(le_ui32(0, 4), true); + assert_eq!(le_ui32(0, 2119154652), true); + assert_eq!(le_ui32(0, 3002788344), true); + } + #[test] + fn test_348() { + assert_eq!(le_ui32(0, 3482297128), true); + assert_eq!(le_ui32(0, 4294967294), true); + assert_eq!(le_ui32(0, 4294967295), true); + assert_eq!(le_ui32(1, 1), true); + assert_eq!(le_ui32(1, 2), true); + assert_eq!(le_ui32(1, 3), true); + assert_eq!(le_ui32(1, 4), true); + assert_eq!(le_ui32(1, 2119154652), true); + assert_eq!(le_ui32(1, 3002788344), true); + assert_eq!(le_ui32(1, 3482297128), true); + } + #[test] + fn test_349() { + assert_eq!(le_ui32(1, 4294967294), true); + assert_eq!(le_ui32(1, 4294967295), true); + assert_eq!(le_ui32(2, 2), true); + assert_eq!(le_ui32(2, 3), true); + assert_eq!(le_ui32(2, 4), true); + assert_eq!(le_ui32(2, 2119154652), true); + assert_eq!(le_ui32(2, 3002788344), true); + assert_eq!(le_ui32(2, 3482297128), true); + assert_eq!(le_ui32(2, 4294967294), true); + assert_eq!(le_ui32(2, 4294967295), true); + } + #[test] + fn test_350() { + assert_eq!(le_ui32(3, 3), true); + assert_eq!(le_ui32(3, 4), true); + assert_eq!(le_ui32(3, 2119154652), true); + assert_eq!(le_ui32(3, 3002788344), true); + assert_eq!(le_ui32(3, 3482297128), true); + assert_eq!(le_ui32(3, 4294967294), true); + assert_eq!(le_ui32(3, 4294967295), true); + assert_eq!(le_ui32(4, 4), true); + assert_eq!(le_ui32(4, 2119154652), true); + assert_eq!(le_ui32(4, 3002788344), true); + } + #[test] + fn test_351() { + assert_eq!(le_ui32(4, 3482297128), true); + assert_eq!(le_ui32(4, 4294967294), true); + assert_eq!(le_ui32(4, 4294967295), true); + assert_eq!(le_ui32(2119154652, 2119154652), true); + assert_eq!(le_ui32(2119154652, 3002788344), true); + assert_eq!(le_ui32(2119154652, 3482297128), true); + assert_eq!(le_ui32(2119154652, 4294967294), true); + assert_eq!(le_ui32(2119154652, 4294967295), true); + assert_eq!(le_ui32(3002788344, 3002788344), true); + assert_eq!(le_ui32(3002788344, 3482297128), true); + } + #[test] + fn test_352() { + assert_eq!(le_ui32(3002788344, 4294967294), true); + assert_eq!(le_ui32(3002788344, 4294967295), true); + assert_eq!(le_ui32(3482297128, 3482297128), true); + assert_eq!(le_ui32(3482297128, 4294967294), true); + assert_eq!(le_ui32(3482297128, 4294967295), true); + assert_eq!(le_ui32(4294967294, 4294967294), true); + assert_eq!(le_ui32(4294967294, 4294967295), true); + assert_eq!(le_ui32(4294967295, 4294967295), true); + assert_eq!(le_ui64(1, 0), false); + assert_eq!(le_ui64(2, 0), false); + } + #[test] + fn test_353() { + assert_eq!(le_ui64(2, 1), false); + assert_eq!(le_ui64(3, 0), false); + assert_eq!(le_ui64(3, 1), false); + assert_eq!(le_ui64(3, 2), false); + assert_eq!(le_ui64(4, 0), false); + assert_eq!(le_ui64(4, 1), false); + assert_eq!(le_ui64(4, 2), false); + assert_eq!(le_ui64(4, 3), false); + assert_eq!(le_ui64(191084152064409600, 0), false); + assert_eq!(le_ui64(191084152064409600, 1), false); + } + #[test] + fn test_354() { + assert_eq!(le_ui64(191084152064409600, 2), false); + assert_eq!(le_ui64(191084152064409600, 3), false); + assert_eq!(le_ui64(191084152064409600, 4), false); + assert_eq!(le_ui64(11015955194427482112, 0), false); + assert_eq!(le_ui64(11015955194427482112, 1), false); + assert_eq!(le_ui64(11015955194427482112, 2), false); + assert_eq!(le_ui64(11015955194427482112, 3), false); + assert_eq!(le_ui64(11015955194427482112, 4), false); + assert_eq!(le_ui64(11015955194427482112, 191084152064409600), false); + assert_eq!(le_ui64(16990600415051759616, 0), false); + } + #[test] + fn test_355() { + assert_eq!(le_ui64(16990600415051759616, 1), false); + assert_eq!(le_ui64(16990600415051759616, 2), false); + assert_eq!(le_ui64(16990600415051759616, 3), false); + assert_eq!(le_ui64(16990600415051759616, 4), false); + assert_eq!(le_ui64(16990600415051759616, 191084152064409600), false); + assert_eq!(le_ui64(16990600415051759616, 11015955194427482112), false); + assert_eq!(le_ui64(18446744073709551614, 0), false); + assert_eq!(le_ui64(18446744073709551614, 1), false); + assert_eq!(le_ui64(18446744073709551614, 2), false); + assert_eq!(le_ui64(18446744073709551614, 3), false); + } + #[test] + fn test_356() { + assert_eq!(le_ui64(18446744073709551614, 4), false); + assert_eq!(le_ui64(18446744073709551614, 191084152064409600), false); + assert_eq!(le_ui64(18446744073709551614, 11015955194427482112), false); + assert_eq!(le_ui64(18446744073709551614, 16990600415051759616), false); + assert_eq!(le_ui64(18446744073709551615, 0), false); + assert_eq!(le_ui64(18446744073709551615, 1), false); + assert_eq!(le_ui64(18446744073709551615, 2), false); + assert_eq!(le_ui64(18446744073709551615, 3), false); + assert_eq!(le_ui64(18446744073709551615, 4), false); + assert_eq!(le_ui64(18446744073709551615, 191084152064409600), false); + } + #[test] + fn test_357() { + assert_eq!(le_ui64(18446744073709551615, 11015955194427482112), false); + assert_eq!(le_ui64(18446744073709551615, 16990600415051759616), false); + assert_eq!(le_ui64(18446744073709551615, 18446744073709551614), false); + assert_eq!(le_ui64(0, 0), true); + assert_eq!(le_ui64(0, 1), true); + assert_eq!(le_ui64(0, 2), true); + assert_eq!(le_ui64(0, 3), true); + assert_eq!(le_ui64(0, 4), true); + assert_eq!(le_ui64(0, 191084152064409600), true); + assert_eq!(le_ui64(0, 11015955194427482112), true); + } + #[test] + fn test_358() { + assert_eq!(le_ui64(0, 16990600415051759616), true); + assert_eq!(le_ui64(0, 18446744073709551614), true); + assert_eq!(le_ui64(0, 18446744073709551615), true); + assert_eq!(le_ui64(1, 1), true); + assert_eq!(le_ui64(1, 2), true); + assert_eq!(le_ui64(1, 3), true); + assert_eq!(le_ui64(1, 4), true); + assert_eq!(le_ui64(1, 191084152064409600), true); + assert_eq!(le_ui64(1, 11015955194427482112), true); + assert_eq!(le_ui64(1, 16990600415051759616), true); + } + #[test] + fn test_359() { + assert_eq!(le_ui64(1, 18446744073709551614), true); + assert_eq!(le_ui64(1, 18446744073709551615), true); + assert_eq!(le_ui64(2, 2), true); + assert_eq!(le_ui64(2, 3), true); + assert_eq!(le_ui64(2, 4), true); + assert_eq!(le_ui64(2, 191084152064409600), true); + assert_eq!(le_ui64(2, 11015955194427482112), true); + assert_eq!(le_ui64(2, 16990600415051759616), true); + assert_eq!(le_ui64(2, 18446744073709551614), true); + assert_eq!(le_ui64(2, 18446744073709551615), true); + } + #[test] + fn test_360() { + assert_eq!(le_ui64(3, 3), true); + assert_eq!(le_ui64(3, 4), true); + assert_eq!(le_ui64(3, 191084152064409600), true); + assert_eq!(le_ui64(3, 11015955194427482112), true); + assert_eq!(le_ui64(3, 16990600415051759616), true); + assert_eq!(le_ui64(3, 18446744073709551614), true); + assert_eq!(le_ui64(3, 18446744073709551615), true); + assert_eq!(le_ui64(4, 4), true); + assert_eq!(le_ui64(4, 191084152064409600), true); + assert_eq!(le_ui64(4, 11015955194427482112), true); + } + #[test] + fn test_361() { + assert_eq!(le_ui64(4, 16990600415051759616), true); + assert_eq!(le_ui64(4, 18446744073709551614), true); + assert_eq!(le_ui64(4, 18446744073709551615), true); + assert_eq!(le_ui64(191084152064409600, 191084152064409600), true); + assert_eq!(le_ui64(191084152064409600, 11015955194427482112), true); + assert_eq!(le_ui64(191084152064409600, 16990600415051759616), true); + assert_eq!(le_ui64(191084152064409600, 18446744073709551614), true); + assert_eq!(le_ui64(191084152064409600, 18446744073709551615), true); + assert_eq!(le_ui64(11015955194427482112, 11015955194427482112), true); + assert_eq!(le_ui64(11015955194427482112, 16990600415051759616), true); + } + #[test] + fn test_362() { + assert_eq!(le_ui64(11015955194427482112, 18446744073709551614), true); + assert_eq!(le_ui64(11015955194427482112, 18446744073709551615), true); + assert_eq!(le_ui64(16990600415051759616, 16990600415051759616), true); + assert_eq!(le_ui64(16990600415051759616, 18446744073709551614), true); + assert_eq!(le_ui64(16990600415051759616, 18446744073709551615), true); + assert_eq!(le_ui64(18446744073709551614, 18446744073709551614), true); + assert_eq!(le_ui64(18446744073709551614, 18446744073709551615), true); + assert_eq!(le_ui64(18446744073709551615, 18446744073709551615), true); + assert_eq!(le_ui8(1, 0), false); + assert_eq!(le_ui8(2, 0), false); + } + #[test] + fn test_363() { + assert_eq!(le_ui8(2, 1), false); + assert_eq!(le_ui8(3, 0), false); + assert_eq!(le_ui8(3, 1), false); + assert_eq!(le_ui8(3, 2), false); + assert_eq!(le_ui8(4, 0), false); + assert_eq!(le_ui8(4, 1), false); + assert_eq!(le_ui8(4, 2), false); + assert_eq!(le_ui8(4, 3), false); + assert_eq!(le_ui8(72, 0), false); + assert_eq!(le_ui8(72, 1), false); + } + #[test] + fn test_364() { + assert_eq!(le_ui8(72, 2), false); + assert_eq!(le_ui8(72, 3), false); + assert_eq!(le_ui8(72, 4), false); + assert_eq!(le_ui8(100, 0), false); + assert_eq!(le_ui8(100, 1), false); + assert_eq!(le_ui8(100, 2), false); + assert_eq!(le_ui8(100, 3), false); + assert_eq!(le_ui8(100, 4), false); + assert_eq!(le_ui8(100, 72), false); + assert_eq!(le_ui8(162, 0), false); + } + #[test] + fn test_365() { + assert_eq!(le_ui8(162, 1), false); + assert_eq!(le_ui8(162, 2), false); + assert_eq!(le_ui8(162, 3), false); + assert_eq!(le_ui8(162, 4), false); + assert_eq!(le_ui8(162, 72), false); + assert_eq!(le_ui8(162, 100), false); + assert_eq!(le_ui8(254, 0), false); + assert_eq!(le_ui8(254, 1), false); + assert_eq!(le_ui8(254, 2), false); + assert_eq!(le_ui8(254, 3), false); + } + #[test] + fn test_366() { + assert_eq!(le_ui8(254, 4), false); + assert_eq!(le_ui8(254, 72), false); + assert_eq!(le_ui8(254, 100), false); + assert_eq!(le_ui8(254, 162), false); + assert_eq!(le_ui8(255, 0), false); + assert_eq!(le_ui8(255, 1), false); + assert_eq!(le_ui8(255, 2), false); + assert_eq!(le_ui8(255, 3), false); + assert_eq!(le_ui8(255, 4), false); + assert_eq!(le_ui8(255, 72), false); + } + #[test] + fn test_367() { + assert_eq!(le_ui8(255, 100), false); + assert_eq!(le_ui8(255, 162), false); + assert_eq!(le_ui8(255, 254), false); + assert_eq!(le_ui8(0, 0), true); + assert_eq!(le_ui8(0, 1), true); + assert_eq!(le_ui8(0, 2), true); + assert_eq!(le_ui8(0, 3), true); + assert_eq!(le_ui8(0, 4), true); + assert_eq!(le_ui8(0, 72), true); + assert_eq!(le_ui8(0, 100), true); + } + #[test] + fn test_368() { + assert_eq!(le_ui8(0, 162), true); + assert_eq!(le_ui8(0, 254), true); + assert_eq!(le_ui8(0, 255), true); + assert_eq!(le_ui8(1, 1), true); + assert_eq!(le_ui8(1, 2), true); + assert_eq!(le_ui8(1, 3), true); + assert_eq!(le_ui8(1, 4), true); + assert_eq!(le_ui8(1, 72), true); + assert_eq!(le_ui8(1, 100), true); + assert_eq!(le_ui8(1, 162), true); + } + #[test] + fn test_369() { + assert_eq!(le_ui8(1, 254), true); + assert_eq!(le_ui8(1, 255), true); + assert_eq!(le_ui8(2, 2), true); + assert_eq!(le_ui8(2, 3), true); + assert_eq!(le_ui8(2, 4), true); + assert_eq!(le_ui8(2, 72), true); + assert_eq!(le_ui8(2, 100), true); + assert_eq!(le_ui8(2, 162), true); + assert_eq!(le_ui8(2, 254), true); + assert_eq!(le_ui8(2, 255), true); + } + #[test] + fn test_370() { + assert_eq!(le_ui8(3, 3), true); + assert_eq!(le_ui8(3, 4), true); + assert_eq!(le_ui8(3, 72), true); + assert_eq!(le_ui8(3, 100), true); + assert_eq!(le_ui8(3, 162), true); + assert_eq!(le_ui8(3, 254), true); + assert_eq!(le_ui8(3, 255), true); + assert_eq!(le_ui8(4, 4), true); + assert_eq!(le_ui8(4, 72), true); + assert_eq!(le_ui8(4, 100), true); + } + #[test] + fn test_371() { + assert_eq!(le_ui8(4, 162), true); + assert_eq!(le_ui8(4, 254), true); + assert_eq!(le_ui8(4, 255), true); + assert_eq!(le_ui8(72, 72), true); + assert_eq!(le_ui8(72, 100), true); + assert_eq!(le_ui8(72, 162), true); + assert_eq!(le_ui8(72, 254), true); + assert_eq!(le_ui8(72, 255), true); + assert_eq!(le_ui8(100, 100), true); + assert_eq!(le_ui8(100, 162), true); + } + #[test] + fn test_372() { + assert_eq!(le_ui8(100, 254), true); + assert_eq!(le_ui8(100, 255), true); + assert_eq!(le_ui8(162, 162), true); + assert_eq!(le_ui8(162, 254), true); + assert_eq!(le_ui8(162, 255), true); + assert_eq!(le_ui8(254, 254), true); + assert_eq!(le_ui8(254, 255), true); + assert_eq!(le_ui8(255, 255), true); + assert_eq!(lt_si16(-32768, -32768), false); + assert_eq!(lt_si16(-32767, -32768), false); + } + #[test] + fn test_373() { + assert_eq!(lt_si16(-32767, -32767), false); + assert_eq!(lt_si16(-32547, -32768), false); + assert_eq!(lt_si16(-32547, -32767), false); + assert_eq!(lt_si16(-32547, -32547), false); + assert_eq!(lt_si16(0, -32768), false); + assert_eq!(lt_si16(0, -32767), false); + assert_eq!(lt_si16(0, -32547), false); + assert_eq!(lt_si16(0, 0), false); + assert_eq!(lt_si16(1, -32768), false); + assert_eq!(lt_si16(1, -32767), false); + } + #[test] + fn test_374() { + assert_eq!(lt_si16(1, -32547), false); + assert_eq!(lt_si16(1, 0), false); + assert_eq!(lt_si16(1, 1), false); + assert_eq!(lt_si16(2, -32768), false); + assert_eq!(lt_si16(2, -32767), false); + assert_eq!(lt_si16(2, -32547), false); + assert_eq!(lt_si16(2, 0), false); + assert_eq!(lt_si16(2, 1), false); + assert_eq!(lt_si16(2, 2), false); + assert_eq!(lt_si16(3, -32768), false); + } + #[test] + fn test_375() { + assert_eq!(lt_si16(3, -32767), false); + assert_eq!(lt_si16(3, -32547), false); + assert_eq!(lt_si16(3, 0), false); + assert_eq!(lt_si16(3, 1), false); + assert_eq!(lt_si16(3, 2), false); + assert_eq!(lt_si16(3, 3), false); + assert_eq!(lt_si16(4, -32768), false); + assert_eq!(lt_si16(4, -32767), false); + assert_eq!(lt_si16(4, -32547), false); + assert_eq!(lt_si16(4, 0), false); + } + #[test] + fn test_376() { + assert_eq!(lt_si16(4, 1), false); + assert_eq!(lt_si16(4, 2), false); + assert_eq!(lt_si16(4, 3), false); + assert_eq!(lt_si16(4, 4), false); + assert_eq!(lt_si16(10486, -32768), false); + assert_eq!(lt_si16(10486, -32767), false); + assert_eq!(lt_si16(10486, -32547), false); + assert_eq!(lt_si16(10486, 0), false); + assert_eq!(lt_si16(10486, 1), false); + assert_eq!(lt_si16(10486, 2), false); + } + #[test] + fn test_377() { + assert_eq!(lt_si16(10486, 3), false); + assert_eq!(lt_si16(10486, 4), false); + assert_eq!(lt_si16(10486, 10486), false); + assert_eq!(lt_si16(16514, -32768), false); + assert_eq!(lt_si16(16514, -32767), false); + assert_eq!(lt_si16(16514, -32547), false); + assert_eq!(lt_si16(16514, 0), false); + assert_eq!(lt_si16(16514, 1), false); + assert_eq!(lt_si16(16514, 2), false); + assert_eq!(lt_si16(16514, 3), false); + } + #[test] + fn test_378() { + assert_eq!(lt_si16(16514, 4), false); + assert_eq!(lt_si16(16514, 10486), false); + assert_eq!(lt_si16(16514, 16514), false); + assert_eq!(lt_si16(32766, -32768), false); + assert_eq!(lt_si16(32766, -32767), false); + assert_eq!(lt_si16(32766, -32547), false); + assert_eq!(lt_si16(32766, 0), false); + assert_eq!(lt_si16(32766, 1), false); + assert_eq!(lt_si16(32766, 2), false); + assert_eq!(lt_si16(32766, 3), false); + } + #[test] + fn test_379() { + assert_eq!(lt_si16(32766, 4), false); + assert_eq!(lt_si16(32766, 10486), false); + assert_eq!(lt_si16(32766, 16514), false); + assert_eq!(lt_si16(32766, 32766), false); + assert_eq!(lt_si16(32767, -32768), false); + assert_eq!(lt_si16(32767, -32767), false); + assert_eq!(lt_si16(32767, -32547), false); + assert_eq!(lt_si16(32767, 0), false); + assert_eq!(lt_si16(32767, 1), false); + assert_eq!(lt_si16(32767, 2), false); + } + #[test] + fn test_380() { + assert_eq!(lt_si16(32767, 3), false); + assert_eq!(lt_si16(32767, 4), false); + assert_eq!(lt_si16(32767, 10486), false); + assert_eq!(lt_si16(32767, 16514), false); + assert_eq!(lt_si16(32767, 32766), false); + assert_eq!(lt_si16(32767, 32767), false); + assert_eq!(lt_si16(-32768, -32767), true); + assert_eq!(lt_si16(-32768, -32547), true); + assert_eq!(lt_si16(-32768, 0), true); + assert_eq!(lt_si16(-32768, 1), true); + } + #[test] + fn test_381() { + assert_eq!(lt_si16(-32768, 2), true); + assert_eq!(lt_si16(-32768, 3), true); + assert_eq!(lt_si16(-32768, 4), true); + assert_eq!(lt_si16(-32768, 10486), true); + assert_eq!(lt_si16(-32768, 16514), true); + assert_eq!(lt_si16(-32768, 32766), true); + assert_eq!(lt_si16(-32768, 32767), true); + assert_eq!(lt_si16(-32767, -32547), true); + assert_eq!(lt_si16(-32767, 0), true); + assert_eq!(lt_si16(-32767, 1), true); + } + #[test] + fn test_382() { + assert_eq!(lt_si16(-32767, 2), true); + assert_eq!(lt_si16(-32767, 3), true); + assert_eq!(lt_si16(-32767, 4), true); + assert_eq!(lt_si16(-32767, 10486), true); + assert_eq!(lt_si16(-32767, 16514), true); + assert_eq!(lt_si16(-32767, 32766), true); + assert_eq!(lt_si16(-32767, 32767), true); + assert_eq!(lt_si16(-32547, 0), true); + assert_eq!(lt_si16(-32547, 1), true); + assert_eq!(lt_si16(-32547, 2), true); + } + #[test] + fn test_383() { + assert_eq!(lt_si16(-32547, 3), true); + assert_eq!(lt_si16(-32547, 4), true); + assert_eq!(lt_si16(-32547, 10486), true); + assert_eq!(lt_si16(-32547, 16514), true); + assert_eq!(lt_si16(-32547, 32766), true); + assert_eq!(lt_si16(-32547, 32767), true); + assert_eq!(lt_si16(0, 1), true); + assert_eq!(lt_si16(0, 2), true); + assert_eq!(lt_si16(0, 3), true); + assert_eq!(lt_si16(0, 4), true); + } + #[test] + fn test_384() { + assert_eq!(lt_si16(0, 10486), true); + assert_eq!(lt_si16(0, 16514), true); + assert_eq!(lt_si16(0, 32766), true); + assert_eq!(lt_si16(0, 32767), true); + assert_eq!(lt_si16(1, 2), true); + assert_eq!(lt_si16(1, 3), true); + assert_eq!(lt_si16(1, 4), true); + assert_eq!(lt_si16(1, 10486), true); + assert_eq!(lt_si16(1, 16514), true); + assert_eq!(lt_si16(1, 32766), true); + } + #[test] + fn test_385() { + assert_eq!(lt_si16(1, 32767), true); + assert_eq!(lt_si16(2, 3), true); + assert_eq!(lt_si16(2, 4), true); + assert_eq!(lt_si16(2, 10486), true); + assert_eq!(lt_si16(2, 16514), true); + assert_eq!(lt_si16(2, 32766), true); + assert_eq!(lt_si16(2, 32767), true); + assert_eq!(lt_si16(3, 4), true); + assert_eq!(lt_si16(3, 10486), true); + assert_eq!(lt_si16(3, 16514), true); + } + #[test] + fn test_386() { + assert_eq!(lt_si16(3, 32766), true); + assert_eq!(lt_si16(3, 32767), true); + assert_eq!(lt_si16(4, 10486), true); + assert_eq!(lt_si16(4, 16514), true); + assert_eq!(lt_si16(4, 32766), true); + assert_eq!(lt_si16(4, 32767), true); + assert_eq!(lt_si16(10486, 16514), true); + assert_eq!(lt_si16(10486, 32766), true); + assert_eq!(lt_si16(10486, 32767), true); + assert_eq!(lt_si16(16514, 32766), true); + } + #[test] + fn test_387() { + assert_eq!(lt_si16(16514, 32767), true); + assert_eq!(lt_si16(32766, 32767), true); + assert_eq!(lt_si32(-2147483648, -2147483648), false); + assert_eq!(lt_si32(-2147483647, -2147483648), false); + assert_eq!(lt_si32(-2147483647, -2147483647), false); + assert_eq!(lt_si32(-1713183800, -2147483648), false); + assert_eq!(lt_si32(-1713183800, -2147483647), false); + assert_eq!(lt_si32(-1713183800, -1713183800), false); + assert_eq!(lt_si32(-1252582164, -2147483648), false); + assert_eq!(lt_si32(-1252582164, -2147483647), false); + } + #[test] + fn test_388() { + assert_eq!(lt_si32(-1252582164, -1713183800), false); + assert_eq!(lt_si32(-1252582164, -1252582164), false); + assert_eq!(lt_si32(-1035405763, -2147483648), false); + assert_eq!(lt_si32(-1035405763, -2147483647), false); + assert_eq!(lt_si32(-1035405763, -1713183800), false); + assert_eq!(lt_si32(-1035405763, -1252582164), false); + assert_eq!(lt_si32(-1035405763, -1035405763), false); + assert_eq!(lt_si32(0, -2147483648), false); + assert_eq!(lt_si32(0, -2147483647), false); + assert_eq!(lt_si32(0, -1713183800), false); + } + #[test] + fn test_389() { + assert_eq!(lt_si32(0, -1252582164), false); + assert_eq!(lt_si32(0, -1035405763), false); + assert_eq!(lt_si32(0, 0), false); + assert_eq!(lt_si32(1, -2147483648), false); + assert_eq!(lt_si32(1, -2147483647), false); + assert_eq!(lt_si32(1, -1713183800), false); + assert_eq!(lt_si32(1, -1252582164), false); + assert_eq!(lt_si32(1, -1035405763), false); + assert_eq!(lt_si32(1, 0), false); + assert_eq!(lt_si32(1, 1), false); + } + #[test] + fn test_390() { + assert_eq!(lt_si32(2, -2147483648), false); + assert_eq!(lt_si32(2, -2147483647), false); + assert_eq!(lt_si32(2, -1713183800), false); + assert_eq!(lt_si32(2, -1252582164), false); + assert_eq!(lt_si32(2, -1035405763), false); + assert_eq!(lt_si32(2, 0), false); + assert_eq!(lt_si32(2, 1), false); + assert_eq!(lt_si32(2, 2), false); + assert_eq!(lt_si32(3, -2147483648), false); + assert_eq!(lt_si32(3, -2147483647), false); + } + #[test] + fn test_391() { + assert_eq!(lt_si32(3, -1713183800), false); + assert_eq!(lt_si32(3, -1252582164), false); + assert_eq!(lt_si32(3, -1035405763), false); + assert_eq!(lt_si32(3, 0), false); + assert_eq!(lt_si32(3, 1), false); + assert_eq!(lt_si32(3, 2), false); + assert_eq!(lt_si32(3, 3), false); + assert_eq!(lt_si32(4, -2147483648), false); + assert_eq!(lt_si32(4, -2147483647), false); + assert_eq!(lt_si32(4, -1713183800), false); + } + #[test] + fn test_392() { + assert_eq!(lt_si32(4, -1252582164), false); + assert_eq!(lt_si32(4, -1035405763), false); + assert_eq!(lt_si32(4, 0), false); + assert_eq!(lt_si32(4, 1), false); + assert_eq!(lt_si32(4, 2), false); + assert_eq!(lt_si32(4, 3), false); + assert_eq!(lt_si32(4, 4), false); + assert_eq!(lt_si32(2147483646, -2147483648), false); + assert_eq!(lt_si32(2147483646, -2147483647), false); + assert_eq!(lt_si32(2147483646, -1713183800), false); + } + #[test] + fn test_393() { + assert_eq!(lt_si32(2147483646, -1252582164), false); + assert_eq!(lt_si32(2147483646, -1035405763), false); + assert_eq!(lt_si32(2147483646, 0), false); + assert_eq!(lt_si32(2147483646, 1), false); + assert_eq!(lt_si32(2147483646, 2), false); + assert_eq!(lt_si32(2147483646, 3), false); + assert_eq!(lt_si32(2147483646, 4), false); + assert_eq!(lt_si32(2147483646, 2147483646), false); + assert_eq!(lt_si32(2147483647, -2147483648), false); + assert_eq!(lt_si32(2147483647, -2147483647), false); + } + #[test] + fn test_394() { + assert_eq!(lt_si32(2147483647, -1713183800), false); + assert_eq!(lt_si32(2147483647, -1252582164), false); + assert_eq!(lt_si32(2147483647, -1035405763), false); + assert_eq!(lt_si32(2147483647, 0), false); + assert_eq!(lt_si32(2147483647, 1), false); + assert_eq!(lt_si32(2147483647, 2), false); + assert_eq!(lt_si32(2147483647, 3), false); + assert_eq!(lt_si32(2147483647, 4), false); + assert_eq!(lt_si32(2147483647, 2147483646), false); + assert_eq!(lt_si32(2147483647, 2147483647), false); + } + #[test] + fn test_395() { + assert_eq!(lt_si32(-2147483648, -2147483647), true); + assert_eq!(lt_si32(-2147483648, -1713183800), true); + assert_eq!(lt_si32(-2147483648, -1252582164), true); + assert_eq!(lt_si32(-2147483648, -1035405763), true); + assert_eq!(lt_si32(-2147483648, 0), true); + assert_eq!(lt_si32(-2147483648, 1), true); + assert_eq!(lt_si32(-2147483648, 2), true); + assert_eq!(lt_si32(-2147483648, 3), true); + assert_eq!(lt_si32(-2147483648, 4), true); + assert_eq!(lt_si32(-2147483648, 2147483646), true); + } + #[test] + fn test_396() { + assert_eq!(lt_si32(-2147483648, 2147483647), true); + assert_eq!(lt_si32(-2147483647, -1713183800), true); + assert_eq!(lt_si32(-2147483647, -1252582164), true); + assert_eq!(lt_si32(-2147483647, -1035405763), true); + assert_eq!(lt_si32(-2147483647, 0), true); + assert_eq!(lt_si32(-2147483647, 1), true); + assert_eq!(lt_si32(-2147483647, 2), true); + assert_eq!(lt_si32(-2147483647, 3), true); + assert_eq!(lt_si32(-2147483647, 4), true); + assert_eq!(lt_si32(-2147483647, 2147483646), true); + } + #[test] + fn test_397() { + assert_eq!(lt_si32(-2147483647, 2147483647), true); + assert_eq!(lt_si32(-1713183800, -1252582164), true); + assert_eq!(lt_si32(-1713183800, -1035405763), true); + assert_eq!(lt_si32(-1713183800, 0), true); + assert_eq!(lt_si32(-1713183800, 1), true); + assert_eq!(lt_si32(-1713183800, 2), true); + assert_eq!(lt_si32(-1713183800, 3), true); + assert_eq!(lt_si32(-1713183800, 4), true); + assert_eq!(lt_si32(-1713183800, 2147483646), true); + assert_eq!(lt_si32(-1713183800, 2147483647), true); + } + #[test] + fn test_398() { + assert_eq!(lt_si32(-1252582164, -1035405763), true); + assert_eq!(lt_si32(-1252582164, 0), true); + assert_eq!(lt_si32(-1252582164, 1), true); + assert_eq!(lt_si32(-1252582164, 2), true); + assert_eq!(lt_si32(-1252582164, 3), true); + assert_eq!(lt_si32(-1252582164, 4), true); + assert_eq!(lt_si32(-1252582164, 2147483646), true); + assert_eq!(lt_si32(-1252582164, 2147483647), true); + assert_eq!(lt_si32(-1035405763, 0), true); + assert_eq!(lt_si32(-1035405763, 1), true); + } + #[test] + fn test_399() { + assert_eq!(lt_si32(-1035405763, 2), true); + assert_eq!(lt_si32(-1035405763, 3), true); + assert_eq!(lt_si32(-1035405763, 4), true); + assert_eq!(lt_si32(-1035405763, 2147483646), true); + assert_eq!(lt_si32(-1035405763, 2147483647), true); + assert_eq!(lt_si32(0, 1), true); + assert_eq!(lt_si32(0, 2), true); + assert_eq!(lt_si32(0, 3), true); + assert_eq!(lt_si32(0, 4), true); + assert_eq!(lt_si32(0, 2147483646), true); + } + #[test] + fn test_400() { + assert_eq!(lt_si32(0, 2147483647), true); + assert_eq!(lt_si32(1, 2), true); + assert_eq!(lt_si32(1, 3), true); + assert_eq!(lt_si32(1, 4), true); + assert_eq!(lt_si32(1, 2147483646), true); + assert_eq!(lt_si32(1, 2147483647), true); + assert_eq!(lt_si32(2, 3), true); + assert_eq!(lt_si32(2, 4), true); + assert_eq!(lt_si32(2, 2147483646), true); + assert_eq!(lt_si32(2, 2147483647), true); + } + #[test] + fn test_401() { + assert_eq!(lt_si32(3, 4), true); + assert_eq!(lt_si32(3, 2147483646), true); + assert_eq!(lt_si32(3, 2147483647), true); + assert_eq!(lt_si32(4, 2147483646), true); + assert_eq!(lt_si32(4, 2147483647), true); + assert_eq!(lt_si32(2147483646, 2147483647), true); + assert_eq!(lt_si64(-9223372036854775808, -9223372036854775808), false); + assert_eq!(lt_si64(-9223372036854775807, -9223372036854775808), false); + assert_eq!(lt_si64(-9223372036854775807, -9223372036854775807), false); + assert_eq!(lt_si64(-1741927215160008704, -9223372036854775808), false); + } + #[test] + fn test_402() { + assert_eq!(lt_si64(-1741927215160008704, -9223372036854775807), false); + assert_eq!(lt_si64(-1741927215160008704, -1741927215160008704), false); + assert_eq!(lt_si64(-1328271339354574848, -9223372036854775808), false); + assert_eq!(lt_si64(-1328271339354574848, -9223372036854775807), false); + assert_eq!(lt_si64(-1328271339354574848, -1741927215160008704), false); + assert_eq!(lt_si64(-1328271339354574848, -1328271339354574848), false); + assert_eq!(lt_si64(0, -9223372036854775808), false); + assert_eq!(lt_si64(0, -9223372036854775807), false); + assert_eq!(lt_si64(0, -1741927215160008704), false); + assert_eq!(lt_si64(0, -1328271339354574848), false); + } + #[test] + fn test_403() { + assert_eq!(lt_si64(0, 0), false); + assert_eq!(lt_si64(1, -9223372036854775808), false); + assert_eq!(lt_si64(1, -9223372036854775807), false); + assert_eq!(lt_si64(1, -1741927215160008704), false); + assert_eq!(lt_si64(1, -1328271339354574848), false); + assert_eq!(lt_si64(1, 0), false); + assert_eq!(lt_si64(1, 1), false); + assert_eq!(lt_si64(2, -9223372036854775808), false); + assert_eq!(lt_si64(2, -9223372036854775807), false); + assert_eq!(lt_si64(2, -1741927215160008704), false); + } + #[test] + fn test_404() { + assert_eq!(lt_si64(2, -1328271339354574848), false); + assert_eq!(lt_si64(2, 0), false); + assert_eq!(lt_si64(2, 1), false); + assert_eq!(lt_si64(2, 2), false); + assert_eq!(lt_si64(3, -9223372036854775808), false); + assert_eq!(lt_si64(3, -9223372036854775807), false); + assert_eq!(lt_si64(3, -1741927215160008704), false); + assert_eq!(lt_si64(3, -1328271339354574848), false); + assert_eq!(lt_si64(3, 0), false); + assert_eq!(lt_si64(3, 1), false); + } + #[test] + fn test_405() { + assert_eq!(lt_si64(3, 2), false); + assert_eq!(lt_si64(3, 3), false); + assert_eq!(lt_si64(4, -9223372036854775808), false); + assert_eq!(lt_si64(4, -9223372036854775807), false); + assert_eq!(lt_si64(4, -1741927215160008704), false); + assert_eq!(lt_si64(4, -1328271339354574848), false); + assert_eq!(lt_si64(4, 0), false); + assert_eq!(lt_si64(4, 1), false); + assert_eq!(lt_si64(4, 2), false); + assert_eq!(lt_si64(4, 3), false); + } + #[test] + fn test_406() { + assert_eq!(lt_si64(4, 4), false); + assert_eq!(lt_si64(5577148965131116544, -9223372036854775808), false); + assert_eq!(lt_si64(5577148965131116544, -9223372036854775807), false); + assert_eq!(lt_si64(5577148965131116544, -1741927215160008704), false); + assert_eq!(lt_si64(5577148965131116544, -1328271339354574848), false); + assert_eq!(lt_si64(5577148965131116544, 0), false); + assert_eq!(lt_si64(5577148965131116544, 1), false); + assert_eq!(lt_si64(5577148965131116544, 2), false); + assert_eq!(lt_si64(5577148965131116544, 3), false); + assert_eq!(lt_si64(5577148965131116544, 4), false); + } + #[test] + fn test_407() { + assert_eq!(lt_si64(5577148965131116544, 5577148965131116544), false); + assert_eq!(lt_si64(9223372036854775806, -9223372036854775808), false); + assert_eq!(lt_si64(9223372036854775806, -9223372036854775807), false); + assert_eq!(lt_si64(9223372036854775806, -1741927215160008704), false); + assert_eq!(lt_si64(9223372036854775806, -1328271339354574848), false); + assert_eq!(lt_si64(9223372036854775806, 0), false); + assert_eq!(lt_si64(9223372036854775806, 1), false); + assert_eq!(lt_si64(9223372036854775806, 2), false); + assert_eq!(lt_si64(9223372036854775806, 3), false); + assert_eq!(lt_si64(9223372036854775806, 4), false); + } + #[test] + fn test_408() { + assert_eq!(lt_si64(9223372036854775806, 5577148965131116544), false); + assert_eq!(lt_si64(9223372036854775806, 9223372036854775806), false); + assert_eq!(lt_si64(9223372036854775807, -9223372036854775808), false); + assert_eq!(lt_si64(9223372036854775807, -9223372036854775807), false); + assert_eq!(lt_si64(9223372036854775807, -1741927215160008704), false); + assert_eq!(lt_si64(9223372036854775807, -1328271339354574848), false); + assert_eq!(lt_si64(9223372036854775807, 0), false); + assert_eq!(lt_si64(9223372036854775807, 1), false); + assert_eq!(lt_si64(9223372036854775807, 2), false); + assert_eq!(lt_si64(9223372036854775807, 3), false); + } + #[test] + fn test_409() { + assert_eq!(lt_si64(9223372036854775807, 4), false); + assert_eq!(lt_si64(9223372036854775807, 5577148965131116544), false); + assert_eq!(lt_si64(9223372036854775807, 9223372036854775806), false); + assert_eq!(lt_si64(9223372036854775807, 9223372036854775807), false); + assert_eq!(lt_si64(-9223372036854775808, -9223372036854775807), true); + assert_eq!(lt_si64(-9223372036854775808, -1741927215160008704), true); + assert_eq!(lt_si64(-9223372036854775808, -1328271339354574848), true); + assert_eq!(lt_si64(-9223372036854775808, 0), true); + assert_eq!(lt_si64(-9223372036854775808, 1), true); + assert_eq!(lt_si64(-9223372036854775808, 2), true); + } + #[test] + fn test_410() { + assert_eq!(lt_si64(-9223372036854775808, 3), true); + assert_eq!(lt_si64(-9223372036854775808, 4), true); + assert_eq!(lt_si64(-9223372036854775808, 5577148965131116544), true); + assert_eq!(lt_si64(-9223372036854775808, 9223372036854775806), true); + assert_eq!(lt_si64(-9223372036854775808, 9223372036854775807), true); + assert_eq!(lt_si64(-9223372036854775807, -1741927215160008704), true); + assert_eq!(lt_si64(-9223372036854775807, -1328271339354574848), true); + assert_eq!(lt_si64(-9223372036854775807, 0), true); + assert_eq!(lt_si64(-9223372036854775807, 1), true); + assert_eq!(lt_si64(-9223372036854775807, 2), true); + } + #[test] + fn test_411() { + assert_eq!(lt_si64(-9223372036854775807, 3), true); + assert_eq!(lt_si64(-9223372036854775807, 4), true); + assert_eq!(lt_si64(-9223372036854775807, 5577148965131116544), true); + assert_eq!(lt_si64(-9223372036854775807, 9223372036854775806), true); + assert_eq!(lt_si64(-9223372036854775807, 9223372036854775807), true); + assert_eq!(lt_si64(-1741927215160008704, -1328271339354574848), true); + assert_eq!(lt_si64(-1741927215160008704, 0), true); + assert_eq!(lt_si64(-1741927215160008704, 1), true); + assert_eq!(lt_si64(-1741927215160008704, 2), true); + assert_eq!(lt_si64(-1741927215160008704, 3), true); + } + #[test] + fn test_412() { + assert_eq!(lt_si64(-1741927215160008704, 4), true); + assert_eq!(lt_si64(-1741927215160008704, 5577148965131116544), true); + assert_eq!(lt_si64(-1741927215160008704, 9223372036854775806), true); + assert_eq!(lt_si64(-1741927215160008704, 9223372036854775807), true); + assert_eq!(lt_si64(-1328271339354574848, 0), true); + assert_eq!(lt_si64(-1328271339354574848, 1), true); + assert_eq!(lt_si64(-1328271339354574848, 2), true); + assert_eq!(lt_si64(-1328271339354574848, 3), true); + assert_eq!(lt_si64(-1328271339354574848, 4), true); + assert_eq!(lt_si64(-1328271339354574848, 5577148965131116544), true); + } + #[test] + fn test_413() { + assert_eq!(lt_si64(-1328271339354574848, 9223372036854775806), true); + assert_eq!(lt_si64(-1328271339354574848, 9223372036854775807), true); + assert_eq!(lt_si64(0, 1), true); + assert_eq!(lt_si64(0, 2), true); + assert_eq!(lt_si64(0, 3), true); + assert_eq!(lt_si64(0, 4), true); + assert_eq!(lt_si64(0, 5577148965131116544), true); + assert_eq!(lt_si64(0, 9223372036854775806), true); + assert_eq!(lt_si64(0, 9223372036854775807), true); + assert_eq!(lt_si64(1, 2), true); + } + #[test] + fn test_414() { + assert_eq!(lt_si64(1, 3), true); + assert_eq!(lt_si64(1, 4), true); + assert_eq!(lt_si64(1, 5577148965131116544), true); + assert_eq!(lt_si64(1, 9223372036854775806), true); + assert_eq!(lt_si64(1, 9223372036854775807), true); + assert_eq!(lt_si64(2, 3), true); + assert_eq!(lt_si64(2, 4), true); + assert_eq!(lt_si64(2, 5577148965131116544), true); + assert_eq!(lt_si64(2, 9223372036854775806), true); + assert_eq!(lt_si64(2, 9223372036854775807), true); + } + #[test] + fn test_415() { + assert_eq!(lt_si64(3, 4), true); + assert_eq!(lt_si64(3, 5577148965131116544), true); + assert_eq!(lt_si64(3, 9223372036854775806), true); + assert_eq!(lt_si64(3, 9223372036854775807), true); + assert_eq!(lt_si64(4, 5577148965131116544), true); + assert_eq!(lt_si64(4, 9223372036854775806), true); + assert_eq!(lt_si64(4, 9223372036854775807), true); + assert_eq!(lt_si64(5577148965131116544, 9223372036854775806), true); + assert_eq!(lt_si64(5577148965131116544, 9223372036854775807), true); + assert_eq!(lt_si64(9223372036854775806, 9223372036854775807), true); + } + #[test] + fn test_416() { + assert_eq!(lt_si8(-128, -128), false); + assert_eq!(lt_si8(-127, -128), false); + assert_eq!(lt_si8(-127, -127), false); + assert_eq!(lt_si8(0, -128), false); + assert_eq!(lt_si8(0, -127), false); + assert_eq!(lt_si8(0, 0), false); + assert_eq!(lt_si8(1, -128), false); + assert_eq!(lt_si8(1, -127), false); + assert_eq!(lt_si8(1, 0), false); + assert_eq!(lt_si8(1, 1), false); + } + #[test] + fn test_417() { + assert_eq!(lt_si8(2, -128), false); + assert_eq!(lt_si8(2, -127), false); + assert_eq!(lt_si8(2, 0), false); + assert_eq!(lt_si8(2, 1), false); + assert_eq!(lt_si8(2, 2), false); + assert_eq!(lt_si8(3, -128), false); + assert_eq!(lt_si8(3, -127), false); + assert_eq!(lt_si8(3, 0), false); + assert_eq!(lt_si8(3, 1), false); + assert_eq!(lt_si8(3, 2), false); + } + #[test] + fn test_418() { + assert_eq!(lt_si8(3, 3), false); + assert_eq!(lt_si8(4, -128), false); + assert_eq!(lt_si8(4, -127), false); + assert_eq!(lt_si8(4, 0), false); + assert_eq!(lt_si8(4, 1), false); + assert_eq!(lt_si8(4, 2), false); + assert_eq!(lt_si8(4, 3), false); + assert_eq!(lt_si8(4, 4), false); + assert_eq!(lt_si8(16, -128), false); + assert_eq!(lt_si8(16, -127), false); + } + #[test] + fn test_419() { + assert_eq!(lt_si8(16, 0), false); + assert_eq!(lt_si8(16, 1), false); + assert_eq!(lt_si8(16, 2), false); + assert_eq!(lt_si8(16, 3), false); + assert_eq!(lt_si8(16, 4), false); + assert_eq!(lt_si8(16, 16), false); + assert_eq!(lt_si8(126, -128), false); + assert_eq!(lt_si8(126, -127), false); + assert_eq!(lt_si8(126, 0), false); + assert_eq!(lt_si8(126, 1), false); + } + #[test] + fn test_420() { + assert_eq!(lt_si8(126, 2), false); + assert_eq!(lt_si8(126, 3), false); + assert_eq!(lt_si8(126, 4), false); + assert_eq!(lt_si8(126, 16), false); + assert_eq!(lt_si8(126, 126), false); + assert_eq!(lt_si8(127, -128), false); + assert_eq!(lt_si8(127, -127), false); + assert_eq!(lt_si8(127, 0), false); + assert_eq!(lt_si8(127, 1), false); + assert_eq!(lt_si8(127, 2), false); + } + #[test] + fn test_421() { + assert_eq!(lt_si8(127, 3), false); + assert_eq!(lt_si8(127, 4), false); + assert_eq!(lt_si8(127, 16), false); + assert_eq!(lt_si8(127, 126), false); + assert_eq!(lt_si8(127, 127), false); + assert_eq!(lt_si8(-128, -127), true); + assert_eq!(lt_si8(-128, 0), true); + assert_eq!(lt_si8(-128, 1), true); + assert_eq!(lt_si8(-128, 2), true); + assert_eq!(lt_si8(-128, 3), true); + } + #[test] + fn test_422() { + assert_eq!(lt_si8(-128, 4), true); + assert_eq!(lt_si8(-128, 16), true); + assert_eq!(lt_si8(-128, 126), true); + assert_eq!(lt_si8(-128, 127), true); + assert_eq!(lt_si8(-127, 0), true); + assert_eq!(lt_si8(-127, 1), true); + assert_eq!(lt_si8(-127, 2), true); + assert_eq!(lt_si8(-127, 3), true); + assert_eq!(lt_si8(-127, 4), true); + assert_eq!(lt_si8(-127, 16), true); + } + #[test] + fn test_423() { + assert_eq!(lt_si8(-127, 126), true); + assert_eq!(lt_si8(-127, 127), true); + assert_eq!(lt_si8(0, 1), true); + assert_eq!(lt_si8(0, 2), true); + assert_eq!(lt_si8(0, 3), true); + assert_eq!(lt_si8(0, 4), true); + assert_eq!(lt_si8(0, 16), true); + assert_eq!(lt_si8(0, 126), true); + assert_eq!(lt_si8(0, 127), true); + assert_eq!(lt_si8(1, 2), true); + } + #[test] + fn test_424() { + assert_eq!(lt_si8(1, 3), true); + assert_eq!(lt_si8(1, 4), true); + assert_eq!(lt_si8(1, 16), true); + assert_eq!(lt_si8(1, 126), true); + assert_eq!(lt_si8(1, 127), true); + assert_eq!(lt_si8(2, 3), true); + assert_eq!(lt_si8(2, 4), true); + assert_eq!(lt_si8(2, 16), true); + assert_eq!(lt_si8(2, 126), true); + assert_eq!(lt_si8(2, 127), true); + } + #[test] + fn test_425() { + assert_eq!(lt_si8(3, 4), true); + assert_eq!(lt_si8(3, 16), true); + assert_eq!(lt_si8(3, 126), true); + assert_eq!(lt_si8(3, 127), true); + assert_eq!(lt_si8(4, 16), true); + assert_eq!(lt_si8(4, 126), true); + assert_eq!(lt_si8(4, 127), true); + assert_eq!(lt_si8(16, 126), true); + assert_eq!(lt_si8(16, 127), true); + assert_eq!(lt_si8(126, 127), true); + } + #[test] + fn test_426() { + assert_eq!(lt_ui16(0, 0), false); + assert_eq!(lt_ui16(1, 0), false); + assert_eq!(lt_ui16(1, 1), false); + assert_eq!(lt_ui16(2, 0), false); + assert_eq!(lt_ui16(2, 1), false); + assert_eq!(lt_ui16(2, 2), false); + assert_eq!(lt_ui16(3, 0), false); + assert_eq!(lt_ui16(3, 1), false); + assert_eq!(lt_ui16(3, 2), false); + assert_eq!(lt_ui16(3, 3), false); + } + #[test] + fn test_427() { + assert_eq!(lt_ui16(4, 0), false); + assert_eq!(lt_ui16(4, 1), false); + assert_eq!(lt_ui16(4, 2), false); + assert_eq!(lt_ui16(4, 3), false); + assert_eq!(lt_ui16(4, 4), false); + assert_eq!(lt_ui16(1717, 0), false); + assert_eq!(lt_ui16(1717, 1), false); + assert_eq!(lt_ui16(1717, 2), false); + assert_eq!(lt_ui16(1717, 3), false); + assert_eq!(lt_ui16(1717, 4), false); + } + #[test] + fn test_428() { + assert_eq!(lt_ui16(1717, 1717), false); + assert_eq!(lt_ui16(17988, 0), false); + assert_eq!(lt_ui16(17988, 1), false); + assert_eq!(lt_ui16(17988, 2), false); + assert_eq!(lt_ui16(17988, 3), false); + assert_eq!(lt_ui16(17988, 4), false); + assert_eq!(lt_ui16(17988, 1717), false); + assert_eq!(lt_ui16(17988, 17988), false); + assert_eq!(lt_ui16(65096, 0), false); + assert_eq!(lt_ui16(65096, 1), false); + } + #[test] + fn test_429() { + assert_eq!(lt_ui16(65096, 2), false); + assert_eq!(lt_ui16(65096, 3), false); + assert_eq!(lt_ui16(65096, 4), false); + assert_eq!(lt_ui16(65096, 1717), false); + assert_eq!(lt_ui16(65096, 17988), false); + assert_eq!(lt_ui16(65096, 65096), false); + assert_eq!(lt_ui16(65534, 0), false); + assert_eq!(lt_ui16(65534, 1), false); + assert_eq!(lt_ui16(65534, 2), false); + assert_eq!(lt_ui16(65534, 3), false); + } + #[test] + fn test_430() { + assert_eq!(lt_ui16(65534, 4), false); + assert_eq!(lt_ui16(65534, 1717), false); + assert_eq!(lt_ui16(65534, 17988), false); + assert_eq!(lt_ui16(65534, 65096), false); + assert_eq!(lt_ui16(65534, 65534), false); + assert_eq!(lt_ui16(65535, 0), false); + assert_eq!(lt_ui16(65535, 1), false); + assert_eq!(lt_ui16(65535, 2), false); + assert_eq!(lt_ui16(65535, 3), false); + assert_eq!(lt_ui16(65535, 4), false); + } + #[test] + fn test_431() { + assert_eq!(lt_ui16(65535, 1717), false); + assert_eq!(lt_ui16(65535, 17988), false); + assert_eq!(lt_ui16(65535, 65096), false); + assert_eq!(lt_ui16(65535, 65534), false); + assert_eq!(lt_ui16(65535, 65535), false); + assert_eq!(lt_ui16(0, 1), true); + assert_eq!(lt_ui16(0, 2), true); + assert_eq!(lt_ui16(0, 3), true); + assert_eq!(lt_ui16(0, 4), true); + assert_eq!(lt_ui16(0, 1717), true); + } + #[test] + fn test_432() { + assert_eq!(lt_ui16(0, 17988), true); + assert_eq!(lt_ui16(0, 65096), true); + assert_eq!(lt_ui16(0, 65534), true); + assert_eq!(lt_ui16(0, 65535), true); + assert_eq!(lt_ui16(1, 2), true); + assert_eq!(lt_ui16(1, 3), true); + assert_eq!(lt_ui16(1, 4), true); + assert_eq!(lt_ui16(1, 1717), true); + assert_eq!(lt_ui16(1, 17988), true); + assert_eq!(lt_ui16(1, 65096), true); + } + #[test] + fn test_433() { + assert_eq!(lt_ui16(1, 65534), true); + assert_eq!(lt_ui16(1, 65535), true); + assert_eq!(lt_ui16(2, 3), true); + assert_eq!(lt_ui16(2, 4), true); + assert_eq!(lt_ui16(2, 1717), true); + assert_eq!(lt_ui16(2, 17988), true); + assert_eq!(lt_ui16(2, 65096), true); + assert_eq!(lt_ui16(2, 65534), true); + assert_eq!(lt_ui16(2, 65535), true); + assert_eq!(lt_ui16(3, 4), true); + } + #[test] + fn test_434() { + assert_eq!(lt_ui16(3, 1717), true); + assert_eq!(lt_ui16(3, 17988), true); + assert_eq!(lt_ui16(3, 65096), true); + assert_eq!(lt_ui16(3, 65534), true); + assert_eq!(lt_ui16(3, 65535), true); + assert_eq!(lt_ui16(4, 1717), true); + assert_eq!(lt_ui16(4, 17988), true); + assert_eq!(lt_ui16(4, 65096), true); + assert_eq!(lt_ui16(4, 65534), true); + assert_eq!(lt_ui16(4, 65535), true); + } + #[test] + fn test_435() { + assert_eq!(lt_ui16(1717, 17988), true); + assert_eq!(lt_ui16(1717, 65096), true); + assert_eq!(lt_ui16(1717, 65534), true); + assert_eq!(lt_ui16(1717, 65535), true); + assert_eq!(lt_ui16(17988, 65096), true); + assert_eq!(lt_ui16(17988, 65534), true); + assert_eq!(lt_ui16(17988, 65535), true); + assert_eq!(lt_ui16(65096, 65534), true); + assert_eq!(lt_ui16(65096, 65535), true); + assert_eq!(lt_ui16(65534, 65535), true); + } + #[test] + fn test_436() { + assert_eq!(lt_ui32(0, 0), false); + assert_eq!(lt_ui32(1, 0), false); + assert_eq!(lt_ui32(1, 1), false); + assert_eq!(lt_ui32(2, 0), false); + assert_eq!(lt_ui32(2, 1), false); + assert_eq!(lt_ui32(2, 2), false); + assert_eq!(lt_ui32(3, 0), false); + assert_eq!(lt_ui32(3, 1), false); + assert_eq!(lt_ui32(3, 2), false); + assert_eq!(lt_ui32(3, 3), false); + } + #[test] + fn test_437() { + assert_eq!(lt_ui32(4, 0), false); + assert_eq!(lt_ui32(4, 1), false); + assert_eq!(lt_ui32(4, 2), false); + assert_eq!(lt_ui32(4, 3), false); + assert_eq!(lt_ui32(4, 4), false); + assert_eq!(lt_ui32(2119154652, 0), false); + assert_eq!(lt_ui32(2119154652, 1), false); + assert_eq!(lt_ui32(2119154652, 2), false); + assert_eq!(lt_ui32(2119154652, 3), false); + assert_eq!(lt_ui32(2119154652, 4), false); + } + #[test] + fn test_438() { + assert_eq!(lt_ui32(2119154652, 2119154652), false); + assert_eq!(lt_ui32(3002788344, 0), false); + assert_eq!(lt_ui32(3002788344, 1), false); + assert_eq!(lt_ui32(3002788344, 2), false); + assert_eq!(lt_ui32(3002788344, 3), false); + assert_eq!(lt_ui32(3002788344, 4), false); + assert_eq!(lt_ui32(3002788344, 2119154652), false); + assert_eq!(lt_ui32(3002788344, 3002788344), false); + assert_eq!(lt_ui32(3482297128, 0), false); + assert_eq!(lt_ui32(3482297128, 1), false); + } + #[test] + fn test_439() { + assert_eq!(lt_ui32(3482297128, 2), false); + assert_eq!(lt_ui32(3482297128, 3), false); + assert_eq!(lt_ui32(3482297128, 4), false); + assert_eq!(lt_ui32(3482297128, 2119154652), false); + assert_eq!(lt_ui32(3482297128, 3002788344), false); + assert_eq!(lt_ui32(3482297128, 3482297128), false); + assert_eq!(lt_ui32(4294967294, 0), false); + assert_eq!(lt_ui32(4294967294, 1), false); + assert_eq!(lt_ui32(4294967294, 2), false); + assert_eq!(lt_ui32(4294967294, 3), false); + } + #[test] + fn test_440() { + assert_eq!(lt_ui32(4294967294, 4), false); + assert_eq!(lt_ui32(4294967294, 2119154652), false); + assert_eq!(lt_ui32(4294967294, 3002788344), false); + assert_eq!(lt_ui32(4294967294, 3482297128), false); + assert_eq!(lt_ui32(4294967294, 4294967294), false); + assert_eq!(lt_ui32(4294967295, 0), false); + assert_eq!(lt_ui32(4294967295, 1), false); + assert_eq!(lt_ui32(4294967295, 2), false); + assert_eq!(lt_ui32(4294967295, 3), false); + assert_eq!(lt_ui32(4294967295, 4), false); + } + #[test] + fn test_441() { + assert_eq!(lt_ui32(4294967295, 2119154652), false); + assert_eq!(lt_ui32(4294967295, 3002788344), false); + assert_eq!(lt_ui32(4294967295, 3482297128), false); + assert_eq!(lt_ui32(4294967295, 4294967294), false); + assert_eq!(lt_ui32(4294967295, 4294967295), false); + assert_eq!(lt_ui32(0, 1), true); + assert_eq!(lt_ui32(0, 2), true); + assert_eq!(lt_ui32(0, 3), true); + assert_eq!(lt_ui32(0, 4), true); + assert_eq!(lt_ui32(0, 2119154652), true); + } + #[test] + fn test_442() { + assert_eq!(lt_ui32(0, 3002788344), true); + assert_eq!(lt_ui32(0, 3482297128), true); + assert_eq!(lt_ui32(0, 4294967294), true); + assert_eq!(lt_ui32(0, 4294967295), true); + assert_eq!(lt_ui32(1, 2), true); + assert_eq!(lt_ui32(1, 3), true); + assert_eq!(lt_ui32(1, 4), true); + assert_eq!(lt_ui32(1, 2119154652), true); + assert_eq!(lt_ui32(1, 3002788344), true); + assert_eq!(lt_ui32(1, 3482297128), true); + } + #[test] + fn test_443() { + assert_eq!(lt_ui32(1, 4294967294), true); + assert_eq!(lt_ui32(1, 4294967295), true); + assert_eq!(lt_ui32(2, 3), true); + assert_eq!(lt_ui32(2, 4), true); + assert_eq!(lt_ui32(2, 2119154652), true); + assert_eq!(lt_ui32(2, 3002788344), true); + assert_eq!(lt_ui32(2, 3482297128), true); + assert_eq!(lt_ui32(2, 4294967294), true); + assert_eq!(lt_ui32(2, 4294967295), true); + assert_eq!(lt_ui32(3, 4), true); + } + #[test] + fn test_444() { + assert_eq!(lt_ui32(3, 2119154652), true); + assert_eq!(lt_ui32(3, 3002788344), true); + assert_eq!(lt_ui32(3, 3482297128), true); + assert_eq!(lt_ui32(3, 4294967294), true); + assert_eq!(lt_ui32(3, 4294967295), true); + assert_eq!(lt_ui32(4, 2119154652), true); + assert_eq!(lt_ui32(4, 3002788344), true); + assert_eq!(lt_ui32(4, 3482297128), true); + assert_eq!(lt_ui32(4, 4294967294), true); + assert_eq!(lt_ui32(4, 4294967295), true); + } + #[test] + fn test_445() { + assert_eq!(lt_ui32(2119154652, 3002788344), true); + assert_eq!(lt_ui32(2119154652, 3482297128), true); + assert_eq!(lt_ui32(2119154652, 4294967294), true); + assert_eq!(lt_ui32(2119154652, 4294967295), true); + assert_eq!(lt_ui32(3002788344, 3482297128), true); + assert_eq!(lt_ui32(3002788344, 4294967294), true); + assert_eq!(lt_ui32(3002788344, 4294967295), true); + assert_eq!(lt_ui32(3482297128, 4294967294), true); + assert_eq!(lt_ui32(3482297128, 4294967295), true); + assert_eq!(lt_ui32(4294967294, 4294967295), true); + } + #[test] + fn test_446() { + assert_eq!(lt_ui64(0, 0), false); + assert_eq!(lt_ui64(1, 0), false); + assert_eq!(lt_ui64(1, 1), false); + assert_eq!(lt_ui64(2, 0), false); + assert_eq!(lt_ui64(2, 1), false); + assert_eq!(lt_ui64(2, 2), false); + assert_eq!(lt_ui64(3, 0), false); + assert_eq!(lt_ui64(3, 1), false); + assert_eq!(lt_ui64(3, 2), false); + assert_eq!(lt_ui64(3, 3), false); + } + #[test] + fn test_447() { + assert_eq!(lt_ui64(4, 0), false); + assert_eq!(lt_ui64(4, 1), false); + assert_eq!(lt_ui64(4, 2), false); + assert_eq!(lt_ui64(4, 3), false); + assert_eq!(lt_ui64(4, 4), false); + assert_eq!(lt_ui64(191084152064409600, 0), false); + assert_eq!(lt_ui64(191084152064409600, 1), false); + assert_eq!(lt_ui64(191084152064409600, 2), false); + assert_eq!(lt_ui64(191084152064409600, 3), false); + assert_eq!(lt_ui64(191084152064409600, 4), false); + } + #[test] + fn test_448() { + assert_eq!(lt_ui64(191084152064409600, 191084152064409600), false); + assert_eq!(lt_ui64(11015955194427482112, 0), false); + assert_eq!(lt_ui64(11015955194427482112, 1), false); + assert_eq!(lt_ui64(11015955194427482112, 2), false); + assert_eq!(lt_ui64(11015955194427482112, 3), false); + assert_eq!(lt_ui64(11015955194427482112, 4), false); + assert_eq!(lt_ui64(11015955194427482112, 191084152064409600), false); + assert_eq!(lt_ui64(11015955194427482112, 11015955194427482112), false); + assert_eq!(lt_ui64(16990600415051759616, 0), false); + assert_eq!(lt_ui64(16990600415051759616, 1), false); + } + #[test] + fn test_449() { + assert_eq!(lt_ui64(16990600415051759616, 2), false); + assert_eq!(lt_ui64(16990600415051759616, 3), false); + assert_eq!(lt_ui64(16990600415051759616, 4), false); + assert_eq!(lt_ui64(16990600415051759616, 191084152064409600), false); + assert_eq!(lt_ui64(16990600415051759616, 11015955194427482112), false); + assert_eq!(lt_ui64(16990600415051759616, 16990600415051759616), false); + assert_eq!(lt_ui64(18446744073709551614, 0), false); + assert_eq!(lt_ui64(18446744073709551614, 1), false); + assert_eq!(lt_ui64(18446744073709551614, 2), false); + assert_eq!(lt_ui64(18446744073709551614, 3), false); + } + #[test] + fn test_450() { + assert_eq!(lt_ui64(18446744073709551614, 4), false); + assert_eq!(lt_ui64(18446744073709551614, 191084152064409600), false); + assert_eq!(lt_ui64(18446744073709551614, 11015955194427482112), false); + assert_eq!(lt_ui64(18446744073709551614, 16990600415051759616), false); + assert_eq!(lt_ui64(18446744073709551614, 18446744073709551614), false); + assert_eq!(lt_ui64(18446744073709551615, 0), false); + assert_eq!(lt_ui64(18446744073709551615, 1), false); + assert_eq!(lt_ui64(18446744073709551615, 2), false); + assert_eq!(lt_ui64(18446744073709551615, 3), false); + assert_eq!(lt_ui64(18446744073709551615, 4), false); + } + #[test] + fn test_451() { + assert_eq!(lt_ui64(18446744073709551615, 191084152064409600), false); + assert_eq!(lt_ui64(18446744073709551615, 11015955194427482112), false); + assert_eq!(lt_ui64(18446744073709551615, 16990600415051759616), false); + assert_eq!(lt_ui64(18446744073709551615, 18446744073709551614), false); + assert_eq!(lt_ui64(18446744073709551615, 18446744073709551615), false); + assert_eq!(lt_ui64(0, 1), true); + assert_eq!(lt_ui64(0, 2), true); + assert_eq!(lt_ui64(0, 3), true); + assert_eq!(lt_ui64(0, 4), true); + assert_eq!(lt_ui64(0, 191084152064409600), true); + } + #[test] + fn test_452() { + assert_eq!(lt_ui64(0, 11015955194427482112), true); + assert_eq!(lt_ui64(0, 16990600415051759616), true); + assert_eq!(lt_ui64(0, 18446744073709551614), true); + assert_eq!(lt_ui64(0, 18446744073709551615), true); + assert_eq!(lt_ui64(1, 2), true); + assert_eq!(lt_ui64(1, 3), true); + assert_eq!(lt_ui64(1, 4), true); + assert_eq!(lt_ui64(1, 191084152064409600), true); + assert_eq!(lt_ui64(1, 11015955194427482112), true); + assert_eq!(lt_ui64(1, 16990600415051759616), true); + } + #[test] + fn test_453() { + assert_eq!(lt_ui64(1, 18446744073709551614), true); + assert_eq!(lt_ui64(1, 18446744073709551615), true); + assert_eq!(lt_ui64(2, 3), true); + assert_eq!(lt_ui64(2, 4), true); + assert_eq!(lt_ui64(2, 191084152064409600), true); + assert_eq!(lt_ui64(2, 11015955194427482112), true); + assert_eq!(lt_ui64(2, 16990600415051759616), true); + assert_eq!(lt_ui64(2, 18446744073709551614), true); + assert_eq!(lt_ui64(2, 18446744073709551615), true); + assert_eq!(lt_ui64(3, 4), true); + } + #[test] + fn test_454() { + assert_eq!(lt_ui64(3, 191084152064409600), true); + assert_eq!(lt_ui64(3, 11015955194427482112), true); + assert_eq!(lt_ui64(3, 16990600415051759616), true); + assert_eq!(lt_ui64(3, 18446744073709551614), true); + assert_eq!(lt_ui64(3, 18446744073709551615), true); + assert_eq!(lt_ui64(4, 191084152064409600), true); + assert_eq!(lt_ui64(4, 11015955194427482112), true); + assert_eq!(lt_ui64(4, 16990600415051759616), true); + assert_eq!(lt_ui64(4, 18446744073709551614), true); + assert_eq!(lt_ui64(4, 18446744073709551615), true); + } + #[test] + fn test_455() { + assert_eq!(lt_ui64(191084152064409600, 11015955194427482112), true); + assert_eq!(lt_ui64(191084152064409600, 16990600415051759616), true); + assert_eq!(lt_ui64(191084152064409600, 18446744073709551614), true); + assert_eq!(lt_ui64(191084152064409600, 18446744073709551615), true); + assert_eq!(lt_ui64(11015955194427482112, 16990600415051759616), true); + assert_eq!(lt_ui64(11015955194427482112, 18446744073709551614), true); + assert_eq!(lt_ui64(11015955194427482112, 18446744073709551615), true); + assert_eq!(lt_ui64(16990600415051759616, 18446744073709551614), true); + assert_eq!(lt_ui64(16990600415051759616, 18446744073709551615), true); + assert_eq!(lt_ui64(18446744073709551614, 18446744073709551615), true); + } + #[test] + fn test_456() { + assert_eq!(lt_ui8(0, 0), false); + assert_eq!(lt_ui8(1, 0), false); + assert_eq!(lt_ui8(1, 1), false); + assert_eq!(lt_ui8(2, 0), false); + assert_eq!(lt_ui8(2, 1), false); + assert_eq!(lt_ui8(2, 2), false); + assert_eq!(lt_ui8(3, 0), false); + assert_eq!(lt_ui8(3, 1), false); + assert_eq!(lt_ui8(3, 2), false); + assert_eq!(lt_ui8(3, 3), false); + } + #[test] + fn test_457() { + assert_eq!(lt_ui8(4, 0), false); + assert_eq!(lt_ui8(4, 1), false); + assert_eq!(lt_ui8(4, 2), false); + assert_eq!(lt_ui8(4, 3), false); + assert_eq!(lt_ui8(4, 4), false); + assert_eq!(lt_ui8(72, 0), false); + assert_eq!(lt_ui8(72, 1), false); + assert_eq!(lt_ui8(72, 2), false); + assert_eq!(lt_ui8(72, 3), false); + assert_eq!(lt_ui8(72, 4), false); + } + #[test] + fn test_458() { + assert_eq!(lt_ui8(72, 72), false); + assert_eq!(lt_ui8(100, 0), false); + assert_eq!(lt_ui8(100, 1), false); + assert_eq!(lt_ui8(100, 2), false); + assert_eq!(lt_ui8(100, 3), false); + assert_eq!(lt_ui8(100, 4), false); + assert_eq!(lt_ui8(100, 72), false); + assert_eq!(lt_ui8(100, 100), false); + assert_eq!(lt_ui8(162, 0), false); + assert_eq!(lt_ui8(162, 1), false); + } + #[test] + fn test_459() { + assert_eq!(lt_ui8(162, 2), false); + assert_eq!(lt_ui8(162, 3), false); + assert_eq!(lt_ui8(162, 4), false); + assert_eq!(lt_ui8(162, 72), false); + assert_eq!(lt_ui8(162, 100), false); + assert_eq!(lt_ui8(162, 162), false); + assert_eq!(lt_ui8(254, 0), false); + assert_eq!(lt_ui8(254, 1), false); + assert_eq!(lt_ui8(254, 2), false); + assert_eq!(lt_ui8(254, 3), false); + } + #[test] + fn test_460() { + assert_eq!(lt_ui8(254, 4), false); + assert_eq!(lt_ui8(254, 72), false); + assert_eq!(lt_ui8(254, 100), false); + assert_eq!(lt_ui8(254, 162), false); + assert_eq!(lt_ui8(254, 254), false); + assert_eq!(lt_ui8(255, 0), false); + assert_eq!(lt_ui8(255, 1), false); + assert_eq!(lt_ui8(255, 2), false); + assert_eq!(lt_ui8(255, 3), false); + assert_eq!(lt_ui8(255, 4), false); + } + #[test] + fn test_461() { + assert_eq!(lt_ui8(255, 72), false); + assert_eq!(lt_ui8(255, 100), false); + assert_eq!(lt_ui8(255, 162), false); + assert_eq!(lt_ui8(255, 254), false); + assert_eq!(lt_ui8(255, 255), false); + assert_eq!(lt_ui8(0, 1), true); + assert_eq!(lt_ui8(0, 2), true); + assert_eq!(lt_ui8(0, 3), true); + assert_eq!(lt_ui8(0, 4), true); + assert_eq!(lt_ui8(0, 72), true); + } + #[test] + fn test_462() { + assert_eq!(lt_ui8(0, 100), true); + assert_eq!(lt_ui8(0, 162), true); + assert_eq!(lt_ui8(0, 254), true); + assert_eq!(lt_ui8(0, 255), true); + assert_eq!(lt_ui8(1, 2), true); + assert_eq!(lt_ui8(1, 3), true); + assert_eq!(lt_ui8(1, 4), true); + assert_eq!(lt_ui8(1, 72), true); + assert_eq!(lt_ui8(1, 100), true); + assert_eq!(lt_ui8(1, 162), true); + } + #[test] + fn test_463() { + assert_eq!(lt_ui8(1, 254), true); + assert_eq!(lt_ui8(1, 255), true); + assert_eq!(lt_ui8(2, 3), true); + assert_eq!(lt_ui8(2, 4), true); + assert_eq!(lt_ui8(2, 72), true); + assert_eq!(lt_ui8(2, 100), true); + assert_eq!(lt_ui8(2, 162), true); + assert_eq!(lt_ui8(2, 254), true); + assert_eq!(lt_ui8(2, 255), true); + assert_eq!(lt_ui8(3, 4), true); + } + #[test] + fn test_464() { + assert_eq!(lt_ui8(3, 72), true); + assert_eq!(lt_ui8(3, 100), true); + assert_eq!(lt_ui8(3, 162), true); + assert_eq!(lt_ui8(3, 254), true); + assert_eq!(lt_ui8(3, 255), true); + assert_eq!(lt_ui8(4, 72), true); + assert_eq!(lt_ui8(4, 100), true); + assert_eq!(lt_ui8(4, 162), true); + assert_eq!(lt_ui8(4, 254), true); + assert_eq!(lt_ui8(4, 255), true); + } + #[test] + fn test_465() { + assert_eq!(lt_ui8(72, 100), true); + assert_eq!(lt_ui8(72, 162), true); + assert_eq!(lt_ui8(72, 254), true); + assert_eq!(lt_ui8(72, 255), true); + assert_eq!(lt_ui8(100, 162), true); + assert_eq!(lt_ui8(100, 254), true); + assert_eq!(lt_ui8(100, 255), true); + assert_eq!(lt_ui8(162, 254), true); + assert_eq!(lt_ui8(162, 255), true); + assert_eq!(lt_ui8(254, 255), true); + } + #[test] + fn test_466() { + assert_eq!(ne_si16(-32768, -32768), false); + assert_eq!(ne_si16(-32767, -32767), false); + assert_eq!(ne_si16(-32547, -32547), false); + assert_eq!(ne_si16(0, 0), false); + assert_eq!(ne_si16(1, 1), false); + assert_eq!(ne_si16(2, 2), false); + assert_eq!(ne_si16(3, 3), false); + assert_eq!(ne_si16(4, 4), false); + assert_eq!(ne_si16(10486, 10486), false); + assert_eq!(ne_si16(16514, 16514), false); + } + #[test] + fn test_467() { + assert_eq!(ne_si16(32766, 32766), false); + assert_eq!(ne_si16(32767, 32767), false); + assert_eq!(ne_si16(-32768, -32767), true); + assert_eq!(ne_si16(-32768, -32547), true); + assert_eq!(ne_si16(-32768, 0), true); + assert_eq!(ne_si16(-32768, 1), true); + assert_eq!(ne_si16(-32768, 2), true); + assert_eq!(ne_si16(-32768, 3), true); + assert_eq!(ne_si16(-32768, 4), true); + assert_eq!(ne_si16(-32768, 10486), true); + } + #[test] + fn test_468() { + assert_eq!(ne_si16(-32768, 16514), true); + assert_eq!(ne_si16(-32768, 32766), true); + assert_eq!(ne_si16(-32768, 32767), true); + assert_eq!(ne_si16(-32767, -32768), true); + assert_eq!(ne_si16(-32767, -32547), true); + assert_eq!(ne_si16(-32767, 0), true); + assert_eq!(ne_si16(-32767, 1), true); + assert_eq!(ne_si16(-32767, 2), true); + assert_eq!(ne_si16(-32767, 3), true); + assert_eq!(ne_si16(-32767, 4), true); + } + #[test] + fn test_469() { + assert_eq!(ne_si16(-32767, 10486), true); + assert_eq!(ne_si16(-32767, 16514), true); + assert_eq!(ne_si16(-32767, 32766), true); + assert_eq!(ne_si16(-32767, 32767), true); + assert_eq!(ne_si16(-32547, -32768), true); + assert_eq!(ne_si16(-32547, -32767), true); + assert_eq!(ne_si16(-32547, 0), true); + assert_eq!(ne_si16(-32547, 1), true); + assert_eq!(ne_si16(-32547, 2), true); + assert_eq!(ne_si16(-32547, 3), true); + } + #[test] + fn test_470() { + assert_eq!(ne_si16(-32547, 4), true); + assert_eq!(ne_si16(-32547, 10486), true); + assert_eq!(ne_si16(-32547, 16514), true); + assert_eq!(ne_si16(-32547, 32766), true); + assert_eq!(ne_si16(-32547, 32767), true); + assert_eq!(ne_si16(0, -32768), true); + assert_eq!(ne_si16(0, -32767), true); + assert_eq!(ne_si16(0, -32547), true); + assert_eq!(ne_si16(0, 1), true); + assert_eq!(ne_si16(0, 2), true); + } + #[test] + fn test_471() { + assert_eq!(ne_si16(0, 3), true); + assert_eq!(ne_si16(0, 4), true); + assert_eq!(ne_si16(0, 10486), true); + assert_eq!(ne_si16(0, 16514), true); + assert_eq!(ne_si16(0, 32766), true); + assert_eq!(ne_si16(0, 32767), true); + assert_eq!(ne_si16(1, -32768), true); + assert_eq!(ne_si16(1, -32767), true); + assert_eq!(ne_si16(1, -32547), true); + assert_eq!(ne_si16(1, 0), true); + } + #[test] + fn test_472() { + assert_eq!(ne_si16(1, 2), true); + assert_eq!(ne_si16(1, 3), true); + assert_eq!(ne_si16(1, 4), true); + assert_eq!(ne_si16(1, 10486), true); + assert_eq!(ne_si16(1, 16514), true); + assert_eq!(ne_si16(1, 32766), true); + assert_eq!(ne_si16(1, 32767), true); + assert_eq!(ne_si16(2, -32768), true); + assert_eq!(ne_si16(2, -32767), true); + assert_eq!(ne_si16(2, -32547), true); + } + #[test] + fn test_473() { + assert_eq!(ne_si16(2, 0), true); + assert_eq!(ne_si16(2, 1), true); + assert_eq!(ne_si16(2, 3), true); + assert_eq!(ne_si16(2, 4), true); + assert_eq!(ne_si16(2, 10486), true); + assert_eq!(ne_si16(2, 16514), true); + assert_eq!(ne_si16(2, 32766), true); + assert_eq!(ne_si16(2, 32767), true); + assert_eq!(ne_si16(3, -32768), true); + assert_eq!(ne_si16(3, -32767), true); + } + #[test] + fn test_474() { + assert_eq!(ne_si16(3, -32547), true); + assert_eq!(ne_si16(3, 0), true); + assert_eq!(ne_si16(3, 1), true); + assert_eq!(ne_si16(3, 2), true); + assert_eq!(ne_si16(3, 4), true); + assert_eq!(ne_si16(3, 10486), true); + assert_eq!(ne_si16(3, 16514), true); + assert_eq!(ne_si16(3, 32766), true); + assert_eq!(ne_si16(3, 32767), true); + assert_eq!(ne_si16(4, -32768), true); + } + #[test] + fn test_475() { + assert_eq!(ne_si16(4, -32767), true); + assert_eq!(ne_si16(4, -32547), true); + assert_eq!(ne_si16(4, 0), true); + assert_eq!(ne_si16(4, 1), true); + assert_eq!(ne_si16(4, 2), true); + assert_eq!(ne_si16(4, 3), true); + assert_eq!(ne_si16(4, 10486), true); + assert_eq!(ne_si16(4, 16514), true); + assert_eq!(ne_si16(4, 32766), true); + assert_eq!(ne_si16(4, 32767), true); + } + #[test] + fn test_476() { + assert_eq!(ne_si16(10486, -32768), true); + assert_eq!(ne_si16(10486, -32767), true); + assert_eq!(ne_si16(10486, -32547), true); + assert_eq!(ne_si16(10486, 0), true); + assert_eq!(ne_si16(10486, 1), true); + assert_eq!(ne_si16(10486, 2), true); + assert_eq!(ne_si16(10486, 3), true); + assert_eq!(ne_si16(10486, 4), true); + assert_eq!(ne_si16(10486, 16514), true); + assert_eq!(ne_si16(10486, 32766), true); + } + #[test] + fn test_477() { + assert_eq!(ne_si16(10486, 32767), true); + assert_eq!(ne_si16(16514, -32768), true); + assert_eq!(ne_si16(16514, -32767), true); + assert_eq!(ne_si16(16514, -32547), true); + assert_eq!(ne_si16(16514, 0), true); + assert_eq!(ne_si16(16514, 1), true); + assert_eq!(ne_si16(16514, 2), true); + assert_eq!(ne_si16(16514, 3), true); + assert_eq!(ne_si16(16514, 4), true); + assert_eq!(ne_si16(16514, 10486), true); + } + #[test] + fn test_478() { + assert_eq!(ne_si16(16514, 32766), true); + assert_eq!(ne_si16(16514, 32767), true); + assert_eq!(ne_si16(32766, -32768), true); + assert_eq!(ne_si16(32766, -32767), true); + assert_eq!(ne_si16(32766, -32547), true); + assert_eq!(ne_si16(32766, 0), true); + assert_eq!(ne_si16(32766, 1), true); + assert_eq!(ne_si16(32766, 2), true); + assert_eq!(ne_si16(32766, 3), true); + assert_eq!(ne_si16(32766, 4), true); + } + #[test] + fn test_479() { + assert_eq!(ne_si16(32766, 10486), true); + assert_eq!(ne_si16(32766, 16514), true); + assert_eq!(ne_si16(32766, 32767), true); + assert_eq!(ne_si16(32767, -32768), true); + assert_eq!(ne_si16(32767, -32767), true); + assert_eq!(ne_si16(32767, -32547), true); + assert_eq!(ne_si16(32767, 0), true); + assert_eq!(ne_si16(32767, 1), true); + assert_eq!(ne_si16(32767, 2), true); + assert_eq!(ne_si16(32767, 3), true); + } + #[test] + fn test_480() { + assert_eq!(ne_si16(32767, 4), true); + assert_eq!(ne_si16(32767, 10486), true); + assert_eq!(ne_si16(32767, 16514), true); + assert_eq!(ne_si16(32767, 32766), true); + assert_eq!(ne_si32(-2147483648, -2147483648), false); + assert_eq!(ne_si32(-2147483647, -2147483647), false); + assert_eq!(ne_si32(-1713183800, -1713183800), false); + assert_eq!(ne_si32(-1252582164, -1252582164), false); + assert_eq!(ne_si32(-1035405763, -1035405763), false); + assert_eq!(ne_si32(0, 0), false); + } + #[test] + fn test_481() { + assert_eq!(ne_si32(1, 1), false); + assert_eq!(ne_si32(2, 2), false); + assert_eq!(ne_si32(3, 3), false); + assert_eq!(ne_si32(4, 4), false); + assert_eq!(ne_si32(2147483646, 2147483646), false); + assert_eq!(ne_si32(2147483647, 2147483647), false); + assert_eq!(ne_si32(-2147483648, -2147483647), true); + assert_eq!(ne_si32(-2147483648, -1713183800), true); + assert_eq!(ne_si32(-2147483648, -1252582164), true); + assert_eq!(ne_si32(-2147483648, -1035405763), true); + } + #[test] + fn test_482() { + assert_eq!(ne_si32(-2147483648, 0), true); + assert_eq!(ne_si32(-2147483648, 1), true); + assert_eq!(ne_si32(-2147483648, 2), true); + assert_eq!(ne_si32(-2147483648, 3), true); + assert_eq!(ne_si32(-2147483648, 4), true); + assert_eq!(ne_si32(-2147483648, 2147483646), true); + assert_eq!(ne_si32(-2147483648, 2147483647), true); + assert_eq!(ne_si32(-2147483647, -2147483648), true); + assert_eq!(ne_si32(-2147483647, -1713183800), true); + assert_eq!(ne_si32(-2147483647, -1252582164), true); + } + #[test] + fn test_483() { + assert_eq!(ne_si32(-2147483647, -1035405763), true); + assert_eq!(ne_si32(-2147483647, 0), true); + assert_eq!(ne_si32(-2147483647, 1), true); + assert_eq!(ne_si32(-2147483647, 2), true); + assert_eq!(ne_si32(-2147483647, 3), true); + assert_eq!(ne_si32(-2147483647, 4), true); + assert_eq!(ne_si32(-2147483647, 2147483646), true); + assert_eq!(ne_si32(-2147483647, 2147483647), true); + assert_eq!(ne_si32(-1713183800, -2147483648), true); + assert_eq!(ne_si32(-1713183800, -2147483647), true); + } + #[test] + fn test_484() { + assert_eq!(ne_si32(-1713183800, -1252582164), true); + assert_eq!(ne_si32(-1713183800, -1035405763), true); + assert_eq!(ne_si32(-1713183800, 0), true); + assert_eq!(ne_si32(-1713183800, 1), true); + assert_eq!(ne_si32(-1713183800, 2), true); + assert_eq!(ne_si32(-1713183800, 3), true); + assert_eq!(ne_si32(-1713183800, 4), true); + assert_eq!(ne_si32(-1713183800, 2147483646), true); + assert_eq!(ne_si32(-1713183800, 2147483647), true); + assert_eq!(ne_si32(-1252582164, -2147483648), true); + } + #[test] + fn test_485() { + assert_eq!(ne_si32(-1252582164, -2147483647), true); + assert_eq!(ne_si32(-1252582164, -1713183800), true); + assert_eq!(ne_si32(-1252582164, -1035405763), true); + assert_eq!(ne_si32(-1252582164, 0), true); + assert_eq!(ne_si32(-1252582164, 1), true); + assert_eq!(ne_si32(-1252582164, 2), true); + assert_eq!(ne_si32(-1252582164, 3), true); + assert_eq!(ne_si32(-1252582164, 4), true); + assert_eq!(ne_si32(-1252582164, 2147483646), true); + assert_eq!(ne_si32(-1252582164, 2147483647), true); + } + #[test] + fn test_486() { + assert_eq!(ne_si32(-1035405763, -2147483648), true); + assert_eq!(ne_si32(-1035405763, -2147483647), true); + assert_eq!(ne_si32(-1035405763, -1713183800), true); + assert_eq!(ne_si32(-1035405763, -1252582164), true); + assert_eq!(ne_si32(-1035405763, 0), true); + assert_eq!(ne_si32(-1035405763, 1), true); + assert_eq!(ne_si32(-1035405763, 2), true); + assert_eq!(ne_si32(-1035405763, 3), true); + assert_eq!(ne_si32(-1035405763, 4), true); + assert_eq!(ne_si32(-1035405763, 2147483646), true); + } + #[test] + fn test_487() { + assert_eq!(ne_si32(-1035405763, 2147483647), true); + assert_eq!(ne_si32(0, -2147483648), true); + assert_eq!(ne_si32(0, -2147483647), true); + assert_eq!(ne_si32(0, -1713183800), true); + assert_eq!(ne_si32(0, -1252582164), true); + assert_eq!(ne_si32(0, -1035405763), true); + assert_eq!(ne_si32(0, 1), true); + assert_eq!(ne_si32(0, 2), true); + assert_eq!(ne_si32(0, 3), true); + assert_eq!(ne_si32(0, 4), true); + } + #[test] + fn test_488() { + assert_eq!(ne_si32(0, 2147483646), true); + assert_eq!(ne_si32(0, 2147483647), true); + assert_eq!(ne_si32(1, -2147483648), true); + assert_eq!(ne_si32(1, -2147483647), true); + assert_eq!(ne_si32(1, -1713183800), true); + assert_eq!(ne_si32(1, -1252582164), true); + assert_eq!(ne_si32(1, -1035405763), true); + assert_eq!(ne_si32(1, 0), true); + assert_eq!(ne_si32(1, 2), true); + assert_eq!(ne_si32(1, 3), true); + } + #[test] + fn test_489() { + assert_eq!(ne_si32(1, 4), true); + assert_eq!(ne_si32(1, 2147483646), true); + assert_eq!(ne_si32(1, 2147483647), true); + assert_eq!(ne_si32(2, -2147483648), true); + assert_eq!(ne_si32(2, -2147483647), true); + assert_eq!(ne_si32(2, -1713183800), true); + assert_eq!(ne_si32(2, -1252582164), true); + assert_eq!(ne_si32(2, -1035405763), true); + assert_eq!(ne_si32(2, 0), true); + assert_eq!(ne_si32(2, 1), true); + } + #[test] + fn test_490() { + assert_eq!(ne_si32(2, 3), true); + assert_eq!(ne_si32(2, 4), true); + assert_eq!(ne_si32(2, 2147483646), true); + assert_eq!(ne_si32(2, 2147483647), true); + assert_eq!(ne_si32(3, -2147483648), true); + assert_eq!(ne_si32(3, -2147483647), true); + assert_eq!(ne_si32(3, -1713183800), true); + assert_eq!(ne_si32(3, -1252582164), true); + assert_eq!(ne_si32(3, -1035405763), true); + assert_eq!(ne_si32(3, 0), true); + } + #[test] + fn test_491() { + assert_eq!(ne_si32(3, 1), true); + assert_eq!(ne_si32(3, 2), true); + assert_eq!(ne_si32(3, 4), true); + assert_eq!(ne_si32(3, 2147483646), true); + assert_eq!(ne_si32(3, 2147483647), true); + assert_eq!(ne_si32(4, -2147483648), true); + assert_eq!(ne_si32(4, -2147483647), true); + assert_eq!(ne_si32(4, -1713183800), true); + assert_eq!(ne_si32(4, -1252582164), true); + assert_eq!(ne_si32(4, -1035405763), true); + } + #[test] + fn test_492() { + assert_eq!(ne_si32(4, 0), true); + assert_eq!(ne_si32(4, 1), true); + assert_eq!(ne_si32(4, 2), true); + assert_eq!(ne_si32(4, 3), true); + assert_eq!(ne_si32(4, 2147483646), true); + assert_eq!(ne_si32(4, 2147483647), true); + assert_eq!(ne_si32(2147483646, -2147483648), true); + assert_eq!(ne_si32(2147483646, -2147483647), true); + assert_eq!(ne_si32(2147483646, -1713183800), true); + assert_eq!(ne_si32(2147483646, -1252582164), true); + } + #[test] + fn test_493() { + assert_eq!(ne_si32(2147483646, -1035405763), true); + assert_eq!(ne_si32(2147483646, 0), true); + assert_eq!(ne_si32(2147483646, 1), true); + assert_eq!(ne_si32(2147483646, 2), true); + assert_eq!(ne_si32(2147483646, 3), true); + assert_eq!(ne_si32(2147483646, 4), true); + assert_eq!(ne_si32(2147483646, 2147483647), true); + assert_eq!(ne_si32(2147483647, -2147483648), true); + assert_eq!(ne_si32(2147483647, -2147483647), true); + assert_eq!(ne_si32(2147483647, -1713183800), true); + } + #[test] + fn test_494() { + assert_eq!(ne_si32(2147483647, -1252582164), true); + assert_eq!(ne_si32(2147483647, -1035405763), true); + assert_eq!(ne_si32(2147483647, 0), true); + assert_eq!(ne_si32(2147483647, 1), true); + assert_eq!(ne_si32(2147483647, 2), true); + assert_eq!(ne_si32(2147483647, 3), true); + assert_eq!(ne_si32(2147483647, 4), true); + assert_eq!(ne_si32(2147483647, 2147483646), true); + assert_eq!(ne_si64(-9223372036854775808, -9223372036854775808), false); + assert_eq!(ne_si64(-9223372036854775807, -9223372036854775807), false); + } + #[test] + fn test_495() { + assert_eq!(ne_si64(-1741927215160008704, -1741927215160008704), false); + assert_eq!(ne_si64(-1328271339354574848, -1328271339354574848), false); + assert_eq!(ne_si64(0, 0), false); + assert_eq!(ne_si64(1, 1), false); + assert_eq!(ne_si64(2, 2), false); + assert_eq!(ne_si64(3, 3), false); + assert_eq!(ne_si64(4, 4), false); + assert_eq!(ne_si64(5577148965131116544, 5577148965131116544), false); + assert_eq!(ne_si64(9223372036854775806, 9223372036854775806), false); + assert_eq!(ne_si64(9223372036854775807, 9223372036854775807), false); + } + #[test] + fn test_496() { + assert_eq!(ne_si64(-9223372036854775808, -9223372036854775807), true); + assert_eq!(ne_si64(-9223372036854775808, -1741927215160008704), true); + assert_eq!(ne_si64(-9223372036854775808, -1328271339354574848), true); + assert_eq!(ne_si64(-9223372036854775808, 0), true); + assert_eq!(ne_si64(-9223372036854775808, 1), true); + assert_eq!(ne_si64(-9223372036854775808, 2), true); + assert_eq!(ne_si64(-9223372036854775808, 3), true); + assert_eq!(ne_si64(-9223372036854775808, 4), true); + assert_eq!(ne_si64(-9223372036854775808, 5577148965131116544), true); + assert_eq!(ne_si64(-9223372036854775808, 9223372036854775806), true); + } + #[test] + fn test_497() { + assert_eq!(ne_si64(-9223372036854775808, 9223372036854775807), true); + assert_eq!(ne_si64(-9223372036854775807, -9223372036854775808), true); + assert_eq!(ne_si64(-9223372036854775807, -1741927215160008704), true); + assert_eq!(ne_si64(-9223372036854775807, -1328271339354574848), true); + assert_eq!(ne_si64(-9223372036854775807, 0), true); + assert_eq!(ne_si64(-9223372036854775807, 1), true); + assert_eq!(ne_si64(-9223372036854775807, 2), true); + assert_eq!(ne_si64(-9223372036854775807, 3), true); + assert_eq!(ne_si64(-9223372036854775807, 4), true); + assert_eq!(ne_si64(-9223372036854775807, 5577148965131116544), true); + } + #[test] + fn test_498() { + assert_eq!(ne_si64(-9223372036854775807, 9223372036854775806), true); + assert_eq!(ne_si64(-9223372036854775807, 9223372036854775807), true); + assert_eq!(ne_si64(-1741927215160008704, -9223372036854775808), true); + assert_eq!(ne_si64(-1741927215160008704, -9223372036854775807), true); + assert_eq!(ne_si64(-1741927215160008704, -1328271339354574848), true); + assert_eq!(ne_si64(-1741927215160008704, 0), true); + assert_eq!(ne_si64(-1741927215160008704, 1), true); + assert_eq!(ne_si64(-1741927215160008704, 2), true); + assert_eq!(ne_si64(-1741927215160008704, 3), true); + assert_eq!(ne_si64(-1741927215160008704, 4), true); + } + #[test] + fn test_499() { + assert_eq!(ne_si64(-1741927215160008704, 5577148965131116544), true); + assert_eq!(ne_si64(-1741927215160008704, 9223372036854775806), true); + assert_eq!(ne_si64(-1741927215160008704, 9223372036854775807), true); + assert_eq!(ne_si64(-1328271339354574848, -9223372036854775808), true); + assert_eq!(ne_si64(-1328271339354574848, -9223372036854775807), true); + assert_eq!(ne_si64(-1328271339354574848, -1741927215160008704), true); + assert_eq!(ne_si64(-1328271339354574848, 0), true); + assert_eq!(ne_si64(-1328271339354574848, 1), true); + assert_eq!(ne_si64(-1328271339354574848, 2), true); + assert_eq!(ne_si64(-1328271339354574848, 3), true); + } + #[test] + fn test_500() { + assert_eq!(ne_si64(-1328271339354574848, 4), true); + assert_eq!(ne_si64(-1328271339354574848, 5577148965131116544), true); + assert_eq!(ne_si64(-1328271339354574848, 9223372036854775806), true); + assert_eq!(ne_si64(-1328271339354574848, 9223372036854775807), true); + assert_eq!(ne_si64(0, -9223372036854775808), true); + assert_eq!(ne_si64(0, -9223372036854775807), true); + assert_eq!(ne_si64(0, -1741927215160008704), true); + assert_eq!(ne_si64(0, -1328271339354574848), true); + assert_eq!(ne_si64(0, 1), true); + assert_eq!(ne_si64(0, 2), true); + } + #[test] + fn test_501() { + assert_eq!(ne_si64(0, 3), true); + assert_eq!(ne_si64(0, 4), true); + assert_eq!(ne_si64(0, 5577148965131116544), true); + assert_eq!(ne_si64(0, 9223372036854775806), true); + assert_eq!(ne_si64(0, 9223372036854775807), true); + assert_eq!(ne_si64(1, -9223372036854775808), true); + assert_eq!(ne_si64(1, -9223372036854775807), true); + assert_eq!(ne_si64(1, -1741927215160008704), true); + assert_eq!(ne_si64(1, -1328271339354574848), true); + assert_eq!(ne_si64(1, 0), true); + } + #[test] + fn test_502() { + assert_eq!(ne_si64(1, 2), true); + assert_eq!(ne_si64(1, 3), true); + assert_eq!(ne_si64(1, 4), true); + assert_eq!(ne_si64(1, 5577148965131116544), true); + assert_eq!(ne_si64(1, 9223372036854775806), true); + assert_eq!(ne_si64(1, 9223372036854775807), true); + assert_eq!(ne_si64(2, -9223372036854775808), true); + assert_eq!(ne_si64(2, -9223372036854775807), true); + assert_eq!(ne_si64(2, -1741927215160008704), true); + assert_eq!(ne_si64(2, -1328271339354574848), true); + } + #[test] + fn test_503() { + assert_eq!(ne_si64(2, 0), true); + assert_eq!(ne_si64(2, 1), true); + assert_eq!(ne_si64(2, 3), true); + assert_eq!(ne_si64(2, 4), true); + assert_eq!(ne_si64(2, 5577148965131116544), true); + assert_eq!(ne_si64(2, 9223372036854775806), true); + assert_eq!(ne_si64(2, 9223372036854775807), true); + assert_eq!(ne_si64(3, -9223372036854775808), true); + assert_eq!(ne_si64(3, -9223372036854775807), true); + assert_eq!(ne_si64(3, -1741927215160008704), true); + } + #[test] + fn test_504() { + assert_eq!(ne_si64(3, -1328271339354574848), true); + assert_eq!(ne_si64(3, 0), true); + assert_eq!(ne_si64(3, 1), true); + assert_eq!(ne_si64(3, 2), true); + assert_eq!(ne_si64(3, 4), true); + assert_eq!(ne_si64(3, 5577148965131116544), true); + assert_eq!(ne_si64(3, 9223372036854775806), true); + assert_eq!(ne_si64(3, 9223372036854775807), true); + assert_eq!(ne_si64(4, -9223372036854775808), true); + assert_eq!(ne_si64(4, -9223372036854775807), true); + } + #[test] + fn test_505() { + assert_eq!(ne_si64(4, -1741927215160008704), true); + assert_eq!(ne_si64(4, -1328271339354574848), true); + assert_eq!(ne_si64(4, 0), true); + assert_eq!(ne_si64(4, 1), true); + assert_eq!(ne_si64(4, 2), true); + assert_eq!(ne_si64(4, 3), true); + assert_eq!(ne_si64(4, 5577148965131116544), true); + assert_eq!(ne_si64(4, 9223372036854775806), true); + assert_eq!(ne_si64(4, 9223372036854775807), true); + assert_eq!(ne_si64(5577148965131116544, -9223372036854775808), true); + } + #[test] + fn test_506() { + assert_eq!(ne_si64(5577148965131116544, -9223372036854775807), true); + assert_eq!(ne_si64(5577148965131116544, -1741927215160008704), true); + assert_eq!(ne_si64(5577148965131116544, -1328271339354574848), true); + assert_eq!(ne_si64(5577148965131116544, 0), true); + assert_eq!(ne_si64(5577148965131116544, 1), true); + assert_eq!(ne_si64(5577148965131116544, 2), true); + assert_eq!(ne_si64(5577148965131116544, 3), true); + assert_eq!(ne_si64(5577148965131116544, 4), true); + assert_eq!(ne_si64(5577148965131116544, 9223372036854775806), true); + assert_eq!(ne_si64(5577148965131116544, 9223372036854775807), true); + } + #[test] + fn test_507() { + assert_eq!(ne_si64(9223372036854775806, -9223372036854775808), true); + assert_eq!(ne_si64(9223372036854775806, -9223372036854775807), true); + assert_eq!(ne_si64(9223372036854775806, -1741927215160008704), true); + assert_eq!(ne_si64(9223372036854775806, -1328271339354574848), true); + assert_eq!(ne_si64(9223372036854775806, 0), true); + assert_eq!(ne_si64(9223372036854775806, 1), true); + assert_eq!(ne_si64(9223372036854775806, 2), true); + assert_eq!(ne_si64(9223372036854775806, 3), true); + assert_eq!(ne_si64(9223372036854775806, 4), true); + assert_eq!(ne_si64(9223372036854775806, 5577148965131116544), true); + } + #[test] + fn test_508() { + assert_eq!(ne_si64(9223372036854775806, 9223372036854775807), true); + assert_eq!(ne_si64(9223372036854775807, -9223372036854775808), true); + assert_eq!(ne_si64(9223372036854775807, -9223372036854775807), true); + assert_eq!(ne_si64(9223372036854775807, -1741927215160008704), true); + assert_eq!(ne_si64(9223372036854775807, -1328271339354574848), true); + assert_eq!(ne_si64(9223372036854775807, 0), true); + assert_eq!(ne_si64(9223372036854775807, 1), true); + assert_eq!(ne_si64(9223372036854775807, 2), true); + assert_eq!(ne_si64(9223372036854775807, 3), true); + assert_eq!(ne_si64(9223372036854775807, 4), true); + } + #[test] + fn test_509() { + assert_eq!(ne_si64(9223372036854775807, 5577148965131116544), true); + assert_eq!(ne_si64(9223372036854775807, 9223372036854775806), true); + assert_eq!(ne_si8(-128, -128), false); + assert_eq!(ne_si8(-127, -127), false); + assert_eq!(ne_si8(0, 0), false); + assert_eq!(ne_si8(1, 1), false); + assert_eq!(ne_si8(2, 2), false); + assert_eq!(ne_si8(3, 3), false); + assert_eq!(ne_si8(4, 4), false); + assert_eq!(ne_si8(16, 16), false); + } + #[test] + fn test_510() { + assert_eq!(ne_si8(126, 126), false); + assert_eq!(ne_si8(127, 127), false); + assert_eq!(ne_si8(-128, -127), true); + assert_eq!(ne_si8(-128, 0), true); + assert_eq!(ne_si8(-128, 1), true); + assert_eq!(ne_si8(-128, 2), true); + assert_eq!(ne_si8(-128, 3), true); + assert_eq!(ne_si8(-128, 4), true); + assert_eq!(ne_si8(-128, 16), true); + assert_eq!(ne_si8(-128, 126), true); + } + #[test] + fn test_511() { + assert_eq!(ne_si8(-128, 127), true); + assert_eq!(ne_si8(-127, -128), true); + assert_eq!(ne_si8(-127, 0), true); + assert_eq!(ne_si8(-127, 1), true); + assert_eq!(ne_si8(-127, 2), true); + assert_eq!(ne_si8(-127, 3), true); + assert_eq!(ne_si8(-127, 4), true); + assert_eq!(ne_si8(-127, 16), true); + assert_eq!(ne_si8(-127, 126), true); + assert_eq!(ne_si8(-127, 127), true); + } + #[test] + fn test_512() { + assert_eq!(ne_si8(0, -128), true); + assert_eq!(ne_si8(0, -127), true); + assert_eq!(ne_si8(0, 1), true); + assert_eq!(ne_si8(0, 2), true); + assert_eq!(ne_si8(0, 3), true); + assert_eq!(ne_si8(0, 4), true); + assert_eq!(ne_si8(0, 16), true); + assert_eq!(ne_si8(0, 126), true); + assert_eq!(ne_si8(0, 127), true); + assert_eq!(ne_si8(1, -128), true); + } + #[test] + fn test_513() { + assert_eq!(ne_si8(1, -127), true); + assert_eq!(ne_si8(1, 0), true); + assert_eq!(ne_si8(1, 2), true); + assert_eq!(ne_si8(1, 3), true); + assert_eq!(ne_si8(1, 4), true); + assert_eq!(ne_si8(1, 16), true); + assert_eq!(ne_si8(1, 126), true); + assert_eq!(ne_si8(1, 127), true); + assert_eq!(ne_si8(2, -128), true); + assert_eq!(ne_si8(2, -127), true); + } + #[test] + fn test_514() { + assert_eq!(ne_si8(2, 0), true); + assert_eq!(ne_si8(2, 1), true); + assert_eq!(ne_si8(2, 3), true); + assert_eq!(ne_si8(2, 4), true); + assert_eq!(ne_si8(2, 16), true); + assert_eq!(ne_si8(2, 126), true); + assert_eq!(ne_si8(2, 127), true); + assert_eq!(ne_si8(3, -128), true); + assert_eq!(ne_si8(3, -127), true); + assert_eq!(ne_si8(3, 0), true); + } + #[test] + fn test_515() { + assert_eq!(ne_si8(3, 1), true); + assert_eq!(ne_si8(3, 2), true); + assert_eq!(ne_si8(3, 4), true); + assert_eq!(ne_si8(3, 16), true); + assert_eq!(ne_si8(3, 126), true); + assert_eq!(ne_si8(3, 127), true); + assert_eq!(ne_si8(4, -128), true); + assert_eq!(ne_si8(4, -127), true); + assert_eq!(ne_si8(4, 0), true); + assert_eq!(ne_si8(4, 1), true); + } + #[test] + fn test_516() { + assert_eq!(ne_si8(4, 2), true); + assert_eq!(ne_si8(4, 3), true); + assert_eq!(ne_si8(4, 16), true); + assert_eq!(ne_si8(4, 126), true); + assert_eq!(ne_si8(4, 127), true); + assert_eq!(ne_si8(16, -128), true); + assert_eq!(ne_si8(16, -127), true); + assert_eq!(ne_si8(16, 0), true); + assert_eq!(ne_si8(16, 1), true); + assert_eq!(ne_si8(16, 2), true); + } + #[test] + fn test_517() { + assert_eq!(ne_si8(16, 3), true); + assert_eq!(ne_si8(16, 4), true); + assert_eq!(ne_si8(16, 126), true); + assert_eq!(ne_si8(16, 127), true); + assert_eq!(ne_si8(126, -128), true); + assert_eq!(ne_si8(126, -127), true); + assert_eq!(ne_si8(126, 0), true); + assert_eq!(ne_si8(126, 1), true); + assert_eq!(ne_si8(126, 2), true); + assert_eq!(ne_si8(126, 3), true); + } + #[test] + fn test_518() { + assert_eq!(ne_si8(126, 4), true); + assert_eq!(ne_si8(126, 16), true); + assert_eq!(ne_si8(126, 127), true); + assert_eq!(ne_si8(127, -128), true); + assert_eq!(ne_si8(127, -127), true); + assert_eq!(ne_si8(127, 0), true); + assert_eq!(ne_si8(127, 1), true); + assert_eq!(ne_si8(127, 2), true); + assert_eq!(ne_si8(127, 3), true); + assert_eq!(ne_si8(127, 4), true); + } + #[test] + fn test_519() { + assert_eq!(ne_si8(127, 16), true); + assert_eq!(ne_si8(127, 126), true); + assert_eq!(ne_ui16(0, 0), false); + assert_eq!(ne_ui16(1, 1), false); + assert_eq!(ne_ui16(2, 2), false); + assert_eq!(ne_ui16(3, 3), false); + assert_eq!(ne_ui16(4, 4), false); + assert_eq!(ne_ui16(1717, 1717), false); + assert_eq!(ne_ui16(17988, 17988), false); + assert_eq!(ne_ui16(65096, 65096), false); + } + #[test] + fn test_520() { + assert_eq!(ne_ui16(65534, 65534), false); + assert_eq!(ne_ui16(65535, 65535), false); + assert_eq!(ne_ui16(0, 1), true); + assert_eq!(ne_ui16(0, 2), true); + assert_eq!(ne_ui16(0, 3), true); + assert_eq!(ne_ui16(0, 4), true); + assert_eq!(ne_ui16(0, 1717), true); + assert_eq!(ne_ui16(0, 17988), true); + assert_eq!(ne_ui16(0, 65096), true); + assert_eq!(ne_ui16(0, 65534), true); + } + #[test] + fn test_521() { + assert_eq!(ne_ui16(0, 65535), true); + assert_eq!(ne_ui16(1, 0), true); + assert_eq!(ne_ui16(1, 2), true); + assert_eq!(ne_ui16(1, 3), true); + assert_eq!(ne_ui16(1, 4), true); + assert_eq!(ne_ui16(1, 1717), true); + assert_eq!(ne_ui16(1, 17988), true); + assert_eq!(ne_ui16(1, 65096), true); + assert_eq!(ne_ui16(1, 65534), true); + assert_eq!(ne_ui16(1, 65535), true); + } + #[test] + fn test_522() { + assert_eq!(ne_ui16(2, 0), true); + assert_eq!(ne_ui16(2, 1), true); + assert_eq!(ne_ui16(2, 3), true); + assert_eq!(ne_ui16(2, 4), true); + assert_eq!(ne_ui16(2, 1717), true); + assert_eq!(ne_ui16(2, 17988), true); + assert_eq!(ne_ui16(2, 65096), true); + assert_eq!(ne_ui16(2, 65534), true); + assert_eq!(ne_ui16(2, 65535), true); + assert_eq!(ne_ui16(3, 0), true); + } + #[test] + fn test_523() { + assert_eq!(ne_ui16(3, 1), true); + assert_eq!(ne_ui16(3, 2), true); + assert_eq!(ne_ui16(3, 4), true); + assert_eq!(ne_ui16(3, 1717), true); + assert_eq!(ne_ui16(3, 17988), true); + assert_eq!(ne_ui16(3, 65096), true); + assert_eq!(ne_ui16(3, 65534), true); + assert_eq!(ne_ui16(3, 65535), true); + assert_eq!(ne_ui16(4, 0), true); + assert_eq!(ne_ui16(4, 1), true); + } + #[test] + fn test_524() { + assert_eq!(ne_ui16(4, 2), true); + assert_eq!(ne_ui16(4, 3), true); + assert_eq!(ne_ui16(4, 1717), true); + assert_eq!(ne_ui16(4, 17988), true); + assert_eq!(ne_ui16(4, 65096), true); + assert_eq!(ne_ui16(4, 65534), true); + assert_eq!(ne_ui16(4, 65535), true); + assert_eq!(ne_ui16(1717, 0), true); + assert_eq!(ne_ui16(1717, 1), true); + assert_eq!(ne_ui16(1717, 2), true); + } + #[test] + fn test_525() { + assert_eq!(ne_ui16(1717, 3), true); + assert_eq!(ne_ui16(1717, 4), true); + assert_eq!(ne_ui16(1717, 17988), true); + assert_eq!(ne_ui16(1717, 65096), true); + assert_eq!(ne_ui16(1717, 65534), true); + assert_eq!(ne_ui16(1717, 65535), true); + assert_eq!(ne_ui16(17988, 0), true); + assert_eq!(ne_ui16(17988, 1), true); + assert_eq!(ne_ui16(17988, 2), true); + assert_eq!(ne_ui16(17988, 3), true); + } + #[test] + fn test_526() { + assert_eq!(ne_ui16(17988, 4), true); + assert_eq!(ne_ui16(17988, 1717), true); + assert_eq!(ne_ui16(17988, 65096), true); + assert_eq!(ne_ui16(17988, 65534), true); + assert_eq!(ne_ui16(17988, 65535), true); + assert_eq!(ne_ui16(65096, 0), true); + assert_eq!(ne_ui16(65096, 1), true); + assert_eq!(ne_ui16(65096, 2), true); + assert_eq!(ne_ui16(65096, 3), true); + assert_eq!(ne_ui16(65096, 4), true); + } + #[test] + fn test_527() { + assert_eq!(ne_ui16(65096, 1717), true); + assert_eq!(ne_ui16(65096, 17988), true); + assert_eq!(ne_ui16(65096, 65534), true); + assert_eq!(ne_ui16(65096, 65535), true); + assert_eq!(ne_ui16(65534, 0), true); + assert_eq!(ne_ui16(65534, 1), true); + assert_eq!(ne_ui16(65534, 2), true); + assert_eq!(ne_ui16(65534, 3), true); + assert_eq!(ne_ui16(65534, 4), true); + assert_eq!(ne_ui16(65534, 1717), true); + } + #[test] + fn test_528() { + assert_eq!(ne_ui16(65534, 17988), true); + assert_eq!(ne_ui16(65534, 65096), true); + assert_eq!(ne_ui16(65534, 65535), true); + assert_eq!(ne_ui16(65535, 0), true); + assert_eq!(ne_ui16(65535, 1), true); + assert_eq!(ne_ui16(65535, 2), true); + assert_eq!(ne_ui16(65535, 3), true); + assert_eq!(ne_ui16(65535, 4), true); + assert_eq!(ne_ui16(65535, 1717), true); + assert_eq!(ne_ui16(65535, 17988), true); + } + #[test] + fn test_529() { + assert_eq!(ne_ui16(65535, 65096), true); + assert_eq!(ne_ui16(65535, 65534), true); + assert_eq!(ne_ui32(0, 0), false); + assert_eq!(ne_ui32(1, 1), false); + assert_eq!(ne_ui32(2, 2), false); + assert_eq!(ne_ui32(3, 3), false); + assert_eq!(ne_ui32(4, 4), false); + assert_eq!(ne_ui32(2119154652, 2119154652), false); + assert_eq!(ne_ui32(3002788344, 3002788344), false); + assert_eq!(ne_ui32(3482297128, 3482297128), false); + } + #[test] + fn test_530() { + assert_eq!(ne_ui32(4294967294, 4294967294), false); + assert_eq!(ne_ui32(4294967295, 4294967295), false); + assert_eq!(ne_ui32(0, 1), true); + assert_eq!(ne_ui32(0, 2), true); + assert_eq!(ne_ui32(0, 3), true); + assert_eq!(ne_ui32(0, 4), true); + assert_eq!(ne_ui32(0, 2119154652), true); + assert_eq!(ne_ui32(0, 3002788344), true); + assert_eq!(ne_ui32(0, 3482297128), true); + assert_eq!(ne_ui32(0, 4294967294), true); + } + #[test] + fn test_531() { + assert_eq!(ne_ui32(0, 4294967295), true); + assert_eq!(ne_ui32(1, 0), true); + assert_eq!(ne_ui32(1, 2), true); + assert_eq!(ne_ui32(1, 3), true); + assert_eq!(ne_ui32(1, 4), true); + assert_eq!(ne_ui32(1, 2119154652), true); + assert_eq!(ne_ui32(1, 3002788344), true); + assert_eq!(ne_ui32(1, 3482297128), true); + assert_eq!(ne_ui32(1, 4294967294), true); + assert_eq!(ne_ui32(1, 4294967295), true); + } + #[test] + fn test_532() { + assert_eq!(ne_ui32(2, 0), true); + assert_eq!(ne_ui32(2, 1), true); + assert_eq!(ne_ui32(2, 3), true); + assert_eq!(ne_ui32(2, 4), true); + assert_eq!(ne_ui32(2, 2119154652), true); + assert_eq!(ne_ui32(2, 3002788344), true); + assert_eq!(ne_ui32(2, 3482297128), true); + assert_eq!(ne_ui32(2, 4294967294), true); + assert_eq!(ne_ui32(2, 4294967295), true); + assert_eq!(ne_ui32(3, 0), true); + } + #[test] + fn test_533() { + assert_eq!(ne_ui32(3, 1), true); + assert_eq!(ne_ui32(3, 2), true); + assert_eq!(ne_ui32(3, 4), true); + assert_eq!(ne_ui32(3, 2119154652), true); + assert_eq!(ne_ui32(3, 3002788344), true); + assert_eq!(ne_ui32(3, 3482297128), true); + assert_eq!(ne_ui32(3, 4294967294), true); + assert_eq!(ne_ui32(3, 4294967295), true); + assert_eq!(ne_ui32(4, 0), true); + assert_eq!(ne_ui32(4, 1), true); + } + #[test] + fn test_534() { + assert_eq!(ne_ui32(4, 2), true); + assert_eq!(ne_ui32(4, 3), true); + assert_eq!(ne_ui32(4, 2119154652), true); + assert_eq!(ne_ui32(4, 3002788344), true); + assert_eq!(ne_ui32(4, 3482297128), true); + assert_eq!(ne_ui32(4, 4294967294), true); + assert_eq!(ne_ui32(4, 4294967295), true); + assert_eq!(ne_ui32(2119154652, 0), true); + assert_eq!(ne_ui32(2119154652, 1), true); + assert_eq!(ne_ui32(2119154652, 2), true); + } + #[test] + fn test_535() { + assert_eq!(ne_ui32(2119154652, 3), true); + assert_eq!(ne_ui32(2119154652, 4), true); + assert_eq!(ne_ui32(2119154652, 3002788344), true); + assert_eq!(ne_ui32(2119154652, 3482297128), true); + assert_eq!(ne_ui32(2119154652, 4294967294), true); + assert_eq!(ne_ui32(2119154652, 4294967295), true); + assert_eq!(ne_ui32(3002788344, 0), true); + assert_eq!(ne_ui32(3002788344, 1), true); + assert_eq!(ne_ui32(3002788344, 2), true); + assert_eq!(ne_ui32(3002788344, 3), true); + } + #[test] + fn test_536() { + assert_eq!(ne_ui32(3002788344, 4), true); + assert_eq!(ne_ui32(3002788344, 2119154652), true); + assert_eq!(ne_ui32(3002788344, 3482297128), true); + assert_eq!(ne_ui32(3002788344, 4294967294), true); + assert_eq!(ne_ui32(3002788344, 4294967295), true); + assert_eq!(ne_ui32(3482297128, 0), true); + assert_eq!(ne_ui32(3482297128, 1), true); + assert_eq!(ne_ui32(3482297128, 2), true); + assert_eq!(ne_ui32(3482297128, 3), true); + assert_eq!(ne_ui32(3482297128, 4), true); + } + #[test] + fn test_537() { + assert_eq!(ne_ui32(3482297128, 2119154652), true); + assert_eq!(ne_ui32(3482297128, 3002788344), true); + assert_eq!(ne_ui32(3482297128, 4294967294), true); + assert_eq!(ne_ui32(3482297128, 4294967295), true); + assert_eq!(ne_ui32(4294967294, 0), true); + assert_eq!(ne_ui32(4294967294, 1), true); + assert_eq!(ne_ui32(4294967294, 2), true); + assert_eq!(ne_ui32(4294967294, 3), true); + assert_eq!(ne_ui32(4294967294, 4), true); + assert_eq!(ne_ui32(4294967294, 2119154652), true); + } + #[test] + fn test_538() { + assert_eq!(ne_ui32(4294967294, 3002788344), true); + assert_eq!(ne_ui32(4294967294, 3482297128), true); + assert_eq!(ne_ui32(4294967294, 4294967295), true); + assert_eq!(ne_ui32(4294967295, 0), true); + assert_eq!(ne_ui32(4294967295, 1), true); + assert_eq!(ne_ui32(4294967295, 2), true); + assert_eq!(ne_ui32(4294967295, 3), true); + assert_eq!(ne_ui32(4294967295, 4), true); + assert_eq!(ne_ui32(4294967295, 2119154652), true); + assert_eq!(ne_ui32(4294967295, 3002788344), true); + } + #[test] + fn test_539() { + assert_eq!(ne_ui32(4294967295, 3482297128), true); + assert_eq!(ne_ui32(4294967295, 4294967294), true); + assert_eq!(ne_ui64(0, 0), false); + assert_eq!(ne_ui64(1, 1), false); + assert_eq!(ne_ui64(2, 2), false); + assert_eq!(ne_ui64(3, 3), false); + assert_eq!(ne_ui64(4, 4), false); + assert_eq!(ne_ui64(191084152064409600, 191084152064409600), false); + assert_eq!(ne_ui64(11015955194427482112, 11015955194427482112), false); + assert_eq!(ne_ui64(16990600415051759616, 16990600415051759616), false); + } + #[test] + fn test_540() { + assert_eq!(ne_ui64(18446744073709551614, 18446744073709551614), false); + assert_eq!(ne_ui64(18446744073709551615, 18446744073709551615), false); + assert_eq!(ne_ui64(0, 1), true); + assert_eq!(ne_ui64(0, 2), true); + assert_eq!(ne_ui64(0, 3), true); + assert_eq!(ne_ui64(0, 4), true); + assert_eq!(ne_ui64(0, 191084152064409600), true); + assert_eq!(ne_ui64(0, 11015955194427482112), true); + assert_eq!(ne_ui64(0, 16990600415051759616), true); + assert_eq!(ne_ui64(0, 18446744073709551614), true); + } + #[test] + fn test_541() { + assert_eq!(ne_ui64(0, 18446744073709551615), true); + assert_eq!(ne_ui64(1, 0), true); + assert_eq!(ne_ui64(1, 2), true); + assert_eq!(ne_ui64(1, 3), true); + assert_eq!(ne_ui64(1, 4), true); + assert_eq!(ne_ui64(1, 191084152064409600), true); + assert_eq!(ne_ui64(1, 11015955194427482112), true); + assert_eq!(ne_ui64(1, 16990600415051759616), true); + assert_eq!(ne_ui64(1, 18446744073709551614), true); + assert_eq!(ne_ui64(1, 18446744073709551615), true); + } + #[test] + fn test_542() { + assert_eq!(ne_ui64(2, 0), true); + assert_eq!(ne_ui64(2, 1), true); + assert_eq!(ne_ui64(2, 3), true); + assert_eq!(ne_ui64(2, 4), true); + assert_eq!(ne_ui64(2, 191084152064409600), true); + assert_eq!(ne_ui64(2, 11015955194427482112), true); + assert_eq!(ne_ui64(2, 16990600415051759616), true); + assert_eq!(ne_ui64(2, 18446744073709551614), true); + assert_eq!(ne_ui64(2, 18446744073709551615), true); + assert_eq!(ne_ui64(3, 0), true); + } + #[test] + fn test_543() { + assert_eq!(ne_ui64(3, 1), true); + assert_eq!(ne_ui64(3, 2), true); + assert_eq!(ne_ui64(3, 4), true); + assert_eq!(ne_ui64(3, 191084152064409600), true); + assert_eq!(ne_ui64(3, 11015955194427482112), true); + assert_eq!(ne_ui64(3, 16990600415051759616), true); + assert_eq!(ne_ui64(3, 18446744073709551614), true); + assert_eq!(ne_ui64(3, 18446744073709551615), true); + assert_eq!(ne_ui64(4, 0), true); + assert_eq!(ne_ui64(4, 1), true); + } + #[test] + fn test_544() { + assert_eq!(ne_ui64(4, 2), true); + assert_eq!(ne_ui64(4, 3), true); + assert_eq!(ne_ui64(4, 191084152064409600), true); + assert_eq!(ne_ui64(4, 11015955194427482112), true); + assert_eq!(ne_ui64(4, 16990600415051759616), true); + assert_eq!(ne_ui64(4, 18446744073709551614), true); + assert_eq!(ne_ui64(4, 18446744073709551615), true); + assert_eq!(ne_ui64(191084152064409600, 0), true); + assert_eq!(ne_ui64(191084152064409600, 1), true); + assert_eq!(ne_ui64(191084152064409600, 2), true); + } + #[test] + fn test_545() { + assert_eq!(ne_ui64(191084152064409600, 3), true); + assert_eq!(ne_ui64(191084152064409600, 4), true); + assert_eq!(ne_ui64(191084152064409600, 11015955194427482112), true); + assert_eq!(ne_ui64(191084152064409600, 16990600415051759616), true); + assert_eq!(ne_ui64(191084152064409600, 18446744073709551614), true); + assert_eq!(ne_ui64(191084152064409600, 18446744073709551615), true); + assert_eq!(ne_ui64(11015955194427482112, 0), true); + assert_eq!(ne_ui64(11015955194427482112, 1), true); + assert_eq!(ne_ui64(11015955194427482112, 2), true); + assert_eq!(ne_ui64(11015955194427482112, 3), true); + } + #[test] + fn test_546() { + assert_eq!(ne_ui64(11015955194427482112, 4), true); + assert_eq!(ne_ui64(11015955194427482112, 191084152064409600), true); + assert_eq!(ne_ui64(11015955194427482112, 16990600415051759616), true); + assert_eq!(ne_ui64(11015955194427482112, 18446744073709551614), true); + assert_eq!(ne_ui64(11015955194427482112, 18446744073709551615), true); + assert_eq!(ne_ui64(16990600415051759616, 0), true); + assert_eq!(ne_ui64(16990600415051759616, 1), true); + assert_eq!(ne_ui64(16990600415051759616, 2), true); + assert_eq!(ne_ui64(16990600415051759616, 3), true); + assert_eq!(ne_ui64(16990600415051759616, 4), true); + } + #[test] + fn test_547() { + assert_eq!(ne_ui64(16990600415051759616, 191084152064409600), true); + assert_eq!(ne_ui64(16990600415051759616, 11015955194427482112), true); + assert_eq!(ne_ui64(16990600415051759616, 18446744073709551614), true); + assert_eq!(ne_ui64(16990600415051759616, 18446744073709551615), true); + assert_eq!(ne_ui64(18446744073709551614, 0), true); + assert_eq!(ne_ui64(18446744073709551614, 1), true); + assert_eq!(ne_ui64(18446744073709551614, 2), true); + assert_eq!(ne_ui64(18446744073709551614, 3), true); + assert_eq!(ne_ui64(18446744073709551614, 4), true); + assert_eq!(ne_ui64(18446744073709551614, 191084152064409600), true); + } + #[test] + fn test_548() { + assert_eq!(ne_ui64(18446744073709551614, 11015955194427482112), true); + assert_eq!(ne_ui64(18446744073709551614, 16990600415051759616), true); + assert_eq!(ne_ui64(18446744073709551614, 18446744073709551615), true); + assert_eq!(ne_ui64(18446744073709551615, 0), true); + assert_eq!(ne_ui64(18446744073709551615, 1), true); + assert_eq!(ne_ui64(18446744073709551615, 2), true); + assert_eq!(ne_ui64(18446744073709551615, 3), true); + assert_eq!(ne_ui64(18446744073709551615, 4), true); + assert_eq!(ne_ui64(18446744073709551615, 191084152064409600), true); + assert_eq!(ne_ui64(18446744073709551615, 11015955194427482112), true); + } + #[test] + fn test_549() { + assert_eq!(ne_ui64(18446744073709551615, 16990600415051759616), true); + assert_eq!(ne_ui64(18446744073709551615, 18446744073709551614), true); + assert_eq!(ne_ui8(0, 0), false); + assert_eq!(ne_ui8(1, 1), false); + assert_eq!(ne_ui8(2, 2), false); + assert_eq!(ne_ui8(3, 3), false); + assert_eq!(ne_ui8(4, 4), false); + assert_eq!(ne_ui8(72, 72), false); + assert_eq!(ne_ui8(100, 100), false); + assert_eq!(ne_ui8(162, 162), false); + } + #[test] + fn test_550() { + assert_eq!(ne_ui8(254, 254), false); + assert_eq!(ne_ui8(255, 255), false); + assert_eq!(ne_ui8(0, 1), true); + assert_eq!(ne_ui8(0, 2), true); + assert_eq!(ne_ui8(0, 3), true); + assert_eq!(ne_ui8(0, 4), true); + assert_eq!(ne_ui8(0, 72), true); + assert_eq!(ne_ui8(0, 100), true); + assert_eq!(ne_ui8(0, 162), true); + assert_eq!(ne_ui8(0, 254), true); + } + #[test] + fn test_551() { + assert_eq!(ne_ui8(0, 255), true); + assert_eq!(ne_ui8(1, 0), true); + assert_eq!(ne_ui8(1, 2), true); + assert_eq!(ne_ui8(1, 3), true); + assert_eq!(ne_ui8(1, 4), true); + assert_eq!(ne_ui8(1, 72), true); + assert_eq!(ne_ui8(1, 100), true); + assert_eq!(ne_ui8(1, 162), true); + assert_eq!(ne_ui8(1, 254), true); + assert_eq!(ne_ui8(1, 255), true); + } + #[test] + fn test_552() { + assert_eq!(ne_ui8(2, 0), true); + assert_eq!(ne_ui8(2, 1), true); + assert_eq!(ne_ui8(2, 3), true); + assert_eq!(ne_ui8(2, 4), true); + assert_eq!(ne_ui8(2, 72), true); + assert_eq!(ne_ui8(2, 100), true); + assert_eq!(ne_ui8(2, 162), true); + assert_eq!(ne_ui8(2, 254), true); + assert_eq!(ne_ui8(2, 255), true); + assert_eq!(ne_ui8(3, 0), true); + } + #[test] + fn test_553() { + assert_eq!(ne_ui8(3, 1), true); + assert_eq!(ne_ui8(3, 2), true); + assert_eq!(ne_ui8(3, 4), true); + assert_eq!(ne_ui8(3, 72), true); + assert_eq!(ne_ui8(3, 100), true); + assert_eq!(ne_ui8(3, 162), true); + assert_eq!(ne_ui8(3, 254), true); + assert_eq!(ne_ui8(3, 255), true); + assert_eq!(ne_ui8(4, 0), true); + assert_eq!(ne_ui8(4, 1), true); + } + #[test] + fn test_554() { + assert_eq!(ne_ui8(4, 2), true); + assert_eq!(ne_ui8(4, 3), true); + assert_eq!(ne_ui8(4, 72), true); + assert_eq!(ne_ui8(4, 100), true); + assert_eq!(ne_ui8(4, 162), true); + assert_eq!(ne_ui8(4, 254), true); + assert_eq!(ne_ui8(4, 255), true); + assert_eq!(ne_ui8(72, 0), true); + assert_eq!(ne_ui8(72, 1), true); + assert_eq!(ne_ui8(72, 2), true); + } + #[test] + fn test_555() { + assert_eq!(ne_ui8(72, 3), true); + assert_eq!(ne_ui8(72, 4), true); + assert_eq!(ne_ui8(72, 100), true); + assert_eq!(ne_ui8(72, 162), true); + assert_eq!(ne_ui8(72, 254), true); + assert_eq!(ne_ui8(72, 255), true); + assert_eq!(ne_ui8(100, 0), true); + assert_eq!(ne_ui8(100, 1), true); + assert_eq!(ne_ui8(100, 2), true); + assert_eq!(ne_ui8(100, 3), true); + } + #[test] + fn test_556() { + assert_eq!(ne_ui8(100, 4), true); + assert_eq!(ne_ui8(100, 72), true); + assert_eq!(ne_ui8(100, 162), true); + assert_eq!(ne_ui8(100, 254), true); + assert_eq!(ne_ui8(100, 255), true); + assert_eq!(ne_ui8(162, 0), true); + assert_eq!(ne_ui8(162, 1), true); + assert_eq!(ne_ui8(162, 2), true); + assert_eq!(ne_ui8(162, 3), true); + assert_eq!(ne_ui8(162, 4), true); + } + #[test] + fn test_557() { + assert_eq!(ne_ui8(162, 72), true); + assert_eq!(ne_ui8(162, 100), true); + assert_eq!(ne_ui8(162, 254), true); + assert_eq!(ne_ui8(162, 255), true); + assert_eq!(ne_ui8(254, 0), true); + assert_eq!(ne_ui8(254, 1), true); + assert_eq!(ne_ui8(254, 2), true); + assert_eq!(ne_ui8(254, 3), true); + assert_eq!(ne_ui8(254, 4), true); + assert_eq!(ne_ui8(254, 72), true); + } + #[test] + fn test_558() { + assert_eq!(ne_ui8(254, 100), true); + assert_eq!(ne_ui8(254, 162), true); + assert_eq!(ne_ui8(254, 255), true); + assert_eq!(ne_ui8(255, 0), true); + assert_eq!(ne_ui8(255, 1), true); + assert_eq!(ne_ui8(255, 2), true); + assert_eq!(ne_ui8(255, 3), true); + assert_eq!(ne_ui8(255, 4), true); + assert_eq!(ne_ui8(255, 72), true); + assert_eq!(ne_ui8(255, 100), true); + } + #[test] + fn test_559() { + assert_eq!(ne_ui8(255, 162), true); + assert_eq!(ne_ui8(255, 254), true); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/bool-ops.mlir b/arc-mlir/src/tests/arc-to-rust/bool-ops.mlir index 3b5a9c78a..57d7c9921 100644 --- a/arc-mlir/src/tests/arc-to-rust/bool-ops.mlir +++ b/arc-mlir/src/tests/arc-to-rust/bool-ops.mlir @@ -15,11 +15,11 @@ module @toplevel { %0 = arith.xori %arg0, %arg1 : i1 return %0 : i1 } - func.func @eq_i1(%a : i1, %b : i1) -> i1 attributes {rust.declare} { + func.func @eq_i1(%a : i1, %b : i1) -> i1 { %r = arith.cmpi "eq", %a, %b : i1 return %r : i1 } - func.func @ne_i1(%a : i1, %b : i1) -> i1 attributes {rust.declare} { + func.func @ne_i1(%a : i1, %b : i1) -> i1 { %r = arith.cmpi "ne", %a, %b : i1 return %r : i1 } diff --git a/arc-mlir/src/tests/arc-to-rust/bool-ops.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/bool-ops.mlir.rust-tests index 62f30c9b6..61a9a27fd 100644 --- a/arc-mlir/src/tests/arc-to-rust/bool-ops.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/bool-ops.mlir.rust-tests @@ -1,24 +1,23 @@ #[cfg(test)] mod tests { - use crate::toplevel::*; - #[rewrite(main)] - #[test] - fn it_works() { - assert_eq!(call!(and_i1(true, true)), true); - assert_eq!(call!(or_i1(false, true)), true); - assert_eq!(call!(xor_i1(true, true)), false); - assert_eq!(call!(eq_i1(true, true)), true); - assert_eq!(call!(eq_i1(false, true)), false); - assert_eq!(call!(eq_i1(true, false)), false); - assert_eq!(call!(eq_i1(false, false)), true); - assert_eq!(call!(ne_i1(true, true)), false); - assert_eq!(call!(ne_i1(false, true)), true); - assert_eq!(call!(ne_i1(true, false)), true); - assert_eq!(call!(ne_i1(false, false)), false); - assert_eq!(call!(not_i1(false)), true); - assert_eq!(call!(not_i1(true)), false); - assert_eq!(call!(not_select_i1(false)), true); - assert_eq!(call!(not_select_i1(true)), false); - } + use crate::toplevel::*; + #[test] + fn it_works() { + assert_eq!(and_i1(true, true), true); + assert_eq!(or_i1(false, true), true); + assert_eq!(xor_i1(true, true), false); + assert_eq!(eq_i1(true, true), true); + assert_eq!(eq_i1(false, true), false); + assert_eq!(eq_i1(true, false), false); + assert_eq!(eq_i1(false, false), true); + assert_eq!(ne_i1(true, true), false); + assert_eq!(ne_i1(false, true), true); + assert_eq!(ne_i1(true, false), true); + assert_eq!(ne_i1(false, false), false); + assert_eq!(not_i1(false), true); + assert_eq!(not_i1(true), false); + assert_eq!(not_select_i1(false), true); + assert_eq!(not_select_i1(true), false); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/calls-streams.mlir b/arc-mlir/src/tests/arc-to-rust/calls-streams.mlir deleted file mode 100644 index 82254d42a..000000000 --- a/arc-mlir/src/tests/arc-to-rust/calls-streams.mlir +++ /dev/null @@ -1,17 +0,0 @@ -// XFAIL: * -// RUN: arc-mlir-rust-test %t %s -rustinclude %s.rust-tests -// RUN: arc-mlir-rust-test %t-canon %s -rustinclude %s.rust-tests -canonicalize -// RUN: arc-mlir-rust-test %t-roundtrip-scf %s -rustinclude %s.rust-tests -canonicalize -remove-scf -canonicalize -to-scf -canonicalize - -module @toplevel { - - func.func private @crate_Identity() -> ((!arc.stream.source>) -> !arc.stream.source>) - - func.func @crate_main(%input_0: !arc.stream.source>) -> !arc.stream.source> { - %x_8 = constant @crate_Identity : () -> ((!arc.stream.source>) -> !arc.stream.source>) - %x_9 = call_indirect %x_8() : () -> ((!arc.stream.source>) -> !arc.stream.source>) - %x_A = call_indirect %x_9(%input_0) : (!arc.stream.source>) -> !arc.stream.source> - return %x_A : !arc.stream.source> - } - -} diff --git a/arc-mlir/src/tests/arc-to-rust/calls-streams.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/calls-streams.mlir.rust-tests deleted file mode 100644 index cdfd9dc21..000000000 --- a/arc-mlir/src/tests/arc-to-rust/calls-streams.mlir.rust-tests +++ /dev/null @@ -1,17 +0,0 @@ -use arc_runtime::data::channels::local::multicast::Pullable; -use arc_runtime::data::channels::local::multicast::Pushable; - -#[rewrite] -pub fn an_external_fun2(i : Pullable) -> Pullable { - return i; -} - -#[rewrite] -pub fn crate_Identity() -> function!((Pullable) -> Pullable) { - return an_external_fun2; -} - -#[cfg(test)] -mod tests { - use crate::toplevel::*; -} diff --git a/arc-mlir/src/tests/arc-to-rust/calls.mlir b/arc-mlir/src/tests/arc-to-rust/calls.mlir index 4d8adf8c9..23c949b73 100644 --- a/arc-mlir/src/tests/arc-to-rust/calls.mlir +++ b/arc-mlir/src/tests/arc-to-rust/calls.mlir @@ -4,39 +4,38 @@ module @toplevel { - func.func @callee_void_void() -> () attributes { rust.declare } { + func.func @callee_void_void() -> () { return } - func.func @callee_si32_si32(%in : si32) -> si32 attributes { rust.declare } { + func.func @callee_si32_si32(%in : si32) -> si32 { return %in : si32 } - func.func @callee_si32_x2_si32(%a : si32, %b : si32) -> si32 attributes { rust.declare } { + func.func @callee_si32_x2_si32(%a : si32, %b : si32) -> si32 { return %b : si32 } func.func @callee_struct(%in : !arc.struct) - -> !arc.struct attributes { rust.declare } { + -> !arc.struct { return %in : !arc.struct } - func.func @caller0() -> () attributes { rust.declare } { + func.func @caller0() -> () { call @callee_void_void() : () -> () return } - func.func @caller1(%in : si32) -> (si32) attributes { rust.declare } { + func.func @caller1(%in : si32) -> (si32) { %r = call @callee_si32_si32(%in) : (si32) -> si32 return %r : si32 } - func.func @caller2(%in0 : si32, %in1 : si32) -> (si32) attributes { rust.declare } { + func.func @caller2(%in0 : si32, %in1 : si32) -> (si32) { %r = call @callee_si32_x2_si32(%in0, %in1) : (si32,si32) -> si32 return %r : si32 } - func.func @caller_struct(%in : !arc.struct) -> !arc.struct { %r = call @callee_struct(%in) : (!arc.struct) @@ -45,12 +44,12 @@ module @toplevel { } func.func @enumfun(%in : !arc.enum) - -> !arc.enum attributes { rust.declare } { + -> !arc.enum { return %in : !arc.enum } func.func @indir_call1(%in : !arc.enum) - -> !arc.enum attributes { rust.declare } { + -> !arc.enum { %f = constant @enumfun : (!arc.enum) -> !arc.enum %r = call_indirect %f(%in) : (!arc.enum) @@ -58,52 +57,35 @@ module @toplevel { return %r : !arc.enum } - // func.func @tensorfun(%in : tensor<5xi32>) - // -> tensor<5xi32> attributes { rust.declare } { - // return %in : tensor<5xi32> - // } - - // func.func @indir_call2(%in : tensor<5xi32>) - // -> tensor<5xi32> attributes { rust.declare } { - // %f = constant @tensorfun : (tensor<5xi32>) - // -> tensor<5xi32> - // %r = call_indirect %f(%in) : (tensor<5xi32>) - // -> tensor<5xi32> - // return %r : tensor<5xi32> - // } - - func.func private @an_external_fun0(si32) -> f32 attributes { rust.declare } - - func.func @call_external0(%in : si32) -> f32 attributes { rust.declare } { + func.func private @an_external_fun0(si32) -> f32 + func.func @call_external0(%in : si32) -> f32 { %r = call @an_external_fun0(%in) : (si32) -> f32 return %r : f32 } - func.func @call_external_indirect0(%in : si32) -> f32 attributes { rust.declare } { + func.func @call_external_indirect0(%in : si32) -> f32 { %f = constant @an_external_fun0 : (si32) -> f32 %r = call_indirect %f(%in) : (si32) -> f32 return %r : f32 } - // TODO: Try to find a way to support returning functions into Arc-Lang - // func private @an_external_fun1() -> ((si32) -> si32) attributes { rust.declare } - - // func.func @call_external1(%in : si32) -> si32 attributes { rust.declare } { - // %f = call @an_external_fun1() : () -> ((si32) -> si32) - // %r = call_indirect %f(%in) : (si32) -> si32 - // return %r : si32 - // } + func.func private @an_external_fun1() -> ((si32) -> si32) + func.func @call_external1(%in : si32) -> si32 { + %f = call @an_external_fun1() : () -> ((si32) -> si32) + %r = call_indirect %f(%in) : (si32) -> si32 + return %r : si32 + } - // func.func @call_external_indirect1(%in : si32) -> si32 attributes { rust.declare } { - // %thunk = constant @an_external_fun1 : () -> ((si32) -> si32) - // %f = call_indirect %thunk() : () -> ((si32) -> si32) - // %r = call_indirect %f(%in) : (si32) -> si32 - // return %r : si32 - // } + func.func @call_external_indirect1(%in : si32) -> si32 { + %thunk = constant @an_external_fun1 : () -> ((si32) -> si32) + %f = call_indirect %thunk() : () -> ((si32) -> si32) + %r = call_indirect %f(%in) : (si32) -> si32 + return %r : si32 + } - func.func private @an_external_fun_with_other_name0(si32) -> si32 attributes { rust.declare, "arc.rust_name" = "the_name_on_the_rust_side" } + func.func private @an_external_fun_with_other_name0(si32) -> si32 attributes { "arc.rust_name" = "the_name_on_the_rust_side" } - func.func @call_external2(%in : si32) -> si32 attributes { rust.declare } { + func.func @call_external2(%in : si32) -> si32 { %r = call @an_external_fun_with_other_name0(%in) : (si32) -> si32 return %r : si32 } @@ -113,19 +95,8 @@ module @toplevel { return %in : si32 } - func.func @call_renamed_local(%in : si32) -> si32 attributes { rust.declare } { + func.func @call_renamed_local(%in : si32) -> si32 { %r = call @a_function_called_something_else_in_rust(%in) : (si32) -> si32 return %r : si32 } - - // func private @an_external_fun3(si32) -> si32 attributes { rust.declare } - - // Async functions - func.func private @an_external_async_fun() -> si32 attributes { rust.async } - - func.func @call_external_async() -> si32 attributes { rust.declare, rust.async } { - %r = call @an_external_async_fun() : () -> si32 - return %r : si32 - } - } diff --git a/arc-mlir/src/tests/arc-to-rust/calls.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/calls.mlir.rust-tests index 57b7cb30c..1d888275c 100644 --- a/arc-mlir/src/tests/arc-to-rust/calls.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/calls.mlir.rust-tests @@ -1,37 +1,25 @@ -#[rewrite] pub fn an_external_fun0(i: i32) -> f32 { - return 3.14; + return 3.14; } -#[rewrite] pub fn an_external_fun3(i: i32) -> i32 { - return i; + return i; } -// TODO: Try to find a way to support returning functions into Arc-Lang -// #[rewrite] -// pub fn an_external_fun1() -> function!((i32) -> i32) { -// return function!(an_external_fun3); -// } - -#[rewrite] -pub fn the_name_on_the_rust_side(i: i32) -> i32 { - return i; +pub fn an_external_fun1() -> fn(i32) -> i32 { + return an_external_fun3; } -#[rewrite] -pub async fn an_external_async_fun() -> i32 { - return 1; +pub fn the_name_on_the_rust_side(i: i32) -> i32 { + return i; } use super::*; -#[rewrite(main)] #[test] fn test() { - assert_eq!(call!(callee_si32_si32(17)), 17); - assert_eq!(call!(caller1(4711)), 4711); - assert_eq!(call!(call_external2(13)), 13); - assert_eq!(call!(call_renamed_local(14)), 14); - assert_eq!(call!(defined_in_arc(15)), 15); - assert_eq!(block_on(call!(call_external_async())), 1); + assert_eq!(callee_si32_si32(17), 17); + assert_eq!(caller1(4711), 4711); + assert_eq!(call_external2(13), 13); + assert_eq!(call_renamed_local(14), 14); + assert_eq!(defined_in_arc(15), 15); } diff --git a/arc-mlir/src/tests/arc-to-rust/enums.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/enums.mlir.rust-tests index 5b8036712..a07460991 100644 --- a/arc-mlir/src/tests/arc-to-rust/enums.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/enums.mlir.rust-tests @@ -1,25 +1,24 @@ // Empty #[cfg(test)] mod tests { - use crate::toplevel::*; - #[rewrite(main)] - #[test] - fn it_works() { - assert_eq!(is!(Enum1ai321bf32End::a, call!(ok0())), true); - assert_eq!(is!(Enum1ai321bf32End::b, call!(ok1())), true); - assert_eq!(is!(Enum1ai32End::a, call!(ok2())), true); - assert_eq!(is!(Enum1ai321bEnum1ai32EndEnd::a, call!(ok3())), true); - assert_eq!(is!(Enum1ai321bEnum1ai32EndEnd::b, call!(ok4())), true); - let c0 : i32 = 17; - let tmp0 :Enum1ai321bf32End = enwrap!(Enum1ai321bf32End::a, c0); - let c1 : f32 = 17.0; - let tmp1 : Enum1ai321bf32End = enwrap!(Enum1ai321bf32End::b, c1); - assert_eq!(call!(access0(tmp0)), c0); - assert_eq!(call!(access1(tmp1)), c1); + use crate::toplevel::*; + #[test] + fn it_works() { + assert_eq!(matches!(ok0(), Enum1ai321bf32End::a(_)), true); + assert_eq!(matches!(ok1(), Enum1ai321bf32End::b(_)), true); + assert_eq!(matches!(ok2(), Enum1ai32End::a(_)), true); + assert_eq!(matches!(ok3(), Enum1ai321bEnum1ai32EndEnd::a(_)), true); + assert_eq!(matches!(ok4(), Enum1ai321bEnum1ai32EndEnd::b(_)), true); + let c0: i32 = 17; + let tmp0: Enum1ai321bf32End = Enum1ai321bf32End::a(c0); + let c1: f32 = 17.0; + let tmp1: Enum1ai321bf32End = Enum1ai321bf32End::b(c1); + assert_eq!(access0(tmp0), c0); + assert_eq!(access1(tmp1), c1); - let c2 : Enum1ai321bf32End = enwrap!(Enum1ai321bf32End::b, 3.14); - let c3 : Enum1ai321bf32End = enwrap!(Enum1ai321bf32End::a, 3); - assert_eq!(call!(check0(c2)), false); - assert_eq!(call!(check0(c3)), true); - } + let c2: Enum1ai321bf32End = Enum1ai321bf32End::b(3.14); + let c3: Enum1ai321bf32End = Enum1ai321bf32End::a(3); + assert_eq!(check0(c2), false); + assert_eq!(check0(c3), true); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/float-tensor-arith.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/float-tensor-arith.mlir.rust-tests deleted file mode 100644 index a11ac400b..000000000 --- a/arc-mlir/src/tests/arc-to-rust/float-tensor-arith.mlir.rust-tests +++ /dev/null @@ -1,59 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::arctorustfloattensorarith::*; - use ndarray::{Array,Dim,Ix}; - use std::rc::Rc; - - #[rewrite(main)] - #[test] - fn testf32() { - let a32:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1.0, 2.0, 3.0, 4.0]).unwrap()); - let b32:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5.0, 6.0, 7.0, 8.0]).unwrap()); - assert_eq!(*addf_tensor2x2xf32(Rc::clone(&a32), - Rc::clone(&b32)), - &*a32 + &*b32); - assert_eq!(*subf_tensor2x2xf32(Rc::clone(&a32), - Rc::clone(&b32)), - &*a32 - &*b32); - assert_eq!(*mulf_tensor2x2xf32(Rc::clone(&a32), - Rc::clone(&b32)), - &*a32 * &*b32); - assert_eq!(*divf_tensor2x2xf32(Rc::clone(&a32), - Rc::clone(&b32)), - &*a32 / &*b32); - assert_eq!(*remf_tensor2x2xf32(Rc::clone(&a32), - Rc::clone(&b32)), - &*a32 % &*b32); - } - -#[rewrite(main)] - #[test] - fn testf64() { - let a64:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1.0, 2.0, 3.0, 4.0]).unwrap()); - let b64:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5.0, 6.0, 7.0, 8.0]).unwrap()); - assert_eq!(*addf_tensor2x2xf64(Rc::clone(&a64), - Rc::clone(&b64)), - &*a64 + &*b64); - assert_eq!(*subf_tensor2x2xf64(Rc::clone(&a64), - Rc::clone(&b64)), - &*a64 - &*b64); - assert_eq!(*mulf_tensor2x2xf64(Rc::clone(&a64), - Rc::clone(&b64)), - &*a64 * &*b64); - assert_eq!(*divf_tensor2x2xf64(Rc::clone(&a64), - Rc::clone(&b64)), - &*a64 / &*b64); - assert_eq!(*remf_tensor2x2xf64(Rc::clone(&a64), - Rc::clone(&b64)), - &*a64 % &*b64); - } - -} diff --git a/arc-mlir/src/tests/arc-to-rust/foreign-calls.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/foreign-calls.mlir.rust-tests index be8dcaeed..d723f6f83 100644 --- a/arc-mlir/src/tests/arc-to-rust/foreign-calls.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/foreign-calls.mlir.rust-tests @@ -1,17 +1,13 @@ -#[rewrite] pub fn callee_void_void() {} -#[rewrite] pub fn callee_si32_si32(x: i32) -> i32 { - return x + return x; } -#[rewrite] -pub fn callee_si32_x2_si32(a : i32, b : i32) -> i32 { - return a + b +pub fn callee_si32_x2_si32(a: i32, b: i32) -> i32 { + return a + b; } -#[rewrite] -pub fn callee_struct(x : Struct3foo3i32End) -> Struct3foo3i32End { - return x +pub fn callee_struct(x: Struct3foo3i32End) -> Struct3foo3i32End { + return x; } diff --git a/arc-mlir/src/tests/arc-to-rust/func-arguments.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/func-arguments.mlir.rust-tests index fa7bd905d..fcbf90aaf 100644 --- a/arc-mlir/src/tests/arc-to-rust/func-arguments.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/func-arguments.mlir.rust-tests @@ -1,11 +1,10 @@ #[cfg(test)] mod tests { -use crate::arctorustfuncarguments::*; -#[rewrite(main)] -#[test] - fn it_works() { - assert_eq!(call!(zero_args()), 4711); - assert_eq!(call!(one_arg(4711)), 4711); - assert_eq!(call!(two_args(4712, 4711)), 4711); - } + use crate::arctorustfuncarguments::*; + #[test] + fn it_works() { + assert_eq!(zero_args(), 4711); + assert_eq!(one_arg(4711), 4711); + assert_eq!(two_args(4712, 4711), 4711); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/ifs.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/ifs.mlir.rust-tests index d14170b60..efa1c7fb4 100644 --- a/arc-mlir/src/tests/arc-to-rust/ifs.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/ifs.mlir.rust-tests @@ -1,18 +1,17 @@ #[cfg(test)] mod tests { - use crate::arctorustifs::*; - #[rewrite(main)] - #[test] - fn test() { - assert_eq!(call!(test_0()), 65); - assert_eq!(call!(test_1(true, 0, 1)), 0); - assert_eq!(call!(test_1(false, 0, 1)), 1); - assert_eq!(call!(test_1(true, 1, 0)), 1); - assert_eq!(call!(test_1(false, 1, 0)), 0); + use crate::arctorustifs::*; + #[test] + fn test() { + assert_eq!(test_0(), 65); + assert_eq!(test_1(true, 0, 1), 0); + assert_eq!(test_1(false, 0, 1), 1); + assert_eq!(test_1(true, 1, 0), 1); + assert_eq!(test_1(false, 1, 0), 0); - assert_eq!(call!(test_3(true, 0, 1)), 0); - assert_eq!(call!(test_3(false, 0, 1)), 1); - assert_eq!(call!(test_3(true, 1, 0)), 1); - assert_eq!(call!(test_3(false, 1, 0)), 0); - } + assert_eq!(test_3(true, 0, 1), 0); + assert_eq!(test_3(false, 0, 1), 1); + assert_eq!(test_3(true, 1, 0), 1); + assert_eq!(test_3(false, 1, 0), 0); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/int-arith.mlir b/arc-mlir/src/tests/arc-to-rust/int-arith.mlir index d4becd181..8511adadb 100644 --- a/arc-mlir/src/tests/arc-to-rust/int-arith.mlir +++ b/arc-mlir/src/tests/arc-to-rust/int-arith.mlir @@ -2,204 +2,203 @@ // RUN: arc-mlir-rust-test %t-roundtrip-scf %s -rustinclude %s.rust-tests -canonicalize -remove-scf -canonicalize -to-scf -canonicalize module @arctorustintarith { -func.func @addi_ui8(%a : ui8, %b : ui8) -> ui8 { - %c = arc.addi %a, %b : ui8 - return %c : ui8 -} - -func.func @subi_ui8(%a : ui8, %b : ui8) -> ui8 { - %c = arc.subi %a, %b : ui8 - return %c : ui8 -} - -func.func @muli_ui8(%a : ui8, %b : ui8) -> ui8 { - %c = arc.muli %a, %b : ui8 - return %c : ui8 -} - -func.func @divi_ui8(%a : ui8, %b : ui8) -> ui8 { - %c = arc.divi %a, %b : ui8 - return %c : ui8 -} - -func.func @remi_ui8(%a : ui8, %b : ui8) -> ui8 { - %c = arc.remi %a, %b : ui8 - return %c : ui8 -} - -func.func @addi_ui16(%a : ui16, %b : ui16) -> ui16 { - %c = arc.addi %a, %b : ui16 - return %c : ui16 -} - -func.func @subi_ui16(%a : ui16, %b : ui16) -> ui16 { - %c = arc.subi %a, %b : ui16 - return %c : ui16 -} - -func.func @muli_ui16(%a : ui16, %b : ui16) -> ui16 { - %c = arc.muli %a, %b : ui16 - return %c : ui16 -} - -func.func @divi_ui16(%a : ui16, %b : ui16) -> ui16 { - %c = arc.divi %a, %b : ui16 - return %c : ui16 -} - -func.func @remi_ui16(%a : ui16, %b : ui16) -> ui16 { - %c = arc.remi %a, %b : ui16 - return %c : ui16 -} - -func.func @addi_ui32(%a : ui32, %b : ui32) -> ui32 { - %c = arc.addi %a, %b : ui32 - return %c : ui32 -} - -func.func @subi_ui32(%a : ui32, %b : ui32) -> ui32 { - %c = arc.subi %a, %b : ui32 - return %c : ui32 -} - -func.func @muli_ui32(%a : ui32, %b : ui32) -> ui32 { - %c = arc.muli %a, %b : ui32 - return %c : ui32 -} - -func.func @divi_ui32(%a : ui32, %b : ui32) -> ui32 { - %c = arc.divi %a, %b : ui32 - return %c : ui32 -} - -func.func @remi_ui32(%a : ui32, %b : ui32) -> ui32 { - %c = arc.remi %a, %b : ui32 - return %c : ui32 -} - -func.func @addi_ui64(%a : ui64, %b : ui64) -> ui64 { - %c = arc.addi %a, %b : ui64 - return %c : ui64 -} - -func.func @subi_ui64(%a : ui64, %b : ui64) -> ui64 { - %c = arc.subi %a, %b : ui64 - return %c : ui64 -} - -func.func @muli_ui64(%a : ui64, %b : ui64) -> ui64 { - %c = arc.muli %a, %b : ui64 - return %c : ui64 -} - -func.func @divi_ui64(%a : ui64, %b : ui64) -> ui64 { - %c = arc.divi %a, %b : ui64 - return %c : ui64 -} - -func.func @remi_ui64(%a : ui64, %b : ui64) -> ui64 { - %c = arc.remi %a, %b : ui64 - return %c : ui64 -} - -func.func @addi_si8(%a : si8, %b : si8) -> si8 { - %c = arc.addi %a, %b : si8 - return %c : si8 -} - -func.func @subi_si8(%a : si8, %b : si8) -> si8 { - %c = arc.subi %a, %b : si8 - return %c : si8 -} - -func.func @muli_si8(%a : si8, %b : si8) -> si8 { - %c = arc.muli %a, %b : si8 - return %c : si8 -} - -func.func @divi_si8(%a : si8, %b : si8) -> si8 { - %c = arc.divi %a, %b : si8 - return %c : si8 -} - -func.func @remi_si8(%a : si8, %b : si8) -> si8 { - %c = arc.remi %a, %b : si8 - return %c : si8 -} - -func.func @addi_si16(%a : si16, %b : si16) -> si16 { - %c = arc.addi %a, %b : si16 - return %c : si16 -} - -func.func @subi_si16(%a : si16, %b : si16) -> si16 { - %c = arc.subi %a, %b : si16 - return %c : si16 -} - -func.func @muli_si16(%a : si16, %b : si16) -> si16 { - %c = arc.muli %a, %b : si16 - return %c : si16 -} - -func.func @divi_si16(%a : si16, %b : si16) -> si16 { - %c = arc.divi %a, %b : si16 - return %c : si16 -} - -func.func @remi_si16(%a : si16, %b : si16) -> si16 { - %c = arc.remi %a, %b : si16 - return %c : si16 -} - -func.func @addi_si32(%a : si32, %b : si32) -> si32 { - %c = arc.addi %a, %b : si32 - return %c : si32 -} - -func.func @subi_si32(%a : si32, %b : si32) -> si32 { - %c = arc.subi %a, %b : si32 - return %c : si32 -} - -func.func @muli_si32(%a : si32, %b : si32) -> si32 { - %c = arc.muli %a, %b : si32 - return %c : si32 -} - -func.func @divi_si32(%a : si32, %b : si32) -> si32 { - %c = arc.divi %a, %b : si32 - return %c : si32 -} - -func.func @remi_si32(%a : si32, %b : si32) -> si32 { - %c = arc.remi %a, %b : si32 - return %c : si32 -} - -func.func @addi_si64(%a : si64, %b : si64) -> si64 { - %c = arc.addi %a, %b : si64 - return %c : si64 -} - -func.func @subi_si64(%a : si64, %b : si64) -> si64 { - %c = arc.subi %a, %b : si64 - return %c : si64 -} - -func.func @muli_si64(%a : si64, %b : si64) -> si64 { - %c = arc.muli %a, %b : si64 - return %c : si64 -} - -func.func @divi_si64(%a : si64, %b : si64) -> si64 { - %c = arc.divi %a, %b : si64 - return %c : si64 -} - -func.func @remi_si64(%a : si64, %b : si64) -> si64 { - %c = arc.remi %a, %b : si64 - return %c : si64 -} - + func.func @addi_ui8(%a : ui8, %b : ui8) -> ui8 { + %c = arc.addi %a, %b : ui8 + return %c : ui8 + } + + func.func @subi_ui8(%a : ui8, %b : ui8) -> ui8 { + %c = arc.subi %a, %b : ui8 + return %c : ui8 + } + + func.func @muli_ui8(%a : ui8, %b : ui8) -> ui8 { + %c = arc.muli %a, %b : ui8 + return %c : ui8 + } + + func.func @divi_ui8(%a : ui8, %b : ui8) -> ui8 { + %c = arc.divi %a, %b : ui8 + return %c : ui8 + } + + func.func @remi_ui8(%a : ui8, %b : ui8) -> ui8 { + %c = arc.remi %a, %b : ui8 + return %c : ui8 + } + + func.func @addi_ui16(%a : ui16, %b : ui16) -> ui16 { + %c = arc.addi %a, %b : ui16 + return %c : ui16 + } + + func.func @subi_ui16(%a : ui16, %b : ui16) -> ui16 { + %c = arc.subi %a, %b : ui16 + return %c : ui16 + } + + func.func @muli_ui16(%a : ui16, %b : ui16) -> ui16 { + %c = arc.muli %a, %b : ui16 + return %c : ui16 + } + + func.func @divi_ui16(%a : ui16, %b : ui16) -> ui16 { + %c = arc.divi %a, %b : ui16 + return %c : ui16 + } + + func.func @remi_ui16(%a : ui16, %b : ui16) -> ui16 { + %c = arc.remi %a, %b : ui16 + return %c : ui16 + } + + func.func @addi_ui32(%a : ui32, %b : ui32) -> ui32 { + %c = arc.addi %a, %b : ui32 + return %c : ui32 + } + + func.func @subi_ui32(%a : ui32, %b : ui32) -> ui32 { + %c = arc.subi %a, %b : ui32 + return %c : ui32 + } + + func.func @muli_ui32(%a : ui32, %b : ui32) -> ui32 { + %c = arc.muli %a, %b : ui32 + return %c : ui32 + } + + func.func @divi_ui32(%a : ui32, %b : ui32) -> ui32 { + %c = arc.divi %a, %b : ui32 + return %c : ui32 + } + + func.func @remi_ui32(%a : ui32, %b : ui32) -> ui32 { + %c = arc.remi %a, %b : ui32 + return %c : ui32 + } + + func.func @addi_ui64(%a : ui64, %b : ui64) -> ui64 { + %c = arc.addi %a, %b : ui64 + return %c : ui64 + } + + func.func @subi_ui64(%a : ui64, %b : ui64) -> ui64 { + %c = arc.subi %a, %b : ui64 + return %c : ui64 + } + + func.func @muli_ui64(%a : ui64, %b : ui64) -> ui64 { + %c = arc.muli %a, %b : ui64 + return %c : ui64 + } + + func.func @divi_ui64(%a : ui64, %b : ui64) -> ui64 { + %c = arc.divi %a, %b : ui64 + return %c : ui64 + } + + func.func @remi_ui64(%a : ui64, %b : ui64) -> ui64 { + %c = arc.remi %a, %b : ui64 + return %c : ui64 + } + + func.func @addi_si8(%a : si8, %b : si8) -> si8 { + %c = arc.addi %a, %b : si8 + return %c : si8 + } + + func.func @subi_si8(%a : si8, %b : si8) -> si8 { + %c = arc.subi %a, %b : si8 + return %c : si8 + } + + func.func @muli_si8(%a : si8, %b : si8) -> si8 { + %c = arc.muli %a, %b : si8 + return %c : si8 + } + + func.func @divi_si8(%a : si8, %b : si8) -> si8 { + %c = arc.divi %a, %b : si8 + return %c : si8 + } + + func.func @remi_si8(%a : si8, %b : si8) -> si8 { + %c = arc.remi %a, %b : si8 + return %c : si8 + } + + func.func @addi_si16(%a : si16, %b : si16) -> si16 { + %c = arc.addi %a, %b : si16 + return %c : si16 + } + + func.func @subi_si16(%a : si16, %b : si16) -> si16 { + %c = arc.subi %a, %b : si16 + return %c : si16 + } + + func.func @muli_si16(%a : si16, %b : si16) -> si16 { + %c = arc.muli %a, %b : si16 + return %c : si16 + } + + func.func @divi_si16(%a : si16, %b : si16) -> si16 { + %c = arc.divi %a, %b : si16 + return %c : si16 + } + + func.func @remi_si16(%a : si16, %b : si16) -> si16 { + %c = arc.remi %a, %b : si16 + return %c : si16 + } + + func.func @addi_si32(%a : si32, %b : si32) -> si32 { + %c = arc.addi %a, %b : si32 + return %c : si32 + } + + func.func @subi_si32(%a : si32, %b : si32) -> si32 { + %c = arc.subi %a, %b : si32 + return %c : si32 + } + + func.func @muli_si32(%a : si32, %b : si32) -> si32 { + %c = arc.muli %a, %b : si32 + return %c : si32 + } + + func.func @divi_si32(%a : si32, %b : si32) -> si32 { + %c = arc.divi %a, %b : si32 + return %c : si32 + } + + func.func @remi_si32(%a : si32, %b : si32) -> si32 { + %c = arc.remi %a, %b : si32 + return %c : si32 + } + + func.func @addi_si64(%a : si64, %b : si64) -> si64 { + %c = arc.addi %a, %b : si64 + return %c : si64 + } + + func.func @subi_si64(%a : si64, %b : si64) -> si64 { + %c = arc.subi %a, %b : si64 + return %c : si64 + } + + func.func @muli_si64(%a : si64, %b : si64) -> si64 { + %c = arc.muli %a, %b : si64 + return %c : si64 + } + + func.func @divi_si64(%a : si64, %b : si64) -> si64 { + %c = arc.divi %a, %b : si64 + return %c : si64 + } + + func.func @remi_si64(%a : si64, %b : si64) -> si64 { + %c = arc.remi %a, %b : si64 + return %c : si64 + } } diff --git a/arc-mlir/src/tests/arc-to-rust/int-arith.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/int-arith.mlir.rust-tests index 19ec2dffa..f32e0b160 100644 --- a/arc-mlir/src/tests/arc-to-rust/int-arith.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/int-arith.mlir.rust-tests @@ -1,3397 +1,3714 @@ #[cfg(test)] mod tests { - use crate::arctorustintarith::*; - #[rewrite(main)] - #[test] - fn it_works() { -assert_eq!(call!(addi_si16(-32768, 0)), -32768); -assert_eq!(call!(addi_si16(0, -32768)), -32768); -assert_eq!(call!(addi_si16(-32768, 1)), -32767); -assert_eq!(call!(addi_si16(-32767, 0)), -32767); -assert_eq!(call!(addi_si16(0, -32767)), -32767); -assert_eq!(call!(addi_si16(1, -32768)), -32767); -assert_eq!(call!(addi_si16(-32768, 2)), -32766); -assert_eq!(call!(addi_si16(-32767, 1)), -32766); -assert_eq!(call!(addi_si16(1, -32767)), -32766); -assert_eq!(call!(addi_si16(2, -32768)), -32766); -assert_eq!(call!(addi_si16(-32768, 3)), -32765); -assert_eq!(call!(addi_si16(-32767, 2)), -32765); -assert_eq!(call!(addi_si16(2, -32767)), -32765); -assert_eq!(call!(addi_si16(3, -32768)), -32765); -assert_eq!(call!(addi_si16(-32768, 4)), -32764); -assert_eq!(call!(addi_si16(-32767, 3)), -32764); -assert_eq!(call!(addi_si16(3, -32767)), -32764); -assert_eq!(call!(addi_si16(4, -32768)), -32764); -assert_eq!(call!(addi_si16(-32767, 4)), -32763); -assert_eq!(call!(addi_si16(4, -32767)), -32763); -assert_eq!(call!(addi_si16(-32547, 0)), -32547); -assert_eq!(call!(addi_si16(0, -32547)), -32547); -assert_eq!(call!(addi_si16(-32547, 1)), -32546); -assert_eq!(call!(addi_si16(1, -32547)), -32546); -assert_eq!(call!(addi_si16(-32547, 2)), -32545); -assert_eq!(call!(addi_si16(2, -32547)), -32545); -assert_eq!(call!(addi_si16(-32547, 3)), -32544); -assert_eq!(call!(addi_si16(3, -32547)), -32544); -assert_eq!(call!(addi_si16(-32547, 4)), -32543); -assert_eq!(call!(addi_si16(4, -32547)), -32543); -assert_eq!(call!(addi_si16(-32768, 10486)), -22282); -assert_eq!(call!(addi_si16(10486, -32768)), -22282); -assert_eq!(call!(addi_si16(-32767, 10486)), -22281); -assert_eq!(call!(addi_si16(10486, -32767)), -22281); -assert_eq!(call!(addi_si16(-32547, 10486)), -22061); -assert_eq!(call!(addi_si16(10486, -32547)), -22061); -assert_eq!(call!(addi_si16(-32768, 16514)), -16254); -assert_eq!(call!(addi_si16(16514, -32768)), -16254); -assert_eq!(call!(addi_si16(-32767, 16514)), -16253); -assert_eq!(call!(addi_si16(16514, -32767)), -16253); -assert_eq!(call!(addi_si16(-32547, 16514)), -16033); -assert_eq!(call!(addi_si16(16514, -32547)), -16033); -assert_eq!(call!(addi_si16(-32768, 32766)), -2); -assert_eq!(call!(addi_si16(32766, -32768)), -2); -assert_eq!(call!(addi_si16(-32768, 32767)), -1); -assert_eq!(call!(addi_si16(-32767, 32766)), -1); -assert_eq!(call!(addi_si16(32766, -32767)), -1); -assert_eq!(call!(addi_si16(32767, -32768)), -1); -assert_eq!(call!(addi_si16(-32767, 32767)), 0); -assert_eq!(call!(addi_si16(0, 0)), 0); -assert_eq!(call!(addi_si16(32767, -32767)), 0); -assert_eq!(call!(addi_si16(0, 1)), 1); -assert_eq!(call!(addi_si16(1, 0)), 1); -assert_eq!(call!(addi_si16(0, 2)), 2); -assert_eq!(call!(addi_si16(1, 1)), 2); -assert_eq!(call!(addi_si16(2, 0)), 2); -assert_eq!(call!(addi_si16(0, 3)), 3); -assert_eq!(call!(addi_si16(1, 2)), 3); -assert_eq!(call!(addi_si16(2, 1)), 3); -assert_eq!(call!(addi_si16(3, 0)), 3); -assert_eq!(call!(addi_si16(0, 4)), 4); -assert_eq!(call!(addi_si16(1, 3)), 4); -assert_eq!(call!(addi_si16(2, 2)), 4); -assert_eq!(call!(addi_si16(3, 1)), 4); -assert_eq!(call!(addi_si16(4, 0)), 4); -assert_eq!(call!(addi_si16(1, 4)), 5); -assert_eq!(call!(addi_si16(2, 3)), 5); -assert_eq!(call!(addi_si16(3, 2)), 5); -assert_eq!(call!(addi_si16(4, 1)), 5); -assert_eq!(call!(addi_si16(2, 4)), 6); -assert_eq!(call!(addi_si16(3, 3)), 6); -assert_eq!(call!(addi_si16(4, 2)), 6); -assert_eq!(call!(addi_si16(3, 4)), 7); -assert_eq!(call!(addi_si16(4, 3)), 7); -assert_eq!(call!(addi_si16(4, 4)), 8); -assert_eq!(call!(addi_si16(-32547, 32766)), 219); -assert_eq!(call!(addi_si16(32766, -32547)), 219); -assert_eq!(call!(addi_si16(-32547, 32767)), 220); -assert_eq!(call!(addi_si16(32767, -32547)), 220); -assert_eq!(call!(addi_si16(0, 10486)), 10486); -assert_eq!(call!(addi_si16(10486, 0)), 10486); -assert_eq!(call!(addi_si16(1, 10486)), 10487); -assert_eq!(call!(addi_si16(10486, 1)), 10487); -assert_eq!(call!(addi_si16(2, 10486)), 10488); -assert_eq!(call!(addi_si16(10486, 2)), 10488); -assert_eq!(call!(addi_si16(3, 10486)), 10489); -assert_eq!(call!(addi_si16(10486, 3)), 10489); -assert_eq!(call!(addi_si16(4, 10486)), 10490); -assert_eq!(call!(addi_si16(10486, 4)), 10490); -assert_eq!(call!(addi_si16(0, 16514)), 16514); -assert_eq!(call!(addi_si16(16514, 0)), 16514); -assert_eq!(call!(addi_si16(1, 16514)), 16515); -assert_eq!(call!(addi_si16(16514, 1)), 16515); -assert_eq!(call!(addi_si16(2, 16514)), 16516); -assert_eq!(call!(addi_si16(16514, 2)), 16516); -assert_eq!(call!(addi_si16(3, 16514)), 16517); -assert_eq!(call!(addi_si16(16514, 3)), 16517); -assert_eq!(call!(addi_si16(4, 16514)), 16518); -assert_eq!(call!(addi_si16(16514, 4)), 16518); -assert_eq!(call!(addi_si16(10486, 10486)), 20972); -assert_eq!(call!(addi_si16(10486, 16514)), 27000); -assert_eq!(call!(addi_si16(16514, 10486)), 27000); -assert_eq!(call!(addi_si16(0, 32766)), 32766); -assert_eq!(call!(addi_si16(32766, 0)), 32766); -assert_eq!(call!(addi_si16(0, 32767)), 32767); -assert_eq!(call!(addi_si16(1, 32766)), 32767); -assert_eq!(call!(addi_si16(32766, 1)), 32767); -assert_eq!(call!(addi_si16(32767, 0)), 32767); -assert_eq!(call!(addi_si32(-2147483648, 0)), -2147483648); -assert_eq!(call!(addi_si32(0, -2147483648)), -2147483648); -assert_eq!(call!(addi_si32(-2147483648, 1)), -2147483647); -assert_eq!(call!(addi_si32(-2147483647, 0)), -2147483647); -assert_eq!(call!(addi_si32(0, -2147483647)), -2147483647); -assert_eq!(call!(addi_si32(1, -2147483648)), -2147483647); -assert_eq!(call!(addi_si32(-2147483648, 2)), -2147483646); -assert_eq!(call!(addi_si32(-2147483647, 1)), -2147483646); -assert_eq!(call!(addi_si32(1, -2147483647)), -2147483646); -assert_eq!(call!(addi_si32(2, -2147483648)), -2147483646); -assert_eq!(call!(addi_si32(-2147483648, 3)), -2147483645); -assert_eq!(call!(addi_si32(-2147483647, 2)), -2147483645); -assert_eq!(call!(addi_si32(2, -2147483647)), -2147483645); -assert_eq!(call!(addi_si32(3, -2147483648)), -2147483645); -assert_eq!(call!(addi_si32(-2147483648, 4)), -2147483644); -assert_eq!(call!(addi_si32(-2147483647, 3)), -2147483644); -assert_eq!(call!(addi_si32(3, -2147483647)), -2147483644); -assert_eq!(call!(addi_si32(4, -2147483648)), -2147483644); -assert_eq!(call!(addi_si32(-2147483647, 4)), -2147483643); -assert_eq!(call!(addi_si32(4, -2147483647)), -2147483643); -assert_eq!(call!(addi_si32(-1035405763, -1035405763)), -2070811526); -assert_eq!(call!(addi_si32(-1713183800, 0)), -1713183800); -assert_eq!(call!(addi_si32(0, -1713183800)), -1713183800); -assert_eq!(call!(addi_si32(-1713183800, 1)), -1713183799); -assert_eq!(call!(addi_si32(1, -1713183800)), -1713183799); -assert_eq!(call!(addi_si32(-1713183800, 2)), -1713183798); -assert_eq!(call!(addi_si32(2, -1713183800)), -1713183798); -assert_eq!(call!(addi_si32(-1713183800, 3)), -1713183797); -assert_eq!(call!(addi_si32(3, -1713183800)), -1713183797); -assert_eq!(call!(addi_si32(-1713183800, 4)), -1713183796); -assert_eq!(call!(addi_si32(4, -1713183800)), -1713183796); -assert_eq!(call!(addi_si32(-1252582164, 0)), -1252582164); -assert_eq!(call!(addi_si32(0, -1252582164)), -1252582164); -assert_eq!(call!(addi_si32(-1252582164, 1)), -1252582163); -assert_eq!(call!(addi_si32(1, -1252582164)), -1252582163); -assert_eq!(call!(addi_si32(-1252582164, 2)), -1252582162); -assert_eq!(call!(addi_si32(2, -1252582164)), -1252582162); -assert_eq!(call!(addi_si32(-1252582164, 3)), -1252582161); -assert_eq!(call!(addi_si32(3, -1252582164)), -1252582161); -assert_eq!(call!(addi_si32(-1252582164, 4)), -1252582160); -assert_eq!(call!(addi_si32(4, -1252582164)), -1252582160); -assert_eq!(call!(addi_si32(-1035405763, 0)), -1035405763); -assert_eq!(call!(addi_si32(0, -1035405763)), -1035405763); -assert_eq!(call!(addi_si32(-1035405763, 1)), -1035405762); -assert_eq!(call!(addi_si32(1, -1035405763)), -1035405762); -assert_eq!(call!(addi_si32(-1035405763, 2)), -1035405761); -assert_eq!(call!(addi_si32(2, -1035405763)), -1035405761); -assert_eq!(call!(addi_si32(-1035405763, 3)), -1035405760); -assert_eq!(call!(addi_si32(3, -1035405763)), -1035405760); -assert_eq!(call!(addi_si32(-1035405763, 4)), -1035405759); -assert_eq!(call!(addi_si32(4, -1035405763)), -1035405759); -assert_eq!(call!(addi_si32(-2147483648, 2147483646)), -2); -assert_eq!(call!(addi_si32(2147483646, -2147483648)), -2); -assert_eq!(call!(addi_si32(-2147483648, 2147483647)), -1); -assert_eq!(call!(addi_si32(-2147483647, 2147483646)), -1); -assert_eq!(call!(addi_si32(2147483646, -2147483647)), -1); -assert_eq!(call!(addi_si32(2147483647, -2147483648)), -1); -assert_eq!(call!(addi_si32(-2147483647, 2147483647)), 0); -assert_eq!(call!(addi_si32(0, 0)), 0); -assert_eq!(call!(addi_si32(2147483647, -2147483647)), 0); -assert_eq!(call!(addi_si32(0, 1)), 1); -assert_eq!(call!(addi_si32(1, 0)), 1); -assert_eq!(call!(addi_si32(0, 2)), 2); -assert_eq!(call!(addi_si32(1, 1)), 2); -assert_eq!(call!(addi_si32(2, 0)), 2); -assert_eq!(call!(addi_si32(0, 3)), 3); -assert_eq!(call!(addi_si32(1, 2)), 3); -assert_eq!(call!(addi_si32(2, 1)), 3); -assert_eq!(call!(addi_si32(3, 0)), 3); -assert_eq!(call!(addi_si32(0, 4)), 4); -assert_eq!(call!(addi_si32(1, 3)), 4); -assert_eq!(call!(addi_si32(2, 2)), 4); -assert_eq!(call!(addi_si32(3, 1)), 4); -assert_eq!(call!(addi_si32(4, 0)), 4); -assert_eq!(call!(addi_si32(1, 4)), 5); -assert_eq!(call!(addi_si32(2, 3)), 5); -assert_eq!(call!(addi_si32(3, 2)), 5); -assert_eq!(call!(addi_si32(4, 1)), 5); -assert_eq!(call!(addi_si32(2, 4)), 6); -assert_eq!(call!(addi_si32(3, 3)), 6); -assert_eq!(call!(addi_si32(4, 2)), 6); -assert_eq!(call!(addi_si32(3, 4)), 7); -assert_eq!(call!(addi_si32(4, 3)), 7); -assert_eq!(call!(addi_si32(4, 4)), 8); -assert_eq!(call!(addi_si32(-1713183800, 2147483646)), 434299846); -assert_eq!(call!(addi_si32(2147483646, -1713183800)), 434299846); -assert_eq!(call!(addi_si32(-1713183800, 2147483647)), 434299847); -assert_eq!(call!(addi_si32(2147483647, -1713183800)), 434299847); -assert_eq!(call!(addi_si32(-1252582164, 2147483646)), 894901482); -assert_eq!(call!(addi_si32(2147483646, -1252582164)), 894901482); -assert_eq!(call!(addi_si32(-1252582164, 2147483647)), 894901483); -assert_eq!(call!(addi_si32(2147483647, -1252582164)), 894901483); -assert_eq!(call!(addi_si32(-1035405763, 2147483646)), 1112077883); -assert_eq!(call!(addi_si32(2147483646, -1035405763)), 1112077883); -assert_eq!(call!(addi_si32(-1035405763, 2147483647)), 1112077884); -assert_eq!(call!(addi_si32(2147483647, -1035405763)), 1112077884); -assert_eq!(call!(addi_si32(0, 2147483646)), 2147483646); -assert_eq!(call!(addi_si32(2147483646, 0)), 2147483646); -assert_eq!(call!(addi_si32(0, 2147483647)), 2147483647); -assert_eq!(call!(addi_si32(1, 2147483646)), 2147483647); -assert_eq!(call!(addi_si32(2147483646, 1)), 2147483647); -assert_eq!(call!(addi_si32(2147483647, 0)), 2147483647); -assert_eq!(call!(addi_si64(-9223372036854775808, 0)), -9223372036854775808); -assert_eq!(call!(addi_si64(0, -9223372036854775808)), -9223372036854775808); -assert_eq!(call!(addi_si64(-9223372036854775808, 1)), -9223372036854775807); -assert_eq!(call!(addi_si64(-9223372036854775807, 0)), -9223372036854775807); -assert_eq!(call!(addi_si64(0, -9223372036854775807)), -9223372036854775807); -assert_eq!(call!(addi_si64(1, -9223372036854775808)), -9223372036854775807); -assert_eq!(call!(addi_si64(-9223372036854775808, 2)), -9223372036854775806); -assert_eq!(call!(addi_si64(-9223372036854775807, 1)), -9223372036854775806); -assert_eq!(call!(addi_si64(1, -9223372036854775807)), -9223372036854775806); -assert_eq!(call!(addi_si64(2, -9223372036854775808)), -9223372036854775806); -assert_eq!(call!(addi_si64(-9223372036854775808, 3)), -9223372036854775805); -assert_eq!(call!(addi_si64(-9223372036854775807, 2)), -9223372036854775805); -assert_eq!(call!(addi_si64(2, -9223372036854775807)), -9223372036854775805); -assert_eq!(call!(addi_si64(3, -9223372036854775808)), -9223372036854775805); -assert_eq!(call!(addi_si64(-9223372036854775808, 4)), -9223372036854775804); -assert_eq!(call!(addi_si64(-9223372036854775807, 3)), -9223372036854775804); -assert_eq!(call!(addi_si64(3, -9223372036854775807)), -9223372036854775804); -assert_eq!(call!(addi_si64(4, -9223372036854775808)), -9223372036854775804); -assert_eq!(call!(addi_si64(-9223372036854775807, 4)), -9223372036854775803); -assert_eq!(call!(addi_si64(4, -9223372036854775807)), -9223372036854775803); -assert_eq!(call!(addi_si64(-9223372036854775808, 5577148965131116544)), -3646223071723659264); -assert_eq!(call!(addi_si64(5577148965131116544, -9223372036854775808)), -3646223071723659264); -assert_eq!(call!(addi_si64(-9223372036854775807, 5577148965131116544)), -3646223071723659263); -assert_eq!(call!(addi_si64(5577148965131116544, -9223372036854775807)), -3646223071723659263); -assert_eq!(call!(addi_si64(-1741927215160008704, -1741927215160008704)), -3483854430320017408); -assert_eq!(call!(addi_si64(-1741927215160008704, -1328271339354574848)), -3070198554514583552); -assert_eq!(call!(addi_si64(-1328271339354574848, -1741927215160008704)), -3070198554514583552); -assert_eq!(call!(addi_si64(-1328271339354574848, -1328271339354574848)), -2656542678709149696); -assert_eq!(call!(addi_si64(-1741927215160008704, 0)), -1741927215160008704); -assert_eq!(call!(addi_si64(0, -1741927215160008704)), -1741927215160008704); -assert_eq!(call!(addi_si64(-1741927215160008704, 1)), -1741927215160008703); -assert_eq!(call!(addi_si64(1, -1741927215160008704)), -1741927215160008703); -assert_eq!(call!(addi_si64(-1741927215160008704, 2)), -1741927215160008702); -assert_eq!(call!(addi_si64(2, -1741927215160008704)), -1741927215160008702); -assert_eq!(call!(addi_si64(-1741927215160008704, 3)), -1741927215160008701); -assert_eq!(call!(addi_si64(3, -1741927215160008704)), -1741927215160008701); -assert_eq!(call!(addi_si64(-1741927215160008704, 4)), -1741927215160008700); -assert_eq!(call!(addi_si64(4, -1741927215160008704)), -1741927215160008700); -assert_eq!(call!(addi_si64(-1328271339354574848, 0)), -1328271339354574848); -assert_eq!(call!(addi_si64(0, -1328271339354574848)), -1328271339354574848); -assert_eq!(call!(addi_si64(-1328271339354574848, 1)), -1328271339354574847); -assert_eq!(call!(addi_si64(1, -1328271339354574848)), -1328271339354574847); -assert_eq!(call!(addi_si64(-1328271339354574848, 2)), -1328271339354574846); -assert_eq!(call!(addi_si64(2, -1328271339354574848)), -1328271339354574846); -assert_eq!(call!(addi_si64(-1328271339354574848, 3)), -1328271339354574845); -assert_eq!(call!(addi_si64(3, -1328271339354574848)), -1328271339354574845); -assert_eq!(call!(addi_si64(-1328271339354574848, 4)), -1328271339354574844); -assert_eq!(call!(addi_si64(4, -1328271339354574848)), -1328271339354574844); -assert_eq!(call!(addi_si64(-9223372036854775808, 9223372036854775806)), -2); -assert_eq!(call!(addi_si64(9223372036854775806, -9223372036854775808)), -2); -assert_eq!(call!(addi_si64(-9223372036854775808, 9223372036854775807)), -1); -assert_eq!(call!(addi_si64(-9223372036854775807, 9223372036854775806)), -1); -assert_eq!(call!(addi_si64(9223372036854775806, -9223372036854775807)), -1); -assert_eq!(call!(addi_si64(9223372036854775807, -9223372036854775808)), -1); -assert_eq!(call!(addi_si64(-9223372036854775807, 9223372036854775807)), 0); -assert_eq!(call!(addi_si64(0, 0)), 0); -assert_eq!(call!(addi_si64(9223372036854775807, -9223372036854775807)), 0); -assert_eq!(call!(addi_si64(0, 1)), 1); -assert_eq!(call!(addi_si64(1, 0)), 1); -assert_eq!(call!(addi_si64(0, 2)), 2); -assert_eq!(call!(addi_si64(1, 1)), 2); -assert_eq!(call!(addi_si64(2, 0)), 2); -assert_eq!(call!(addi_si64(0, 3)), 3); -assert_eq!(call!(addi_si64(1, 2)), 3); -assert_eq!(call!(addi_si64(2, 1)), 3); -assert_eq!(call!(addi_si64(3, 0)), 3); -assert_eq!(call!(addi_si64(0, 4)), 4); -assert_eq!(call!(addi_si64(1, 3)), 4); -assert_eq!(call!(addi_si64(2, 2)), 4); -assert_eq!(call!(addi_si64(3, 1)), 4); -assert_eq!(call!(addi_si64(4, 0)), 4); -assert_eq!(call!(addi_si64(1, 4)), 5); -assert_eq!(call!(addi_si64(2, 3)), 5); -assert_eq!(call!(addi_si64(3, 2)), 5); -assert_eq!(call!(addi_si64(4, 1)), 5); -assert_eq!(call!(addi_si64(2, 4)), 6); -assert_eq!(call!(addi_si64(3, 3)), 6); -assert_eq!(call!(addi_si64(4, 2)), 6); -assert_eq!(call!(addi_si64(3, 4)), 7); -assert_eq!(call!(addi_si64(4, 3)), 7); -assert_eq!(call!(addi_si64(4, 4)), 8); -assert_eq!(call!(addi_si64(-1741927215160008704, 5577148965131116544)), 3835221749971107840); -assert_eq!(call!(addi_si64(5577148965131116544, -1741927215160008704)), 3835221749971107840); -assert_eq!(call!(addi_si64(-1328271339354574848, 5577148965131116544)), 4248877625776541696); -assert_eq!(call!(addi_si64(5577148965131116544, -1328271339354574848)), 4248877625776541696); -assert_eq!(call!(addi_si64(0, 5577148965131116544)), 5577148965131116544); -assert_eq!(call!(addi_si64(5577148965131116544, 0)), 5577148965131116544); -assert_eq!(call!(addi_si64(1, 5577148965131116544)), 5577148965131116545); -assert_eq!(call!(addi_si64(5577148965131116544, 1)), 5577148965131116545); -assert_eq!(call!(addi_si64(2, 5577148965131116544)), 5577148965131116546); -assert_eq!(call!(addi_si64(5577148965131116544, 2)), 5577148965131116546); -assert_eq!(call!(addi_si64(3, 5577148965131116544)), 5577148965131116547); -assert_eq!(call!(addi_si64(5577148965131116544, 3)), 5577148965131116547); -assert_eq!(call!(addi_si64(4, 5577148965131116544)), 5577148965131116548); -assert_eq!(call!(addi_si64(5577148965131116544, 4)), 5577148965131116548); -assert_eq!(call!(addi_si64(-1741927215160008704, 9223372036854775806)), 7481444821694767102); -assert_eq!(call!(addi_si64(9223372036854775806, -1741927215160008704)), 7481444821694767102); -assert_eq!(call!(addi_si64(-1741927215160008704, 9223372036854775807)), 7481444821694767103); -assert_eq!(call!(addi_si64(9223372036854775807, -1741927215160008704)), 7481444821694767103); -assert_eq!(call!(addi_si64(-1328271339354574848, 9223372036854775806)), 7895100697500200958); -assert_eq!(call!(addi_si64(9223372036854775806, -1328271339354574848)), 7895100697500200958); -assert_eq!(call!(addi_si64(-1328271339354574848, 9223372036854775807)), 7895100697500200959); -assert_eq!(call!(addi_si64(9223372036854775807, -1328271339354574848)), 7895100697500200959); -assert_eq!(call!(addi_si64(0, 9223372036854775806)), 9223372036854775806); -assert_eq!(call!(addi_si64(9223372036854775806, 0)), 9223372036854775806); -assert_eq!(call!(addi_si64(0, 9223372036854775807)), 9223372036854775807); -assert_eq!(call!(addi_si64(1, 9223372036854775806)), 9223372036854775807); -assert_eq!(call!(addi_si64(9223372036854775806, 1)), 9223372036854775807); -assert_eq!(call!(addi_si64(9223372036854775807, 0)), 9223372036854775807); -assert_eq!(call!(addi_si8(-128, 0)), -128); -assert_eq!(call!(addi_si8(0, -128)), -128); -assert_eq!(call!(addi_si8(-128, 1)), -127); -assert_eq!(call!(addi_si8(-127, 0)), -127); -assert_eq!(call!(addi_si8(0, -127)), -127); -assert_eq!(call!(addi_si8(1, -128)), -127); -assert_eq!(call!(addi_si8(-128, 2)), -126); -assert_eq!(call!(addi_si8(-127, 1)), -126); -assert_eq!(call!(addi_si8(1, -127)), -126); -assert_eq!(call!(addi_si8(2, -128)), -126); -assert_eq!(call!(addi_si8(-128, 3)), -125); -assert_eq!(call!(addi_si8(-127, 2)), -125); -assert_eq!(call!(addi_si8(2, -127)), -125); -assert_eq!(call!(addi_si8(3, -128)), -125); -assert_eq!(call!(addi_si8(-128, 4)), -124); -assert_eq!(call!(addi_si8(-127, 3)), -124); -assert_eq!(call!(addi_si8(3, -127)), -124); -assert_eq!(call!(addi_si8(4, -128)), -124); -assert_eq!(call!(addi_si8(-127, 4)), -123); -assert_eq!(call!(addi_si8(4, -127)), -123); -assert_eq!(call!(addi_si8(-128, 16)), -112); -assert_eq!(call!(addi_si8(16, -128)), -112); -assert_eq!(call!(addi_si8(-127, 16)), -111); -assert_eq!(call!(addi_si8(16, -127)), -111); -assert_eq!(call!(addi_si8(-128, 126)), -2); -assert_eq!(call!(addi_si8(126, -128)), -2); -assert_eq!(call!(addi_si8(-128, 127)), -1); -assert_eq!(call!(addi_si8(-127, 126)), -1); -assert_eq!(call!(addi_si8(126, -127)), -1); -assert_eq!(call!(addi_si8(127, -128)), -1); -assert_eq!(call!(addi_si8(-127, 127)), 0); -assert_eq!(call!(addi_si8(0, 0)), 0); -assert_eq!(call!(addi_si8(127, -127)), 0); -assert_eq!(call!(addi_si8(0, 1)), 1); -assert_eq!(call!(addi_si8(1, 0)), 1); -assert_eq!(call!(addi_si8(0, 2)), 2); -assert_eq!(call!(addi_si8(1, 1)), 2); -assert_eq!(call!(addi_si8(2, 0)), 2); -assert_eq!(call!(addi_si8(0, 3)), 3); -assert_eq!(call!(addi_si8(1, 2)), 3); -assert_eq!(call!(addi_si8(2, 1)), 3); -assert_eq!(call!(addi_si8(3, 0)), 3); -assert_eq!(call!(addi_si8(0, 4)), 4); -assert_eq!(call!(addi_si8(1, 3)), 4); -assert_eq!(call!(addi_si8(2, 2)), 4); -assert_eq!(call!(addi_si8(3, 1)), 4); -assert_eq!(call!(addi_si8(4, 0)), 4); -assert_eq!(call!(addi_si8(1, 4)), 5); -assert_eq!(call!(addi_si8(2, 3)), 5); -assert_eq!(call!(addi_si8(3, 2)), 5); -assert_eq!(call!(addi_si8(4, 1)), 5); -assert_eq!(call!(addi_si8(2, 4)), 6); -assert_eq!(call!(addi_si8(3, 3)), 6); -assert_eq!(call!(addi_si8(4, 2)), 6); -assert_eq!(call!(addi_si8(3, 4)), 7); -assert_eq!(call!(addi_si8(4, 3)), 7); -assert_eq!(call!(addi_si8(4, 4)), 8); -assert_eq!(call!(addi_si8(0, 16)), 16); -assert_eq!(call!(addi_si8(16, 0)), 16); -assert_eq!(call!(addi_si8(1, 16)), 17); -assert_eq!(call!(addi_si8(16, 1)), 17); -assert_eq!(call!(addi_si8(2, 16)), 18); -assert_eq!(call!(addi_si8(16, 2)), 18); -assert_eq!(call!(addi_si8(3, 16)), 19); -assert_eq!(call!(addi_si8(16, 3)), 19); -assert_eq!(call!(addi_si8(4, 16)), 20); -assert_eq!(call!(addi_si8(16, 4)), 20); -assert_eq!(call!(addi_si8(16, 16)), 32); -assert_eq!(call!(addi_si8(0, 126)), 126); -assert_eq!(call!(addi_si8(126, 0)), 126); -assert_eq!(call!(addi_si8(0, 127)), 127); -assert_eq!(call!(addi_si8(1, 126)), 127); -assert_eq!(call!(addi_si8(126, 1)), 127); -assert_eq!(call!(addi_si8(127, 0)), 127); -assert_eq!(call!(addi_ui16(0, 0)), 0); -assert_eq!(call!(addi_ui16(0, 1)), 1); -assert_eq!(call!(addi_ui16(1, 0)), 1); -assert_eq!(call!(addi_ui16(0, 2)), 2); -assert_eq!(call!(addi_ui16(1, 1)), 2); -assert_eq!(call!(addi_ui16(2, 0)), 2); -assert_eq!(call!(addi_ui16(0, 3)), 3); -assert_eq!(call!(addi_ui16(1, 2)), 3); -assert_eq!(call!(addi_ui16(2, 1)), 3); -assert_eq!(call!(addi_ui16(3, 0)), 3); -assert_eq!(call!(addi_ui16(0, 4)), 4); -assert_eq!(call!(addi_ui16(1, 3)), 4); -assert_eq!(call!(addi_ui16(2, 2)), 4); -assert_eq!(call!(addi_ui16(3, 1)), 4); -assert_eq!(call!(addi_ui16(4, 0)), 4); -assert_eq!(call!(addi_ui16(1, 4)), 5); -assert_eq!(call!(addi_ui16(2, 3)), 5); -assert_eq!(call!(addi_ui16(3, 2)), 5); -assert_eq!(call!(addi_ui16(4, 1)), 5); -assert_eq!(call!(addi_ui16(2, 4)), 6); -assert_eq!(call!(addi_ui16(3, 3)), 6); -assert_eq!(call!(addi_ui16(4, 2)), 6); -assert_eq!(call!(addi_ui16(3, 4)), 7); -assert_eq!(call!(addi_ui16(4, 3)), 7); -assert_eq!(call!(addi_ui16(4, 4)), 8); -assert_eq!(call!(addi_ui16(0, 1717)), 1717); -assert_eq!(call!(addi_ui16(1717, 0)), 1717); -assert_eq!(call!(addi_ui16(1, 1717)), 1718); -assert_eq!(call!(addi_ui16(1717, 1)), 1718); -assert_eq!(call!(addi_ui16(2, 1717)), 1719); -assert_eq!(call!(addi_ui16(1717, 2)), 1719); -assert_eq!(call!(addi_ui16(3, 1717)), 1720); -assert_eq!(call!(addi_ui16(1717, 3)), 1720); -assert_eq!(call!(addi_ui16(4, 1717)), 1721); -assert_eq!(call!(addi_ui16(1717, 4)), 1721); -assert_eq!(call!(addi_ui16(1717, 1717)), 3434); -assert_eq!(call!(addi_ui16(0, 17988)), 17988); -assert_eq!(call!(addi_ui16(17988, 0)), 17988); -assert_eq!(call!(addi_ui16(1, 17988)), 17989); -assert_eq!(call!(addi_ui16(17988, 1)), 17989); -assert_eq!(call!(addi_ui16(2, 17988)), 17990); -assert_eq!(call!(addi_ui16(17988, 2)), 17990); -assert_eq!(call!(addi_ui16(3, 17988)), 17991); -assert_eq!(call!(addi_ui16(17988, 3)), 17991); -assert_eq!(call!(addi_ui16(4, 17988)), 17992); -assert_eq!(call!(addi_ui16(17988, 4)), 17992); -assert_eq!(call!(addi_ui16(1717, 17988)), 19705); -assert_eq!(call!(addi_ui16(17988, 1717)), 19705); -assert_eq!(call!(addi_ui16(17988, 17988)), 35976); -assert_eq!(call!(addi_ui16(0, 65096)), 65096); -assert_eq!(call!(addi_ui16(65096, 0)), 65096); -assert_eq!(call!(addi_ui16(1, 65096)), 65097); -assert_eq!(call!(addi_ui16(65096, 1)), 65097); -assert_eq!(call!(addi_ui16(2, 65096)), 65098); -assert_eq!(call!(addi_ui16(65096, 2)), 65098); -assert_eq!(call!(addi_ui16(3, 65096)), 65099); -assert_eq!(call!(addi_ui16(65096, 3)), 65099); -assert_eq!(call!(addi_ui16(4, 65096)), 65100); -assert_eq!(call!(addi_ui16(65096, 4)), 65100); -assert_eq!(call!(addi_ui16(0, 65534)), 65534); -assert_eq!(call!(addi_ui16(65534, 0)), 65534); -assert_eq!(call!(addi_ui16(0, 65535)), 65535); -assert_eq!(call!(addi_ui16(1, 65534)), 65535); -assert_eq!(call!(addi_ui16(65534, 1)), 65535); -assert_eq!(call!(addi_ui16(65535, 0)), 65535); -assert_eq!(call!(addi_ui32(0, 0)), 0); -assert_eq!(call!(addi_ui32(0, 1)), 1); -assert_eq!(call!(addi_ui32(1, 0)), 1); -assert_eq!(call!(addi_ui32(0, 2)), 2); -assert_eq!(call!(addi_ui32(1, 1)), 2); -assert_eq!(call!(addi_ui32(2, 0)), 2); -assert_eq!(call!(addi_ui32(0, 3)), 3); -assert_eq!(call!(addi_ui32(1, 2)), 3); -assert_eq!(call!(addi_ui32(2, 1)), 3); -assert_eq!(call!(addi_ui32(3, 0)), 3); -assert_eq!(call!(addi_ui32(0, 4)), 4); -assert_eq!(call!(addi_ui32(1, 3)), 4); -assert_eq!(call!(addi_ui32(2, 2)), 4); -assert_eq!(call!(addi_ui32(3, 1)), 4); -assert_eq!(call!(addi_ui32(4, 0)), 4); -assert_eq!(call!(addi_ui32(1, 4)), 5); -assert_eq!(call!(addi_ui32(2, 3)), 5); -assert_eq!(call!(addi_ui32(3, 2)), 5); -assert_eq!(call!(addi_ui32(4, 1)), 5); -assert_eq!(call!(addi_ui32(2, 4)), 6); -assert_eq!(call!(addi_ui32(3, 3)), 6); -assert_eq!(call!(addi_ui32(4, 2)), 6); -assert_eq!(call!(addi_ui32(3, 4)), 7); -assert_eq!(call!(addi_ui32(4, 3)), 7); -assert_eq!(call!(addi_ui32(4, 4)), 8); -assert_eq!(call!(addi_ui32(0, 2119154652)), 2119154652); -assert_eq!(call!(addi_ui32(2119154652, 0)), 2119154652); -assert_eq!(call!(addi_ui32(1, 2119154652)), 2119154653); -assert_eq!(call!(addi_ui32(2119154652, 1)), 2119154653); -assert_eq!(call!(addi_ui32(2, 2119154652)), 2119154654); -assert_eq!(call!(addi_ui32(2119154652, 2)), 2119154654); -assert_eq!(call!(addi_ui32(3, 2119154652)), 2119154655); -assert_eq!(call!(addi_ui32(2119154652, 3)), 2119154655); -assert_eq!(call!(addi_ui32(4, 2119154652)), 2119154656); -assert_eq!(call!(addi_ui32(2119154652, 4)), 2119154656); -assert_eq!(call!(addi_ui32(0, 3002788344)), 3002788344); -assert_eq!(call!(addi_ui32(3002788344, 0)), 3002788344); -assert_eq!(call!(addi_ui32(1, 3002788344)), 3002788345); -assert_eq!(call!(addi_ui32(3002788344, 1)), 3002788345); -assert_eq!(call!(addi_ui32(2, 3002788344)), 3002788346); -assert_eq!(call!(addi_ui32(3002788344, 2)), 3002788346); -assert_eq!(call!(addi_ui32(3, 3002788344)), 3002788347); -assert_eq!(call!(addi_ui32(3002788344, 3)), 3002788347); -assert_eq!(call!(addi_ui32(4, 3002788344)), 3002788348); -assert_eq!(call!(addi_ui32(3002788344, 4)), 3002788348); -assert_eq!(call!(addi_ui32(0, 3482297128)), 3482297128); -assert_eq!(call!(addi_ui32(3482297128, 0)), 3482297128); -assert_eq!(call!(addi_ui32(1, 3482297128)), 3482297129); -assert_eq!(call!(addi_ui32(3482297128, 1)), 3482297129); -assert_eq!(call!(addi_ui32(2, 3482297128)), 3482297130); -assert_eq!(call!(addi_ui32(3482297128, 2)), 3482297130); -assert_eq!(call!(addi_ui32(3, 3482297128)), 3482297131); -assert_eq!(call!(addi_ui32(3482297128, 3)), 3482297131); -assert_eq!(call!(addi_ui32(4, 3482297128)), 3482297132); -assert_eq!(call!(addi_ui32(3482297128, 4)), 3482297132); -assert_eq!(call!(addi_ui32(2119154652, 2119154652)), 4238309304); -assert_eq!(call!(addi_ui32(0, 4294967294)), 4294967294); -assert_eq!(call!(addi_ui32(4294967294, 0)), 4294967294); -assert_eq!(call!(addi_ui32(0, 4294967295)), 4294967295); -assert_eq!(call!(addi_ui32(1, 4294967294)), 4294967295); -assert_eq!(call!(addi_ui32(4294967294, 1)), 4294967295); -assert_eq!(call!(addi_ui32(4294967295, 0)), 4294967295); -assert_eq!(call!(addi_ui64(0, 0)), 0); -assert_eq!(call!(addi_ui64(0, 1)), 1); -assert_eq!(call!(addi_ui64(1, 0)), 1); -assert_eq!(call!(addi_ui64(0, 2)), 2); -assert_eq!(call!(addi_ui64(1, 1)), 2); -assert_eq!(call!(addi_ui64(2, 0)), 2); -assert_eq!(call!(addi_ui64(0, 3)), 3); -assert_eq!(call!(addi_ui64(1, 2)), 3); -assert_eq!(call!(addi_ui64(2, 1)), 3); -assert_eq!(call!(addi_ui64(3, 0)), 3); -assert_eq!(call!(addi_ui64(0, 4)), 4); -assert_eq!(call!(addi_ui64(1, 3)), 4); -assert_eq!(call!(addi_ui64(2, 2)), 4); -assert_eq!(call!(addi_ui64(3, 1)), 4); -assert_eq!(call!(addi_ui64(4, 0)), 4); -assert_eq!(call!(addi_ui64(1, 4)), 5); -assert_eq!(call!(addi_ui64(2, 3)), 5); -assert_eq!(call!(addi_ui64(3, 2)), 5); -assert_eq!(call!(addi_ui64(4, 1)), 5); -assert_eq!(call!(addi_ui64(2, 4)), 6); -assert_eq!(call!(addi_ui64(3, 3)), 6); -assert_eq!(call!(addi_ui64(4, 2)), 6); -assert_eq!(call!(addi_ui64(3, 4)), 7); -assert_eq!(call!(addi_ui64(4, 3)), 7); -assert_eq!(call!(addi_ui64(4, 4)), 8); -assert_eq!(call!(addi_ui64(0, 191084152064409600)), 191084152064409600); -assert_eq!(call!(addi_ui64(191084152064409600, 0)), 191084152064409600); -assert_eq!(call!(addi_ui64(1, 191084152064409600)), 191084152064409601); -assert_eq!(call!(addi_ui64(191084152064409600, 1)), 191084152064409601); -assert_eq!(call!(addi_ui64(2, 191084152064409600)), 191084152064409602); -assert_eq!(call!(addi_ui64(191084152064409600, 2)), 191084152064409602); -assert_eq!(call!(addi_ui64(3, 191084152064409600)), 191084152064409603); -assert_eq!(call!(addi_ui64(191084152064409600, 3)), 191084152064409603); -assert_eq!(call!(addi_ui64(4, 191084152064409600)), 191084152064409604); -assert_eq!(call!(addi_ui64(191084152064409600, 4)), 191084152064409604); -assert_eq!(call!(addi_ui64(191084152064409600, 191084152064409600)), 382168304128819200); -assert_eq!(call!(addi_ui64(0, 11015955194427482112)), 11015955194427482112); -assert_eq!(call!(addi_ui64(11015955194427482112, 0)), 11015955194427482112); -assert_eq!(call!(addi_ui64(1, 11015955194427482112)), 11015955194427482113); -assert_eq!(call!(addi_ui64(11015955194427482112, 1)), 11015955194427482113); -assert_eq!(call!(addi_ui64(2, 11015955194427482112)), 11015955194427482114); -assert_eq!(call!(addi_ui64(11015955194427482112, 2)), 11015955194427482114); -assert_eq!(call!(addi_ui64(3, 11015955194427482112)), 11015955194427482115); -assert_eq!(call!(addi_ui64(11015955194427482112, 3)), 11015955194427482115); -assert_eq!(call!(addi_ui64(4, 11015955194427482112)), 11015955194427482116); -assert_eq!(call!(addi_ui64(11015955194427482112, 4)), 11015955194427482116); -assert_eq!(call!(addi_ui64(191084152064409600, 11015955194427482112)), 11207039346491891712); -assert_eq!(call!(addi_ui64(11015955194427482112, 191084152064409600)), 11207039346491891712); -assert_eq!(call!(addi_ui64(0, 16990600415051759616)), 16990600415051759616); -assert_eq!(call!(addi_ui64(16990600415051759616, 0)), 16990600415051759616); -assert_eq!(call!(addi_ui64(1, 16990600415051759616)), 16990600415051759617); -assert_eq!(call!(addi_ui64(16990600415051759616, 1)), 16990600415051759617); -assert_eq!(call!(addi_ui64(2, 16990600415051759616)), 16990600415051759618); -assert_eq!(call!(addi_ui64(16990600415051759616, 2)), 16990600415051759618); -assert_eq!(call!(addi_ui64(3, 16990600415051759616)), 16990600415051759619); -assert_eq!(call!(addi_ui64(16990600415051759616, 3)), 16990600415051759619); -assert_eq!(call!(addi_ui64(4, 16990600415051759616)), 16990600415051759620); -assert_eq!(call!(addi_ui64(16990600415051759616, 4)), 16990600415051759620); -assert_eq!(call!(addi_ui64(191084152064409600, 16990600415051759616)), 17181684567116169216); -assert_eq!(call!(addi_ui64(16990600415051759616, 191084152064409600)), 17181684567116169216); -assert_eq!(call!(addi_ui64(0, 18446744073709551614)), 18446744073709551614); -assert_eq!(call!(addi_ui64(18446744073709551614, 0)), 18446744073709551614); -assert_eq!(call!(addi_ui64(0, 18446744073709551615)), 18446744073709551615); -assert_eq!(call!(addi_ui64(1, 18446744073709551614)), 18446744073709551615); -assert_eq!(call!(addi_ui64(18446744073709551614, 1)), 18446744073709551615); -assert_eq!(call!(addi_ui64(18446744073709551615, 0)), 18446744073709551615); -assert_eq!(call!(addi_ui8(0, 0)), 0); -assert_eq!(call!(addi_ui8(0, 1)), 1); -assert_eq!(call!(addi_ui8(1, 0)), 1); -assert_eq!(call!(addi_ui8(0, 2)), 2); -assert_eq!(call!(addi_ui8(1, 1)), 2); -assert_eq!(call!(addi_ui8(2, 0)), 2); -assert_eq!(call!(addi_ui8(0, 3)), 3); -assert_eq!(call!(addi_ui8(1, 2)), 3); -assert_eq!(call!(addi_ui8(2, 1)), 3); -assert_eq!(call!(addi_ui8(3, 0)), 3); -assert_eq!(call!(addi_ui8(0, 4)), 4); -assert_eq!(call!(addi_ui8(1, 3)), 4); -assert_eq!(call!(addi_ui8(2, 2)), 4); -assert_eq!(call!(addi_ui8(3, 1)), 4); -assert_eq!(call!(addi_ui8(4, 0)), 4); -assert_eq!(call!(addi_ui8(1, 4)), 5); -assert_eq!(call!(addi_ui8(2, 3)), 5); -assert_eq!(call!(addi_ui8(3, 2)), 5); -assert_eq!(call!(addi_ui8(4, 1)), 5); -assert_eq!(call!(addi_ui8(2, 4)), 6); -assert_eq!(call!(addi_ui8(3, 3)), 6); -assert_eq!(call!(addi_ui8(4, 2)), 6); -assert_eq!(call!(addi_ui8(3, 4)), 7); -assert_eq!(call!(addi_ui8(4, 3)), 7); -assert_eq!(call!(addi_ui8(4, 4)), 8); -assert_eq!(call!(addi_ui8(0, 72)), 72); -assert_eq!(call!(addi_ui8(72, 0)), 72); -assert_eq!(call!(addi_ui8(1, 72)), 73); -assert_eq!(call!(addi_ui8(72, 1)), 73); -assert_eq!(call!(addi_ui8(2, 72)), 74); -assert_eq!(call!(addi_ui8(72, 2)), 74); -assert_eq!(call!(addi_ui8(3, 72)), 75); -assert_eq!(call!(addi_ui8(72, 3)), 75); -assert_eq!(call!(addi_ui8(4, 72)), 76); -assert_eq!(call!(addi_ui8(72, 4)), 76); -assert_eq!(call!(addi_ui8(0, 100)), 100); -assert_eq!(call!(addi_ui8(100, 0)), 100); -assert_eq!(call!(addi_ui8(1, 100)), 101); -assert_eq!(call!(addi_ui8(100, 1)), 101); -assert_eq!(call!(addi_ui8(2, 100)), 102); -assert_eq!(call!(addi_ui8(100, 2)), 102); -assert_eq!(call!(addi_ui8(3, 100)), 103); -assert_eq!(call!(addi_ui8(100, 3)), 103); -assert_eq!(call!(addi_ui8(4, 100)), 104); -assert_eq!(call!(addi_ui8(100, 4)), 104); -assert_eq!(call!(addi_ui8(72, 72)), 144); -assert_eq!(call!(addi_ui8(0, 162)), 162); -assert_eq!(call!(addi_ui8(162, 0)), 162); -assert_eq!(call!(addi_ui8(1, 162)), 163); -assert_eq!(call!(addi_ui8(162, 1)), 163); -assert_eq!(call!(addi_ui8(2, 162)), 164); -assert_eq!(call!(addi_ui8(162, 2)), 164); -assert_eq!(call!(addi_ui8(3, 162)), 165); -assert_eq!(call!(addi_ui8(162, 3)), 165); -assert_eq!(call!(addi_ui8(4, 162)), 166); -assert_eq!(call!(addi_ui8(162, 4)), 166); -assert_eq!(call!(addi_ui8(72, 100)), 172); -assert_eq!(call!(addi_ui8(100, 72)), 172); -assert_eq!(call!(addi_ui8(100, 100)), 200); -assert_eq!(call!(addi_ui8(72, 162)), 234); -assert_eq!(call!(addi_ui8(162, 72)), 234); -assert_eq!(call!(addi_ui8(0, 254)), 254); -assert_eq!(call!(addi_ui8(254, 0)), 254); -assert_eq!(call!(addi_ui8(0, 255)), 255); -assert_eq!(call!(addi_ui8(1, 254)), 255); -assert_eq!(call!(addi_ui8(254, 1)), 255); -assert_eq!(call!(addi_ui8(255, 0)), 255); -assert_eq!(call!(divi_si16(-32768, 1)), -32768); -assert_eq!(call!(divi_si16(-32767, 1)), -32767); -assert_eq!(call!(divi_si16(-32547, 1)), -32547); -assert_eq!(call!(divi_si16(-32768, 2)), -16384); -assert_eq!(call!(divi_si16(-32767, 2)), -16383); -assert_eq!(call!(divi_si16(-32547, 2)), -16273); -assert_eq!(call!(divi_si16(-32768, 3)), -10922); -assert_eq!(call!(divi_si16(-32767, 3)), -10922); -assert_eq!(call!(divi_si16(-32547, 3)), -10849); -assert_eq!(call!(divi_si16(-32768, 4)), -8192); -assert_eq!(call!(divi_si16(-32767, 4)), -8191); -assert_eq!(call!(divi_si16(-32547, 4)), -8136); -assert_eq!(call!(divi_si16(-32768, 10486)), -3); -assert_eq!(call!(divi_si16(-32767, 10486)), -3); -assert_eq!(call!(divi_si16(-32547, 10486)), -3); -assert_eq!(call!(divi_si16(-32768, 16514)), -1); -assert_eq!(call!(divi_si16(-32768, 32766)), -1); -assert_eq!(call!(divi_si16(-32768, 32767)), -1); -assert_eq!(call!(divi_si16(-32767, 16514)), -1); -assert_eq!(call!(divi_si16(-32767, 32766)), -1); -assert_eq!(call!(divi_si16(-32767, 32767)), -1); -assert_eq!(call!(divi_si16(-32547, 16514)), -1); -assert_eq!(call!(divi_si16(32766, -32547)), -1); -assert_eq!(call!(divi_si16(32767, -32767)), -1); -assert_eq!(call!(divi_si16(32767, -32547)), -1); -assert_eq!(call!(divi_si16(-32767, -32768)), 0); -assert_eq!(call!(divi_si16(-32547, -32768)), 0); -assert_eq!(call!(divi_si16(-32547, -32767)), 0); -assert_eq!(call!(divi_si16(-32547, 32766)), 0); -assert_eq!(call!(divi_si16(-32547, 32767)), 0); -assert_eq!(call!(divi_si16(0, -32768)), 0); -assert_eq!(call!(divi_si16(0, -32767)), 0); -assert_eq!(call!(divi_si16(0, -32547)), 0); -assert_eq!(call!(divi_si16(0, 1)), 0); -assert_eq!(call!(divi_si16(0, 2)), 0); -assert_eq!(call!(divi_si16(0, 3)), 0); -assert_eq!(call!(divi_si16(0, 4)), 0); -assert_eq!(call!(divi_si16(0, 10486)), 0); -assert_eq!(call!(divi_si16(0, 16514)), 0); -assert_eq!(call!(divi_si16(0, 32766)), 0); -assert_eq!(call!(divi_si16(0, 32767)), 0); -assert_eq!(call!(divi_si16(1, -32768)), 0); -assert_eq!(call!(divi_si16(1, -32767)), 0); -assert_eq!(call!(divi_si16(1, -32547)), 0); -assert_eq!(call!(divi_si16(1, 2)), 0); -assert_eq!(call!(divi_si16(1, 3)), 0); -assert_eq!(call!(divi_si16(1, 4)), 0); -assert_eq!(call!(divi_si16(1, 10486)), 0); -assert_eq!(call!(divi_si16(1, 16514)), 0); -assert_eq!(call!(divi_si16(1, 32766)), 0); -assert_eq!(call!(divi_si16(1, 32767)), 0); -assert_eq!(call!(divi_si16(2, -32768)), 0); -assert_eq!(call!(divi_si16(2, -32767)), 0); -assert_eq!(call!(divi_si16(2, -32547)), 0); -assert_eq!(call!(divi_si16(2, 3)), 0); -assert_eq!(call!(divi_si16(2, 4)), 0); -assert_eq!(call!(divi_si16(2, 10486)), 0); -assert_eq!(call!(divi_si16(2, 16514)), 0); -assert_eq!(call!(divi_si16(2, 32766)), 0); -assert_eq!(call!(divi_si16(2, 32767)), 0); -assert_eq!(call!(divi_si16(3, -32768)), 0); -assert_eq!(call!(divi_si16(3, -32767)), 0); -assert_eq!(call!(divi_si16(3, -32547)), 0); -assert_eq!(call!(divi_si16(3, 4)), 0); -assert_eq!(call!(divi_si16(3, 10486)), 0); -assert_eq!(call!(divi_si16(3, 16514)), 0); -assert_eq!(call!(divi_si16(3, 32766)), 0); -assert_eq!(call!(divi_si16(3, 32767)), 0); -assert_eq!(call!(divi_si16(4, -32768)), 0); -assert_eq!(call!(divi_si16(4, -32767)), 0); -assert_eq!(call!(divi_si16(4, -32547)), 0); -assert_eq!(call!(divi_si16(4, 10486)), 0); -assert_eq!(call!(divi_si16(4, 16514)), 0); -assert_eq!(call!(divi_si16(4, 32766)), 0); -assert_eq!(call!(divi_si16(4, 32767)), 0); -assert_eq!(call!(divi_si16(10486, -32768)), 0); -assert_eq!(call!(divi_si16(10486, -32767)), 0); -assert_eq!(call!(divi_si16(10486, -32547)), 0); -assert_eq!(call!(divi_si16(10486, 16514)), 0); -assert_eq!(call!(divi_si16(10486, 32766)), 0); -assert_eq!(call!(divi_si16(10486, 32767)), 0); -assert_eq!(call!(divi_si16(16514, -32768)), 0); -assert_eq!(call!(divi_si16(16514, -32767)), 0); -assert_eq!(call!(divi_si16(16514, -32547)), 0); -assert_eq!(call!(divi_si16(16514, 32766)), 0); -assert_eq!(call!(divi_si16(16514, 32767)), 0); -assert_eq!(call!(divi_si16(32766, -32768)), 0); -assert_eq!(call!(divi_si16(32766, -32767)), 0); -assert_eq!(call!(divi_si16(32766, 32767)), 0); -assert_eq!(call!(divi_si16(32767, -32768)), 0); -assert_eq!(call!(divi_si16(-32768, -32768)), 1); -assert_eq!(call!(divi_si16(-32768, -32767)), 1); -assert_eq!(call!(divi_si16(-32768, -32547)), 1); -assert_eq!(call!(divi_si16(-32767, -32767)), 1); -assert_eq!(call!(divi_si16(-32767, -32547)), 1); -assert_eq!(call!(divi_si16(-32547, -32547)), 1); -assert_eq!(call!(divi_si16(1, 1)), 1); -assert_eq!(call!(divi_si16(2, 2)), 1); -assert_eq!(call!(divi_si16(3, 2)), 1); -assert_eq!(call!(divi_si16(3, 3)), 1); -assert_eq!(call!(divi_si16(4, 3)), 1); -assert_eq!(call!(divi_si16(4, 4)), 1); -assert_eq!(call!(divi_si16(10486, 10486)), 1); -assert_eq!(call!(divi_si16(16514, 10486)), 1); -assert_eq!(call!(divi_si16(16514, 16514)), 1); -assert_eq!(call!(divi_si16(32766, 16514)), 1); -assert_eq!(call!(divi_si16(32766, 32766)), 1); -assert_eq!(call!(divi_si16(32767, 16514)), 1); -assert_eq!(call!(divi_si16(32767, 32766)), 1); -assert_eq!(call!(divi_si16(32767, 32767)), 1); -assert_eq!(call!(divi_si16(2, 1)), 2); -assert_eq!(call!(divi_si16(4, 2)), 2); -assert_eq!(call!(divi_si16(3, 1)), 3); -assert_eq!(call!(divi_si16(32766, 10486)), 3); -assert_eq!(call!(divi_si16(32767, 10486)), 3); -assert_eq!(call!(divi_si16(4, 1)), 4); -assert_eq!(call!(divi_si16(10486, 4)), 2621); -assert_eq!(call!(divi_si16(10486, 3)), 3495); -assert_eq!(call!(divi_si16(16514, 4)), 4128); -assert_eq!(call!(divi_si16(10486, 2)), 5243); -assert_eq!(call!(divi_si16(16514, 3)), 5504); -assert_eq!(call!(divi_si16(32766, 4)), 8191); -assert_eq!(call!(divi_si16(32767, 4)), 8191); -assert_eq!(call!(divi_si16(16514, 2)), 8257); -assert_eq!(call!(divi_si16(10486, 1)), 10486); -assert_eq!(call!(divi_si16(32766, 3)), 10922); -assert_eq!(call!(divi_si16(32767, 3)), 10922); -assert_eq!(call!(divi_si16(32766, 2)), 16383); -assert_eq!(call!(divi_si16(32767, 2)), 16383); -assert_eq!(call!(divi_si16(16514, 1)), 16514); -assert_eq!(call!(divi_si16(32766, 1)), 32766); -assert_eq!(call!(divi_si16(32767, 1)), 32767); -assert_eq!(call!(divi_si32(-2147483648, 1)), -2147483648); -assert_eq!(call!(divi_si32(-2147483647, 1)), -2147483647); -assert_eq!(call!(divi_si32(-1713183800, 1)), -1713183800); -assert_eq!(call!(divi_si32(-1252582164, 1)), -1252582164); -assert_eq!(call!(divi_si32(-2147483648, 2)), -1073741824); -assert_eq!(call!(divi_si32(-2147483647, 2)), -1073741823); -assert_eq!(call!(divi_si32(-1035405763, 1)), -1035405763); -assert_eq!(call!(divi_si32(-1713183800, 2)), -856591900); -assert_eq!(call!(divi_si32(-2147483648, 3)), -715827882); -assert_eq!(call!(divi_si32(-2147483647, 3)), -715827882); -assert_eq!(call!(divi_si32(-1252582164, 2)), -626291082); -assert_eq!(call!(divi_si32(-1713183800, 3)), -571061266); -assert_eq!(call!(divi_si32(-2147483648, 4)), -536870912); -assert_eq!(call!(divi_si32(-2147483647, 4)), -536870911); -assert_eq!(call!(divi_si32(-1035405763, 2)), -517702881); -assert_eq!(call!(divi_si32(-1713183800, 4)), -428295950); -assert_eq!(call!(divi_si32(-1252582164, 3)), -417527388); -assert_eq!(call!(divi_si32(-1035405763, 3)), -345135254); -assert_eq!(call!(divi_si32(-1252582164, 4)), -313145541); -assert_eq!(call!(divi_si32(-1035405763, 4)), -258851440); -assert_eq!(call!(divi_si32(2147483646, -1035405763)), -2); -assert_eq!(call!(divi_si32(2147483647, -1035405763)), -2); -assert_eq!(call!(divi_si32(-2147483648, 2147483646)), -1); -assert_eq!(call!(divi_si32(-2147483648, 2147483647)), -1); -assert_eq!(call!(divi_si32(-2147483647, 2147483646)), -1); -assert_eq!(call!(divi_si32(-2147483647, 2147483647)), -1); -assert_eq!(call!(divi_si32(2147483646, -1713183800)), -1); -assert_eq!(call!(divi_si32(2147483646, -1252582164)), -1); -assert_eq!(call!(divi_si32(2147483647, -2147483647)), -1); -assert_eq!(call!(divi_si32(2147483647, -1713183800)), -1); -assert_eq!(call!(divi_si32(2147483647, -1252582164)), -1); -assert_eq!(call!(divi_si32(-2147483647, -2147483648)), 0); -assert_eq!(call!(divi_si32(-1713183800, -2147483648)), 0); -assert_eq!(call!(divi_si32(-1713183800, -2147483647)), 0); -assert_eq!(call!(divi_si32(-1713183800, 2147483646)), 0); -assert_eq!(call!(divi_si32(-1713183800, 2147483647)), 0); -assert_eq!(call!(divi_si32(-1252582164, -2147483648)), 0); -assert_eq!(call!(divi_si32(-1252582164, -2147483647)), 0); -assert_eq!(call!(divi_si32(-1252582164, -1713183800)), 0); -assert_eq!(call!(divi_si32(-1252582164, 2147483646)), 0); -assert_eq!(call!(divi_si32(-1252582164, 2147483647)), 0); -assert_eq!(call!(divi_si32(-1035405763, -2147483648)), 0); -assert_eq!(call!(divi_si32(-1035405763, -2147483647)), 0); -assert_eq!(call!(divi_si32(-1035405763, -1713183800)), 0); -assert_eq!(call!(divi_si32(-1035405763, -1252582164)), 0); -assert_eq!(call!(divi_si32(-1035405763, 2147483646)), 0); -assert_eq!(call!(divi_si32(-1035405763, 2147483647)), 0); -assert_eq!(call!(divi_si32(0, -2147483648)), 0); -assert_eq!(call!(divi_si32(0, -2147483647)), 0); -assert_eq!(call!(divi_si32(0, -1713183800)), 0); -assert_eq!(call!(divi_si32(0, -1252582164)), 0); -assert_eq!(call!(divi_si32(0, -1035405763)), 0); -assert_eq!(call!(divi_si32(0, 1)), 0); -assert_eq!(call!(divi_si32(0, 2)), 0); -assert_eq!(call!(divi_si32(0, 3)), 0); -assert_eq!(call!(divi_si32(0, 4)), 0); -assert_eq!(call!(divi_si32(0, 2147483646)), 0); -assert_eq!(call!(divi_si32(0, 2147483647)), 0); -assert_eq!(call!(divi_si32(1, -2147483648)), 0); -assert_eq!(call!(divi_si32(1, -2147483647)), 0); -assert_eq!(call!(divi_si32(1, -1713183800)), 0); -assert_eq!(call!(divi_si32(1, -1252582164)), 0); -assert_eq!(call!(divi_si32(1, -1035405763)), 0); -assert_eq!(call!(divi_si32(1, 2)), 0); -assert_eq!(call!(divi_si32(1, 3)), 0); -assert_eq!(call!(divi_si32(1, 4)), 0); -assert_eq!(call!(divi_si32(1, 2147483646)), 0); -assert_eq!(call!(divi_si32(1, 2147483647)), 0); -assert_eq!(call!(divi_si32(2, -2147483648)), 0); -assert_eq!(call!(divi_si32(2, -2147483647)), 0); -assert_eq!(call!(divi_si32(2, -1713183800)), 0); -assert_eq!(call!(divi_si32(2, -1252582164)), 0); -assert_eq!(call!(divi_si32(2, -1035405763)), 0); -assert_eq!(call!(divi_si32(2, 3)), 0); -assert_eq!(call!(divi_si32(2, 4)), 0); -assert_eq!(call!(divi_si32(2, 2147483646)), 0); -assert_eq!(call!(divi_si32(2, 2147483647)), 0); -assert_eq!(call!(divi_si32(3, -2147483648)), 0); -assert_eq!(call!(divi_si32(3, -2147483647)), 0); -assert_eq!(call!(divi_si32(3, -1713183800)), 0); -assert_eq!(call!(divi_si32(3, -1252582164)), 0); -assert_eq!(call!(divi_si32(3, -1035405763)), 0); -assert_eq!(call!(divi_si32(3, 4)), 0); -assert_eq!(call!(divi_si32(3, 2147483646)), 0); -assert_eq!(call!(divi_si32(3, 2147483647)), 0); -assert_eq!(call!(divi_si32(4, -2147483648)), 0); -assert_eq!(call!(divi_si32(4, -2147483647)), 0); -assert_eq!(call!(divi_si32(4, -1713183800)), 0); -assert_eq!(call!(divi_si32(4, -1252582164)), 0); -assert_eq!(call!(divi_si32(4, -1035405763)), 0); -assert_eq!(call!(divi_si32(4, 2147483646)), 0); -assert_eq!(call!(divi_si32(4, 2147483647)), 0); -assert_eq!(call!(divi_si32(2147483646, -2147483648)), 0); -assert_eq!(call!(divi_si32(2147483646, -2147483647)), 0); -assert_eq!(call!(divi_si32(2147483646, 2147483647)), 0); -assert_eq!(call!(divi_si32(2147483647, -2147483648)), 0); -assert_eq!(call!(divi_si32(-2147483648, -2147483648)), 1); -assert_eq!(call!(divi_si32(-2147483648, -2147483647)), 1); -assert_eq!(call!(divi_si32(-2147483648, -1713183800)), 1); -assert_eq!(call!(divi_si32(-2147483648, -1252582164)), 1); -assert_eq!(call!(divi_si32(-2147483647, -2147483647)), 1); -assert_eq!(call!(divi_si32(-2147483647, -1713183800)), 1); -assert_eq!(call!(divi_si32(-2147483647, -1252582164)), 1); -assert_eq!(call!(divi_si32(-1713183800, -1713183800)), 1); -assert_eq!(call!(divi_si32(-1713183800, -1252582164)), 1); -assert_eq!(call!(divi_si32(-1713183800, -1035405763)), 1); -assert_eq!(call!(divi_si32(-1252582164, -1252582164)), 1); -assert_eq!(call!(divi_si32(-1252582164, -1035405763)), 1); -assert_eq!(call!(divi_si32(-1035405763, -1035405763)), 1); -assert_eq!(call!(divi_si32(1, 1)), 1); -assert_eq!(call!(divi_si32(2, 2)), 1); -assert_eq!(call!(divi_si32(3, 2)), 1); -assert_eq!(call!(divi_si32(3, 3)), 1); -assert_eq!(call!(divi_si32(4, 3)), 1); -assert_eq!(call!(divi_si32(4, 4)), 1); -assert_eq!(call!(divi_si32(2147483646, 2147483646)), 1); -assert_eq!(call!(divi_si32(2147483647, 2147483646)), 1); -assert_eq!(call!(divi_si32(2147483647, 2147483647)), 1); -assert_eq!(call!(divi_si32(-2147483648, -1035405763)), 2); -assert_eq!(call!(divi_si32(-2147483647, -1035405763)), 2); -assert_eq!(call!(divi_si32(2, 1)), 2); -assert_eq!(call!(divi_si32(4, 2)), 2); -assert_eq!(call!(divi_si32(3, 1)), 3); -assert_eq!(call!(divi_si32(4, 1)), 4); -assert_eq!(call!(divi_si32(2147483646, 4)), 536870911); -assert_eq!(call!(divi_si32(2147483647, 4)), 536870911); -assert_eq!(call!(divi_si32(2147483646, 3)), 715827882); -assert_eq!(call!(divi_si32(2147483647, 3)), 715827882); -assert_eq!(call!(divi_si32(2147483646, 2)), 1073741823); -assert_eq!(call!(divi_si32(2147483647, 2)), 1073741823); -assert_eq!(call!(divi_si32(2147483646, 1)), 2147483646); -assert_eq!(call!(divi_si32(2147483647, 1)), 2147483647); -assert_eq!(call!(divi_si64(-9223372036854775808, 1)), -9223372036854775808); -assert_eq!(call!(divi_si64(-9223372036854775807, 1)), -9223372036854775807); -assert_eq!(call!(divi_si64(-9223372036854775808, 2)), -4611686018427387904); -assert_eq!(call!(divi_si64(-9223372036854775807, 2)), -4611686018427387903); -assert_eq!(call!(divi_si64(-9223372036854775808, 3)), -3074457345618258602); -assert_eq!(call!(divi_si64(-9223372036854775807, 3)), -3074457345618258602); -assert_eq!(call!(divi_si64(-9223372036854775808, 4)), -2305843009213693952); -assert_eq!(call!(divi_si64(-9223372036854775807, 4)), -2305843009213693951); -assert_eq!(call!(divi_si64(-1741927215160008704, 1)), -1741927215160008704); -assert_eq!(call!(divi_si64(-1328271339354574848, 1)), -1328271339354574848); -assert_eq!(call!(divi_si64(-1741927215160008704, 2)), -870963607580004352); -assert_eq!(call!(divi_si64(-1328271339354574848, 2)), -664135669677287424); -assert_eq!(call!(divi_si64(-1741927215160008704, 3)), -580642405053336234); -assert_eq!(call!(divi_si64(-1328271339354574848, 3)), -442757113118191616); -assert_eq!(call!(divi_si64(-1741927215160008704, 4)), -435481803790002176); -assert_eq!(call!(divi_si64(-1328271339354574848, 4)), -332067834838643712); -assert_eq!(call!(divi_si64(9223372036854775806, -1328271339354574848)), -6); -assert_eq!(call!(divi_si64(9223372036854775807, -1328271339354574848)), -6); -assert_eq!(call!(divi_si64(9223372036854775806, -1741927215160008704)), -5); -assert_eq!(call!(divi_si64(9223372036854775807, -1741927215160008704)), -5); -assert_eq!(call!(divi_si64(5577148965131116544, -1328271339354574848)), -4); -assert_eq!(call!(divi_si64(5577148965131116544, -1741927215160008704)), -3); -assert_eq!(call!(divi_si64(-9223372036854775808, 5577148965131116544)), -1); -assert_eq!(call!(divi_si64(-9223372036854775808, 9223372036854775806)), -1); -assert_eq!(call!(divi_si64(-9223372036854775808, 9223372036854775807)), -1); -assert_eq!(call!(divi_si64(-9223372036854775807, 5577148965131116544)), -1); -assert_eq!(call!(divi_si64(-9223372036854775807, 9223372036854775806)), -1); -assert_eq!(call!(divi_si64(-9223372036854775807, 9223372036854775807)), -1); -assert_eq!(call!(divi_si64(9223372036854775807, -9223372036854775807)), -1); -assert_eq!(call!(divi_si64(-9223372036854775807, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(-1741927215160008704, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(-1741927215160008704, -9223372036854775807)), 0); -assert_eq!(call!(divi_si64(-1741927215160008704, 5577148965131116544)), 0); -assert_eq!(call!(divi_si64(-1741927215160008704, 9223372036854775806)), 0); -assert_eq!(call!(divi_si64(-1741927215160008704, 9223372036854775807)), 0); -assert_eq!(call!(divi_si64(-1328271339354574848, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(-1328271339354574848, -9223372036854775807)), 0); -assert_eq!(call!(divi_si64(-1328271339354574848, -1741927215160008704)), 0); -assert_eq!(call!(divi_si64(-1328271339354574848, 5577148965131116544)), 0); -assert_eq!(call!(divi_si64(-1328271339354574848, 9223372036854775806)), 0); -assert_eq!(call!(divi_si64(-1328271339354574848, 9223372036854775807)), 0); -assert_eq!(call!(divi_si64(0, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(0, -9223372036854775807)), 0); -assert_eq!(call!(divi_si64(0, -1741927215160008704)), 0); -assert_eq!(call!(divi_si64(0, -1328271339354574848)), 0); -assert_eq!(call!(divi_si64(0, 1)), 0); -assert_eq!(call!(divi_si64(0, 2)), 0); -assert_eq!(call!(divi_si64(0, 3)), 0); -assert_eq!(call!(divi_si64(0, 4)), 0); -assert_eq!(call!(divi_si64(0, 5577148965131116544)), 0); -assert_eq!(call!(divi_si64(0, 9223372036854775806)), 0); -assert_eq!(call!(divi_si64(0, 9223372036854775807)), 0); -assert_eq!(call!(divi_si64(1, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(1, -9223372036854775807)), 0); -assert_eq!(call!(divi_si64(1, -1741927215160008704)), 0); -assert_eq!(call!(divi_si64(1, -1328271339354574848)), 0); -assert_eq!(call!(divi_si64(1, 2)), 0); -assert_eq!(call!(divi_si64(1, 3)), 0); -assert_eq!(call!(divi_si64(1, 4)), 0); -assert_eq!(call!(divi_si64(1, 5577148965131116544)), 0); -assert_eq!(call!(divi_si64(1, 9223372036854775806)), 0); -assert_eq!(call!(divi_si64(1, 9223372036854775807)), 0); -assert_eq!(call!(divi_si64(2, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(2, -9223372036854775807)), 0); -assert_eq!(call!(divi_si64(2, -1741927215160008704)), 0); -assert_eq!(call!(divi_si64(2, -1328271339354574848)), 0); -assert_eq!(call!(divi_si64(2, 3)), 0); -assert_eq!(call!(divi_si64(2, 4)), 0); -assert_eq!(call!(divi_si64(2, 5577148965131116544)), 0); -assert_eq!(call!(divi_si64(2, 9223372036854775806)), 0); -assert_eq!(call!(divi_si64(2, 9223372036854775807)), 0); -assert_eq!(call!(divi_si64(3, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(3, -9223372036854775807)), 0); -assert_eq!(call!(divi_si64(3, -1741927215160008704)), 0); -assert_eq!(call!(divi_si64(3, -1328271339354574848)), 0); -assert_eq!(call!(divi_si64(3, 4)), 0); -assert_eq!(call!(divi_si64(3, 5577148965131116544)), 0); -assert_eq!(call!(divi_si64(3, 9223372036854775806)), 0); -assert_eq!(call!(divi_si64(3, 9223372036854775807)), 0); -assert_eq!(call!(divi_si64(4, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(4, -9223372036854775807)), 0); -assert_eq!(call!(divi_si64(4, -1741927215160008704)), 0); -assert_eq!(call!(divi_si64(4, -1328271339354574848)), 0); -assert_eq!(call!(divi_si64(4, 5577148965131116544)), 0); -assert_eq!(call!(divi_si64(4, 9223372036854775806)), 0); -assert_eq!(call!(divi_si64(4, 9223372036854775807)), 0); -assert_eq!(call!(divi_si64(5577148965131116544, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(5577148965131116544, -9223372036854775807)), 0); -assert_eq!(call!(divi_si64(5577148965131116544, 9223372036854775806)), 0); -assert_eq!(call!(divi_si64(5577148965131116544, 9223372036854775807)), 0); -assert_eq!(call!(divi_si64(9223372036854775806, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(9223372036854775806, -9223372036854775807)), 0); -assert_eq!(call!(divi_si64(9223372036854775806, 9223372036854775807)), 0); -assert_eq!(call!(divi_si64(9223372036854775807, -9223372036854775808)), 0); -assert_eq!(call!(divi_si64(-9223372036854775808, -9223372036854775808)), 1); -assert_eq!(call!(divi_si64(-9223372036854775808, -9223372036854775807)), 1); -assert_eq!(call!(divi_si64(-9223372036854775807, -9223372036854775807)), 1); -assert_eq!(call!(divi_si64(-1741927215160008704, -1741927215160008704)), 1); -assert_eq!(call!(divi_si64(-1741927215160008704, -1328271339354574848)), 1); -assert_eq!(call!(divi_si64(-1328271339354574848, -1328271339354574848)), 1); -assert_eq!(call!(divi_si64(1, 1)), 1); -assert_eq!(call!(divi_si64(2, 2)), 1); -assert_eq!(call!(divi_si64(3, 2)), 1); -assert_eq!(call!(divi_si64(3, 3)), 1); -assert_eq!(call!(divi_si64(4, 3)), 1); -assert_eq!(call!(divi_si64(4, 4)), 1); -assert_eq!(call!(divi_si64(5577148965131116544, 5577148965131116544)), 1); -assert_eq!(call!(divi_si64(9223372036854775806, 5577148965131116544)), 1); -assert_eq!(call!(divi_si64(9223372036854775806, 9223372036854775806)), 1); -assert_eq!(call!(divi_si64(9223372036854775807, 5577148965131116544)), 1); -assert_eq!(call!(divi_si64(9223372036854775807, 9223372036854775806)), 1); -assert_eq!(call!(divi_si64(9223372036854775807, 9223372036854775807)), 1); -assert_eq!(call!(divi_si64(2, 1)), 2); -assert_eq!(call!(divi_si64(4, 2)), 2); -assert_eq!(call!(divi_si64(3, 1)), 3); -assert_eq!(call!(divi_si64(4, 1)), 4); -assert_eq!(call!(divi_si64(-9223372036854775808, -1741927215160008704)), 5); -assert_eq!(call!(divi_si64(-9223372036854775807, -1741927215160008704)), 5); -assert_eq!(call!(divi_si64(-9223372036854775808, -1328271339354574848)), 6); -assert_eq!(call!(divi_si64(-9223372036854775807, -1328271339354574848)), 6); -assert_eq!(call!(divi_si64(5577148965131116544, 4)), 1394287241282779136); -assert_eq!(call!(divi_si64(5577148965131116544, 3)), 1859049655043705514); -assert_eq!(call!(divi_si64(9223372036854775806, 4)), 2305843009213693951); -assert_eq!(call!(divi_si64(9223372036854775807, 4)), 2305843009213693951); -assert_eq!(call!(divi_si64(5577148965131116544, 2)), 2788574482565558272); -assert_eq!(call!(divi_si64(9223372036854775806, 3)), 3074457345618258602); -assert_eq!(call!(divi_si64(9223372036854775807, 3)), 3074457345618258602); -assert_eq!(call!(divi_si64(9223372036854775806, 2)), 4611686018427387903); -assert_eq!(call!(divi_si64(9223372036854775807, 2)), 4611686018427387903); -assert_eq!(call!(divi_si64(5577148965131116544, 1)), 5577148965131116544); -assert_eq!(call!(divi_si64(9223372036854775806, 1)), 9223372036854775806); -assert_eq!(call!(divi_si64(9223372036854775807, 1)), 9223372036854775807); -assert_eq!(call!(divi_si8(-128, 1)), -128); -assert_eq!(call!(divi_si8(-127, 1)), -127); -assert_eq!(call!(divi_si8(-128, 2)), -64); -assert_eq!(call!(divi_si8(-127, 2)), -63); -assert_eq!(call!(divi_si8(-128, 3)), -42); -assert_eq!(call!(divi_si8(-127, 3)), -42); -assert_eq!(call!(divi_si8(-128, 4)), -32); -assert_eq!(call!(divi_si8(-127, 4)), -31); -assert_eq!(call!(divi_si8(-128, 16)), -8); -assert_eq!(call!(divi_si8(-127, 16)), -7); -assert_eq!(call!(divi_si8(-128, 126)), -1); -assert_eq!(call!(divi_si8(-128, 127)), -1); -assert_eq!(call!(divi_si8(-127, 126)), -1); -assert_eq!(call!(divi_si8(-127, 127)), -1); -assert_eq!(call!(divi_si8(127, -127)), -1); -assert_eq!(call!(divi_si8(-127, -128)), 0); -assert_eq!(call!(divi_si8(0, -128)), 0); -assert_eq!(call!(divi_si8(0, -127)), 0); -assert_eq!(call!(divi_si8(0, 1)), 0); -assert_eq!(call!(divi_si8(0, 2)), 0); -assert_eq!(call!(divi_si8(0, 3)), 0); -assert_eq!(call!(divi_si8(0, 4)), 0); -assert_eq!(call!(divi_si8(0, 16)), 0); -assert_eq!(call!(divi_si8(0, 126)), 0); -assert_eq!(call!(divi_si8(0, 127)), 0); -assert_eq!(call!(divi_si8(1, -128)), 0); -assert_eq!(call!(divi_si8(1, -127)), 0); -assert_eq!(call!(divi_si8(1, 2)), 0); -assert_eq!(call!(divi_si8(1, 3)), 0); -assert_eq!(call!(divi_si8(1, 4)), 0); -assert_eq!(call!(divi_si8(1, 16)), 0); -assert_eq!(call!(divi_si8(1, 126)), 0); -assert_eq!(call!(divi_si8(1, 127)), 0); -assert_eq!(call!(divi_si8(2, -128)), 0); -assert_eq!(call!(divi_si8(2, -127)), 0); -assert_eq!(call!(divi_si8(2, 3)), 0); -assert_eq!(call!(divi_si8(2, 4)), 0); -assert_eq!(call!(divi_si8(2, 16)), 0); -assert_eq!(call!(divi_si8(2, 126)), 0); -assert_eq!(call!(divi_si8(2, 127)), 0); -assert_eq!(call!(divi_si8(3, -128)), 0); -assert_eq!(call!(divi_si8(3, -127)), 0); -assert_eq!(call!(divi_si8(3, 4)), 0); -assert_eq!(call!(divi_si8(3, 16)), 0); -assert_eq!(call!(divi_si8(3, 126)), 0); -assert_eq!(call!(divi_si8(3, 127)), 0); -assert_eq!(call!(divi_si8(4, -128)), 0); -assert_eq!(call!(divi_si8(4, -127)), 0); -assert_eq!(call!(divi_si8(4, 16)), 0); -assert_eq!(call!(divi_si8(4, 126)), 0); -assert_eq!(call!(divi_si8(4, 127)), 0); -assert_eq!(call!(divi_si8(16, -128)), 0); -assert_eq!(call!(divi_si8(16, -127)), 0); -assert_eq!(call!(divi_si8(16, 126)), 0); -assert_eq!(call!(divi_si8(16, 127)), 0); -assert_eq!(call!(divi_si8(126, -128)), 0); -assert_eq!(call!(divi_si8(126, -127)), 0); -assert_eq!(call!(divi_si8(126, 127)), 0); -assert_eq!(call!(divi_si8(127, -128)), 0); -assert_eq!(call!(divi_si8(-128, -128)), 1); -assert_eq!(call!(divi_si8(-128, -127)), 1); -assert_eq!(call!(divi_si8(-127, -127)), 1); -assert_eq!(call!(divi_si8(1, 1)), 1); -assert_eq!(call!(divi_si8(2, 2)), 1); -assert_eq!(call!(divi_si8(3, 2)), 1); -assert_eq!(call!(divi_si8(3, 3)), 1); -assert_eq!(call!(divi_si8(4, 3)), 1); -assert_eq!(call!(divi_si8(4, 4)), 1); -assert_eq!(call!(divi_si8(16, 16)), 1); -assert_eq!(call!(divi_si8(126, 126)), 1); -assert_eq!(call!(divi_si8(127, 126)), 1); -assert_eq!(call!(divi_si8(127, 127)), 1); -assert_eq!(call!(divi_si8(2, 1)), 2); -assert_eq!(call!(divi_si8(4, 2)), 2); -assert_eq!(call!(divi_si8(3, 1)), 3); -assert_eq!(call!(divi_si8(4, 1)), 4); -assert_eq!(call!(divi_si8(16, 4)), 4); -assert_eq!(call!(divi_si8(16, 3)), 5); -assert_eq!(call!(divi_si8(126, 16)), 7); -assert_eq!(call!(divi_si8(127, 16)), 7); -assert_eq!(call!(divi_si8(16, 2)), 8); -assert_eq!(call!(divi_si8(16, 1)), 16); -assert_eq!(call!(divi_si8(126, 4)), 31); -assert_eq!(call!(divi_si8(127, 4)), 31); -assert_eq!(call!(divi_si8(126, 3)), 42); -assert_eq!(call!(divi_si8(127, 3)), 42); -assert_eq!(call!(divi_si8(126, 2)), 63); -assert_eq!(call!(divi_si8(127, 2)), 63); -assert_eq!(call!(divi_si8(126, 1)), 126); -assert_eq!(call!(divi_si8(127, 1)), 127); -assert_eq!(call!(divi_ui16(0, 1)), 0); -assert_eq!(call!(divi_ui16(0, 2)), 0); -assert_eq!(call!(divi_ui16(0, 3)), 0); -assert_eq!(call!(divi_ui16(0, 4)), 0); -assert_eq!(call!(divi_ui16(0, 1717)), 0); -assert_eq!(call!(divi_ui16(0, 17988)), 0); -assert_eq!(call!(divi_ui16(0, 65096)), 0); -assert_eq!(call!(divi_ui16(0, 65534)), 0); -assert_eq!(call!(divi_ui16(0, 65535)), 0); -assert_eq!(call!(divi_ui16(1, 2)), 0); -assert_eq!(call!(divi_ui16(1, 3)), 0); -assert_eq!(call!(divi_ui16(1, 4)), 0); -assert_eq!(call!(divi_ui16(1, 1717)), 0); -assert_eq!(call!(divi_ui16(1, 17988)), 0); -assert_eq!(call!(divi_ui16(1, 65096)), 0); -assert_eq!(call!(divi_ui16(1, 65534)), 0); -assert_eq!(call!(divi_ui16(1, 65535)), 0); -assert_eq!(call!(divi_ui16(2, 3)), 0); -assert_eq!(call!(divi_ui16(2, 4)), 0); -assert_eq!(call!(divi_ui16(2, 1717)), 0); -assert_eq!(call!(divi_ui16(2, 17988)), 0); -assert_eq!(call!(divi_ui16(2, 65096)), 0); -assert_eq!(call!(divi_ui16(2, 65534)), 0); -assert_eq!(call!(divi_ui16(2, 65535)), 0); -assert_eq!(call!(divi_ui16(3, 4)), 0); -assert_eq!(call!(divi_ui16(3, 1717)), 0); -assert_eq!(call!(divi_ui16(3, 17988)), 0); -assert_eq!(call!(divi_ui16(3, 65096)), 0); -assert_eq!(call!(divi_ui16(3, 65534)), 0); -assert_eq!(call!(divi_ui16(3, 65535)), 0); -assert_eq!(call!(divi_ui16(4, 1717)), 0); -assert_eq!(call!(divi_ui16(4, 17988)), 0); -assert_eq!(call!(divi_ui16(4, 65096)), 0); -assert_eq!(call!(divi_ui16(4, 65534)), 0); -assert_eq!(call!(divi_ui16(4, 65535)), 0); -assert_eq!(call!(divi_ui16(1717, 17988)), 0); -assert_eq!(call!(divi_ui16(1717, 65096)), 0); -assert_eq!(call!(divi_ui16(1717, 65534)), 0); -assert_eq!(call!(divi_ui16(1717, 65535)), 0); -assert_eq!(call!(divi_ui16(17988, 65096)), 0); -assert_eq!(call!(divi_ui16(17988, 65534)), 0); -assert_eq!(call!(divi_ui16(17988, 65535)), 0); -assert_eq!(call!(divi_ui16(65096, 65534)), 0); -assert_eq!(call!(divi_ui16(65096, 65535)), 0); -assert_eq!(call!(divi_ui16(65534, 65535)), 0); -assert_eq!(call!(divi_ui16(1, 1)), 1); -assert_eq!(call!(divi_ui16(2, 2)), 1); -assert_eq!(call!(divi_ui16(3, 2)), 1); -assert_eq!(call!(divi_ui16(3, 3)), 1); -assert_eq!(call!(divi_ui16(4, 3)), 1); -assert_eq!(call!(divi_ui16(4, 4)), 1); -assert_eq!(call!(divi_ui16(1717, 1717)), 1); -assert_eq!(call!(divi_ui16(17988, 17988)), 1); -assert_eq!(call!(divi_ui16(65096, 65096)), 1); -assert_eq!(call!(divi_ui16(65534, 65096)), 1); -assert_eq!(call!(divi_ui16(65534, 65534)), 1); -assert_eq!(call!(divi_ui16(65535, 65096)), 1); -assert_eq!(call!(divi_ui16(65535, 65534)), 1); -assert_eq!(call!(divi_ui16(65535, 65535)), 1); -assert_eq!(call!(divi_ui16(2, 1)), 2); -assert_eq!(call!(divi_ui16(4, 2)), 2); -assert_eq!(call!(divi_ui16(3, 1)), 3); -assert_eq!(call!(divi_ui16(65096, 17988)), 3); -assert_eq!(call!(divi_ui16(65534, 17988)), 3); -assert_eq!(call!(divi_ui16(65535, 17988)), 3); -assert_eq!(call!(divi_ui16(4, 1)), 4); -assert_eq!(call!(divi_ui16(17988, 1717)), 10); -assert_eq!(call!(divi_ui16(65096, 1717)), 37); -assert_eq!(call!(divi_ui16(65534, 1717)), 38); -assert_eq!(call!(divi_ui16(65535, 1717)), 38); -assert_eq!(call!(divi_ui16(1717, 4)), 429); -assert_eq!(call!(divi_ui16(1717, 3)), 572); -assert_eq!(call!(divi_ui16(1717, 2)), 858); -assert_eq!(call!(divi_ui16(1717, 1)), 1717); -assert_eq!(call!(divi_ui16(17988, 4)), 4497); -assert_eq!(call!(divi_ui16(17988, 3)), 5996); -assert_eq!(call!(divi_ui16(17988, 2)), 8994); -assert_eq!(call!(divi_ui16(65096, 4)), 16274); -assert_eq!(call!(divi_ui16(65534, 4)), 16383); -assert_eq!(call!(divi_ui16(65535, 4)), 16383); -assert_eq!(call!(divi_ui16(17988, 1)), 17988); -assert_eq!(call!(divi_ui16(65096, 3)), 21698); -assert_eq!(call!(divi_ui16(65534, 3)), 21844); -assert_eq!(call!(divi_ui16(65535, 3)), 21845); -assert_eq!(call!(divi_ui16(65096, 2)), 32548); -assert_eq!(call!(divi_ui16(65534, 2)), 32767); -assert_eq!(call!(divi_ui16(65535, 2)), 32767); -assert_eq!(call!(divi_ui16(65096, 1)), 65096); -assert_eq!(call!(divi_ui16(65534, 1)), 65534); -assert_eq!(call!(divi_ui16(65535, 1)), 65535); -assert_eq!(call!(divi_ui32(0, 1)), 0); -assert_eq!(call!(divi_ui32(0, 2)), 0); -assert_eq!(call!(divi_ui32(0, 3)), 0); -assert_eq!(call!(divi_ui32(0, 4)), 0); -assert_eq!(call!(divi_ui32(0, 2119154652)), 0); -assert_eq!(call!(divi_ui32(0, 3002788344)), 0); -assert_eq!(call!(divi_ui32(0, 3482297128)), 0); -assert_eq!(call!(divi_ui32(0, 4294967294)), 0); -assert_eq!(call!(divi_ui32(0, 4294967295)), 0); -assert_eq!(call!(divi_ui32(1, 2)), 0); -assert_eq!(call!(divi_ui32(1, 3)), 0); -assert_eq!(call!(divi_ui32(1, 4)), 0); -assert_eq!(call!(divi_ui32(1, 2119154652)), 0); -assert_eq!(call!(divi_ui32(1, 3002788344)), 0); -assert_eq!(call!(divi_ui32(1, 3482297128)), 0); -assert_eq!(call!(divi_ui32(1, 4294967294)), 0); -assert_eq!(call!(divi_ui32(1, 4294967295)), 0); -assert_eq!(call!(divi_ui32(2, 3)), 0); -assert_eq!(call!(divi_ui32(2, 4)), 0); -assert_eq!(call!(divi_ui32(2, 2119154652)), 0); -assert_eq!(call!(divi_ui32(2, 3002788344)), 0); -assert_eq!(call!(divi_ui32(2, 3482297128)), 0); -assert_eq!(call!(divi_ui32(2, 4294967294)), 0); -assert_eq!(call!(divi_ui32(2, 4294967295)), 0); -assert_eq!(call!(divi_ui32(3, 4)), 0); -assert_eq!(call!(divi_ui32(3, 2119154652)), 0); -assert_eq!(call!(divi_ui32(3, 3002788344)), 0); -assert_eq!(call!(divi_ui32(3, 3482297128)), 0); -assert_eq!(call!(divi_ui32(3, 4294967294)), 0); -assert_eq!(call!(divi_ui32(3, 4294967295)), 0); -assert_eq!(call!(divi_ui32(4, 2119154652)), 0); -assert_eq!(call!(divi_ui32(4, 3002788344)), 0); -assert_eq!(call!(divi_ui32(4, 3482297128)), 0); -assert_eq!(call!(divi_ui32(4, 4294967294)), 0); -assert_eq!(call!(divi_ui32(4, 4294967295)), 0); -assert_eq!(call!(divi_ui32(2119154652, 3002788344)), 0); -assert_eq!(call!(divi_ui32(2119154652, 3482297128)), 0); -assert_eq!(call!(divi_ui32(2119154652, 4294967294)), 0); -assert_eq!(call!(divi_ui32(2119154652, 4294967295)), 0); -assert_eq!(call!(divi_ui32(3002788344, 3482297128)), 0); -assert_eq!(call!(divi_ui32(3002788344, 4294967294)), 0); -assert_eq!(call!(divi_ui32(3002788344, 4294967295)), 0); -assert_eq!(call!(divi_ui32(3482297128, 4294967294)), 0); -assert_eq!(call!(divi_ui32(3482297128, 4294967295)), 0); -assert_eq!(call!(divi_ui32(4294967294, 4294967295)), 0); -assert_eq!(call!(divi_ui32(1, 1)), 1); -assert_eq!(call!(divi_ui32(2, 2)), 1); -assert_eq!(call!(divi_ui32(3, 2)), 1); -assert_eq!(call!(divi_ui32(3, 3)), 1); -assert_eq!(call!(divi_ui32(4, 3)), 1); -assert_eq!(call!(divi_ui32(4, 4)), 1); -assert_eq!(call!(divi_ui32(2119154652, 2119154652)), 1); -assert_eq!(call!(divi_ui32(3002788344, 2119154652)), 1); -assert_eq!(call!(divi_ui32(3002788344, 3002788344)), 1); -assert_eq!(call!(divi_ui32(3482297128, 2119154652)), 1); -assert_eq!(call!(divi_ui32(3482297128, 3002788344)), 1); -assert_eq!(call!(divi_ui32(3482297128, 3482297128)), 1); -assert_eq!(call!(divi_ui32(4294967294, 3002788344)), 1); -assert_eq!(call!(divi_ui32(4294967294, 3482297128)), 1); -assert_eq!(call!(divi_ui32(4294967294, 4294967294)), 1); -assert_eq!(call!(divi_ui32(4294967295, 3002788344)), 1); -assert_eq!(call!(divi_ui32(4294967295, 3482297128)), 1); -assert_eq!(call!(divi_ui32(4294967295, 4294967294)), 1); -assert_eq!(call!(divi_ui32(4294967295, 4294967295)), 1); -assert_eq!(call!(divi_ui32(2, 1)), 2); -assert_eq!(call!(divi_ui32(4, 2)), 2); -assert_eq!(call!(divi_ui32(4294967294, 2119154652)), 2); -assert_eq!(call!(divi_ui32(4294967295, 2119154652)), 2); -assert_eq!(call!(divi_ui32(3, 1)), 3); -assert_eq!(call!(divi_ui32(4, 1)), 4); -assert_eq!(call!(divi_ui32(2119154652, 4)), 529788663); -assert_eq!(call!(divi_ui32(2119154652, 3)), 706384884); -assert_eq!(call!(divi_ui32(3002788344, 4)), 750697086); -assert_eq!(call!(divi_ui32(3482297128, 4)), 870574282); -assert_eq!(call!(divi_ui32(3002788344, 3)), 1000929448); -assert_eq!(call!(divi_ui32(2119154652, 2)), 1059577326); -assert_eq!(call!(divi_ui32(4294967294, 4)), 1073741823); -assert_eq!(call!(divi_ui32(4294967295, 4)), 1073741823); -assert_eq!(call!(divi_ui32(3482297128, 3)), 1160765709); -assert_eq!(call!(divi_ui32(4294967294, 3)), 1431655764); -assert_eq!(call!(divi_ui32(4294967295, 3)), 1431655765); -assert_eq!(call!(divi_ui32(3002788344, 2)), 1501394172); -assert_eq!(call!(divi_ui32(3482297128, 2)), 1741148564); -assert_eq!(call!(divi_ui32(2119154652, 1)), 2119154652); -assert_eq!(call!(divi_ui32(4294967294, 2)), 2147483647); -assert_eq!(call!(divi_ui32(4294967295, 2)), 2147483647); -assert_eq!(call!(divi_ui32(3002788344, 1)), 3002788344); -assert_eq!(call!(divi_ui32(3482297128, 1)), 3482297128); -assert_eq!(call!(divi_ui32(4294967294, 1)), 4294967294); -assert_eq!(call!(divi_ui32(4294967295, 1)), 4294967295); -assert_eq!(call!(divi_ui64(0, 1)), 0); -assert_eq!(call!(divi_ui64(0, 2)), 0); -assert_eq!(call!(divi_ui64(0, 3)), 0); -assert_eq!(call!(divi_ui64(0, 4)), 0); -assert_eq!(call!(divi_ui64(0, 191084152064409600)), 0); -assert_eq!(call!(divi_ui64(0, 11015955194427482112)), 0); -assert_eq!(call!(divi_ui64(0, 16990600415051759616)), 0); -assert_eq!(call!(divi_ui64(0, 18446744073709551614)), 0); -assert_eq!(call!(divi_ui64(0, 18446744073709551615)), 0); -assert_eq!(call!(divi_ui64(1, 2)), 0); -assert_eq!(call!(divi_ui64(1, 3)), 0); -assert_eq!(call!(divi_ui64(1, 4)), 0); -assert_eq!(call!(divi_ui64(1, 191084152064409600)), 0); -assert_eq!(call!(divi_ui64(1, 11015955194427482112)), 0); -assert_eq!(call!(divi_ui64(1, 16990600415051759616)), 0); -assert_eq!(call!(divi_ui64(1, 18446744073709551614)), 0); -assert_eq!(call!(divi_ui64(1, 18446744073709551615)), 0); -assert_eq!(call!(divi_ui64(2, 3)), 0); -assert_eq!(call!(divi_ui64(2, 4)), 0); -assert_eq!(call!(divi_ui64(2, 191084152064409600)), 0); -assert_eq!(call!(divi_ui64(2, 11015955194427482112)), 0); -assert_eq!(call!(divi_ui64(2, 16990600415051759616)), 0); -assert_eq!(call!(divi_ui64(2, 18446744073709551614)), 0); -assert_eq!(call!(divi_ui64(2, 18446744073709551615)), 0); -assert_eq!(call!(divi_ui64(3, 4)), 0); -assert_eq!(call!(divi_ui64(3, 191084152064409600)), 0); -assert_eq!(call!(divi_ui64(3, 11015955194427482112)), 0); -assert_eq!(call!(divi_ui64(3, 16990600415051759616)), 0); -assert_eq!(call!(divi_ui64(3, 18446744073709551614)), 0); -assert_eq!(call!(divi_ui64(3, 18446744073709551615)), 0); -assert_eq!(call!(divi_ui64(4, 191084152064409600)), 0); -assert_eq!(call!(divi_ui64(4, 11015955194427482112)), 0); -assert_eq!(call!(divi_ui64(4, 16990600415051759616)), 0); -assert_eq!(call!(divi_ui64(4, 18446744073709551614)), 0); -assert_eq!(call!(divi_ui64(4, 18446744073709551615)), 0); -assert_eq!(call!(divi_ui64(191084152064409600, 11015955194427482112)), 0); -assert_eq!(call!(divi_ui64(191084152064409600, 16990600415051759616)), 0); -assert_eq!(call!(divi_ui64(191084152064409600, 18446744073709551614)), 0); -assert_eq!(call!(divi_ui64(191084152064409600, 18446744073709551615)), 0); -assert_eq!(call!(divi_ui64(11015955194427482112, 16990600415051759616)), 0); -assert_eq!(call!(divi_ui64(11015955194427482112, 18446744073709551614)), 0); -assert_eq!(call!(divi_ui64(11015955194427482112, 18446744073709551615)), 0); -assert_eq!(call!(divi_ui64(16990600415051759616, 18446744073709551614)), 0); -assert_eq!(call!(divi_ui64(16990600415051759616, 18446744073709551615)), 0); -assert_eq!(call!(divi_ui64(18446744073709551614, 18446744073709551615)), 0); -assert_eq!(call!(divi_ui64(1, 1)), 1); -assert_eq!(call!(divi_ui64(2, 2)), 1); -assert_eq!(call!(divi_ui64(3, 2)), 1); -assert_eq!(call!(divi_ui64(3, 3)), 1); -assert_eq!(call!(divi_ui64(4, 3)), 1); -assert_eq!(call!(divi_ui64(4, 4)), 1); -assert_eq!(call!(divi_ui64(191084152064409600, 191084152064409600)), 1); -assert_eq!(call!(divi_ui64(11015955194427482112, 11015955194427482112)), 1); -assert_eq!(call!(divi_ui64(16990600415051759616, 11015955194427482112)), 1); -assert_eq!(call!(divi_ui64(16990600415051759616, 16990600415051759616)), 1); -assert_eq!(call!(divi_ui64(18446744073709551614, 11015955194427482112)), 1); -assert_eq!(call!(divi_ui64(18446744073709551614, 16990600415051759616)), 1); -assert_eq!(call!(divi_ui64(18446744073709551614, 18446744073709551614)), 1); -assert_eq!(call!(divi_ui64(18446744073709551615, 11015955194427482112)), 1); -assert_eq!(call!(divi_ui64(18446744073709551615, 16990600415051759616)), 1); -assert_eq!(call!(divi_ui64(18446744073709551615, 18446744073709551614)), 1); -assert_eq!(call!(divi_ui64(18446744073709551615, 18446744073709551615)), 1); -assert_eq!(call!(divi_ui64(2, 1)), 2); -assert_eq!(call!(divi_ui64(4, 2)), 2); -assert_eq!(call!(divi_ui64(3, 1)), 3); -assert_eq!(call!(divi_ui64(4, 1)), 4); -assert_eq!(call!(divi_ui64(11015955194427482112, 191084152064409600)), 57); -assert_eq!(call!(divi_ui64(16990600415051759616, 191084152064409600)), 88); -assert_eq!(call!(divi_ui64(18446744073709551614, 191084152064409600)), 96); -assert_eq!(call!(divi_ui64(18446744073709551615, 191084152064409600)), 96); -assert_eq!(call!(divi_ui64(191084152064409600, 4)), 47771038016102400); -assert_eq!(call!(divi_ui64(191084152064409600, 3)), 63694717354803200); -assert_eq!(call!(divi_ui64(191084152064409600, 2)), 95542076032204800); -assert_eq!(call!(divi_ui64(191084152064409600, 1)), 191084152064409600); -assert_eq!(call!(divi_ui64(11015955194427482112, 4)), 2753988798606870528); -assert_eq!(call!(divi_ui64(11015955194427482112, 3)), 3671985064809160704); -assert_eq!(call!(divi_ui64(16990600415051759616, 4)), 4247650103762939904); -assert_eq!(call!(divi_ui64(18446744073709551614, 4)), 4611686018427387903); -assert_eq!(call!(divi_ui64(18446744073709551615, 4)), 4611686018427387903); -assert_eq!(call!(divi_ui64(11015955194427482112, 2)), 5507977597213741056); -assert_eq!(call!(divi_ui64(16990600415051759616, 3)), 5663533471683919872); -assert_eq!(call!(divi_ui64(18446744073709551614, 3)), 6148914691236517204); -assert_eq!(call!(divi_ui64(18446744073709551615, 3)), 6148914691236517205); -assert_eq!(call!(divi_ui64(16990600415051759616, 2)), 8495300207525879808); -assert_eq!(call!(divi_ui64(18446744073709551614, 2)), 9223372036854775807); -assert_eq!(call!(divi_ui64(18446744073709551615, 2)), 9223372036854775807); -assert_eq!(call!(divi_ui64(11015955194427482112, 1)), 11015955194427482112); -assert_eq!(call!(divi_ui64(16990600415051759616, 1)), 16990600415051759616); -assert_eq!(call!(divi_ui64(18446744073709551614, 1)), 18446744073709551614); -assert_eq!(call!(divi_ui64(18446744073709551615, 1)), 18446744073709551615); -assert_eq!(call!(divi_ui8(0, 1)), 0); -assert_eq!(call!(divi_ui8(0, 2)), 0); -assert_eq!(call!(divi_ui8(0, 3)), 0); -assert_eq!(call!(divi_ui8(0, 4)), 0); -assert_eq!(call!(divi_ui8(0, 72)), 0); -assert_eq!(call!(divi_ui8(0, 100)), 0); -assert_eq!(call!(divi_ui8(0, 162)), 0); -assert_eq!(call!(divi_ui8(0, 254)), 0); -assert_eq!(call!(divi_ui8(0, 255)), 0); -assert_eq!(call!(divi_ui8(1, 2)), 0); -assert_eq!(call!(divi_ui8(1, 3)), 0); -assert_eq!(call!(divi_ui8(1, 4)), 0); -assert_eq!(call!(divi_ui8(1, 72)), 0); -assert_eq!(call!(divi_ui8(1, 100)), 0); -assert_eq!(call!(divi_ui8(1, 162)), 0); -assert_eq!(call!(divi_ui8(1, 254)), 0); -assert_eq!(call!(divi_ui8(1, 255)), 0); -assert_eq!(call!(divi_ui8(2, 3)), 0); -assert_eq!(call!(divi_ui8(2, 4)), 0); -assert_eq!(call!(divi_ui8(2, 72)), 0); -assert_eq!(call!(divi_ui8(2, 100)), 0); -assert_eq!(call!(divi_ui8(2, 162)), 0); -assert_eq!(call!(divi_ui8(2, 254)), 0); -assert_eq!(call!(divi_ui8(2, 255)), 0); -assert_eq!(call!(divi_ui8(3, 4)), 0); -assert_eq!(call!(divi_ui8(3, 72)), 0); -assert_eq!(call!(divi_ui8(3, 100)), 0); -assert_eq!(call!(divi_ui8(3, 162)), 0); -assert_eq!(call!(divi_ui8(3, 254)), 0); -assert_eq!(call!(divi_ui8(3, 255)), 0); -assert_eq!(call!(divi_ui8(4, 72)), 0); -assert_eq!(call!(divi_ui8(4, 100)), 0); -assert_eq!(call!(divi_ui8(4, 162)), 0); -assert_eq!(call!(divi_ui8(4, 254)), 0); -assert_eq!(call!(divi_ui8(4, 255)), 0); -assert_eq!(call!(divi_ui8(72, 100)), 0); -assert_eq!(call!(divi_ui8(72, 162)), 0); -assert_eq!(call!(divi_ui8(72, 254)), 0); -assert_eq!(call!(divi_ui8(72, 255)), 0); -assert_eq!(call!(divi_ui8(100, 162)), 0); -assert_eq!(call!(divi_ui8(100, 254)), 0); -assert_eq!(call!(divi_ui8(100, 255)), 0); -assert_eq!(call!(divi_ui8(162, 254)), 0); -assert_eq!(call!(divi_ui8(162, 255)), 0); -assert_eq!(call!(divi_ui8(254, 255)), 0); -assert_eq!(call!(divi_ui8(1, 1)), 1); -assert_eq!(call!(divi_ui8(2, 2)), 1); -assert_eq!(call!(divi_ui8(3, 2)), 1); -assert_eq!(call!(divi_ui8(3, 3)), 1); -assert_eq!(call!(divi_ui8(4, 3)), 1); -assert_eq!(call!(divi_ui8(4, 4)), 1); -assert_eq!(call!(divi_ui8(72, 72)), 1); -assert_eq!(call!(divi_ui8(100, 72)), 1); -assert_eq!(call!(divi_ui8(100, 100)), 1); -assert_eq!(call!(divi_ui8(162, 100)), 1); -assert_eq!(call!(divi_ui8(162, 162)), 1); -assert_eq!(call!(divi_ui8(254, 162)), 1); -assert_eq!(call!(divi_ui8(254, 254)), 1); -assert_eq!(call!(divi_ui8(255, 162)), 1); -assert_eq!(call!(divi_ui8(255, 254)), 1); -assert_eq!(call!(divi_ui8(255, 255)), 1); -assert_eq!(call!(divi_ui8(2, 1)), 2); -assert_eq!(call!(divi_ui8(4, 2)), 2); -assert_eq!(call!(divi_ui8(162, 72)), 2); -assert_eq!(call!(divi_ui8(254, 100)), 2); -assert_eq!(call!(divi_ui8(255, 100)), 2); -assert_eq!(call!(divi_ui8(3, 1)), 3); -assert_eq!(call!(divi_ui8(254, 72)), 3); -assert_eq!(call!(divi_ui8(255, 72)), 3); -assert_eq!(call!(divi_ui8(4, 1)), 4); -assert_eq!(call!(divi_ui8(72, 4)), 18); -assert_eq!(call!(divi_ui8(72, 3)), 24); -assert_eq!(call!(divi_ui8(100, 4)), 25); -assert_eq!(call!(divi_ui8(100, 3)), 33); -assert_eq!(call!(divi_ui8(72, 2)), 36); -assert_eq!(call!(divi_ui8(162, 4)), 40); -assert_eq!(call!(divi_ui8(100, 2)), 50); -assert_eq!(call!(divi_ui8(162, 3)), 54); -assert_eq!(call!(divi_ui8(254, 4)), 63); -assert_eq!(call!(divi_ui8(255, 4)), 63); -assert_eq!(call!(divi_ui8(72, 1)), 72); -assert_eq!(call!(divi_ui8(162, 2)), 81); -assert_eq!(call!(divi_ui8(254, 3)), 84); -assert_eq!(call!(divi_ui8(255, 3)), 85); -assert_eq!(call!(divi_ui8(100, 1)), 100); -assert_eq!(call!(divi_ui8(254, 2)), 127); -assert_eq!(call!(divi_ui8(255, 2)), 127); -assert_eq!(call!(divi_ui8(162, 1)), 162); -assert_eq!(call!(divi_ui8(254, 1)), 254); -assert_eq!(call!(divi_ui8(255, 1)), 255); -assert_eq!(call!(muli_si16(-32768, 1)), -32768); -assert_eq!(call!(muli_si16(1, -32768)), -32768); -assert_eq!(call!(muli_si16(-32767, 1)), -32767); -assert_eq!(call!(muli_si16(1, -32767)), -32767); -assert_eq!(call!(muli_si16(-32547, 1)), -32547); -assert_eq!(call!(muli_si16(1, -32547)), -32547); -assert_eq!(call!(muli_si16(-32768, 0)), 0); -assert_eq!(call!(muli_si16(-32767, 0)), 0); -assert_eq!(call!(muli_si16(-32547, 0)), 0); -assert_eq!(call!(muli_si16(0, -32768)), 0); -assert_eq!(call!(muli_si16(0, -32767)), 0); -assert_eq!(call!(muli_si16(0, -32547)), 0); -assert_eq!(call!(muli_si16(0, 0)), 0); -assert_eq!(call!(muli_si16(0, 1)), 0); -assert_eq!(call!(muli_si16(0, 2)), 0); -assert_eq!(call!(muli_si16(0, 3)), 0); -assert_eq!(call!(muli_si16(0, 4)), 0); -assert_eq!(call!(muli_si16(0, 10486)), 0); -assert_eq!(call!(muli_si16(0, 16514)), 0); -assert_eq!(call!(muli_si16(0, 32766)), 0); -assert_eq!(call!(muli_si16(0, 32767)), 0); -assert_eq!(call!(muli_si16(1, 0)), 0); -assert_eq!(call!(muli_si16(2, 0)), 0); -assert_eq!(call!(muli_si16(3, 0)), 0); -assert_eq!(call!(muli_si16(4, 0)), 0); -assert_eq!(call!(muli_si16(10486, 0)), 0); -assert_eq!(call!(muli_si16(16514, 0)), 0); -assert_eq!(call!(muli_si16(32766, 0)), 0); -assert_eq!(call!(muli_si16(32767, 0)), 0); -assert_eq!(call!(muli_si16(1, 1)), 1); -assert_eq!(call!(muli_si16(1, 2)), 2); -assert_eq!(call!(muli_si16(2, 1)), 2); -assert_eq!(call!(muli_si16(1, 3)), 3); -assert_eq!(call!(muli_si16(3, 1)), 3); -assert_eq!(call!(muli_si16(1, 4)), 4); -assert_eq!(call!(muli_si16(2, 2)), 4); -assert_eq!(call!(muli_si16(4, 1)), 4); -assert_eq!(call!(muli_si16(2, 3)), 6); -assert_eq!(call!(muli_si16(3, 2)), 6); -assert_eq!(call!(muli_si16(2, 4)), 8); -assert_eq!(call!(muli_si16(4, 2)), 8); -assert_eq!(call!(muli_si16(3, 3)), 9); -assert_eq!(call!(muli_si16(3, 4)), 12); -assert_eq!(call!(muli_si16(4, 3)), 12); -assert_eq!(call!(muli_si16(4, 4)), 16); -assert_eq!(call!(muli_si16(1, 10486)), 10486); -assert_eq!(call!(muli_si16(10486, 1)), 10486); -assert_eq!(call!(muli_si16(1, 16514)), 16514); -assert_eq!(call!(muli_si16(16514, 1)), 16514); -assert_eq!(call!(muli_si16(2, 10486)), 20972); -assert_eq!(call!(muli_si16(10486, 2)), 20972); -assert_eq!(call!(muli_si16(3, 10486)), 31458); -assert_eq!(call!(muli_si16(10486, 3)), 31458); -assert_eq!(call!(muli_si16(1, 32766)), 32766); -assert_eq!(call!(muli_si16(32766, 1)), 32766); -assert_eq!(call!(muli_si16(1, 32767)), 32767); -assert_eq!(call!(muli_si16(32767, 1)), 32767); -assert_eq!(call!(muli_si32(-2147483648, 1)), -2147483648); -assert_eq!(call!(muli_si32(1, -2147483648)), -2147483648); -assert_eq!(call!(muli_si32(-2147483647, 1)), -2147483647); -assert_eq!(call!(muli_si32(1, -2147483647)), -2147483647); -assert_eq!(call!(muli_si32(-1035405763, 2)), -2070811526); -assert_eq!(call!(muli_si32(2, -1035405763)), -2070811526); -assert_eq!(call!(muli_si32(-1713183800, 1)), -1713183800); -assert_eq!(call!(muli_si32(1, -1713183800)), -1713183800); -assert_eq!(call!(muli_si32(-1252582164, 1)), -1252582164); -assert_eq!(call!(muli_si32(1, -1252582164)), -1252582164); -assert_eq!(call!(muli_si32(-1035405763, 1)), -1035405763); -assert_eq!(call!(muli_si32(1, -1035405763)), -1035405763); -assert_eq!(call!(muli_si32(-2147483648, 0)), 0); -assert_eq!(call!(muli_si32(-2147483647, 0)), 0); -assert_eq!(call!(muli_si32(-1713183800, 0)), 0); -assert_eq!(call!(muli_si32(-1252582164, 0)), 0); -assert_eq!(call!(muli_si32(-1035405763, 0)), 0); -assert_eq!(call!(muli_si32(0, -2147483648)), 0); -assert_eq!(call!(muli_si32(0, -2147483647)), 0); -assert_eq!(call!(muli_si32(0, -1713183800)), 0); -assert_eq!(call!(muli_si32(0, -1252582164)), 0); -assert_eq!(call!(muli_si32(0, -1035405763)), 0); -assert_eq!(call!(muli_si32(0, 0)), 0); -assert_eq!(call!(muli_si32(0, 1)), 0); -assert_eq!(call!(muli_si32(0, 2)), 0); -assert_eq!(call!(muli_si32(0, 3)), 0); -assert_eq!(call!(muli_si32(0, 4)), 0); -assert_eq!(call!(muli_si32(0, 2147483646)), 0); -assert_eq!(call!(muli_si32(0, 2147483647)), 0); -assert_eq!(call!(muli_si32(1, 0)), 0); -assert_eq!(call!(muli_si32(2, 0)), 0); -assert_eq!(call!(muli_si32(3, 0)), 0); -assert_eq!(call!(muli_si32(4, 0)), 0); -assert_eq!(call!(muli_si32(2147483646, 0)), 0); -assert_eq!(call!(muli_si32(2147483647, 0)), 0); -assert_eq!(call!(muli_si32(1, 1)), 1); -assert_eq!(call!(muli_si32(1, 2)), 2); -assert_eq!(call!(muli_si32(2, 1)), 2); -assert_eq!(call!(muli_si32(1, 3)), 3); -assert_eq!(call!(muli_si32(3, 1)), 3); -assert_eq!(call!(muli_si32(1, 4)), 4); -assert_eq!(call!(muli_si32(2, 2)), 4); -assert_eq!(call!(muli_si32(4, 1)), 4); -assert_eq!(call!(muli_si32(2, 3)), 6); -assert_eq!(call!(muli_si32(3, 2)), 6); -assert_eq!(call!(muli_si32(2, 4)), 8); -assert_eq!(call!(muli_si32(4, 2)), 8); -assert_eq!(call!(muli_si32(3, 3)), 9); -assert_eq!(call!(muli_si32(3, 4)), 12); -assert_eq!(call!(muli_si32(4, 3)), 12); -assert_eq!(call!(muli_si32(4, 4)), 16); -assert_eq!(call!(muli_si32(1, 2147483646)), 2147483646); -assert_eq!(call!(muli_si32(2147483646, 1)), 2147483646); -assert_eq!(call!(muli_si32(1, 2147483647)), 2147483647); -assert_eq!(call!(muli_si32(2147483647, 1)), 2147483647); -assert_eq!(call!(muli_si64(-9223372036854775808, 1)), -9223372036854775808); -assert_eq!(call!(muli_si64(1, -9223372036854775808)), -9223372036854775808); -assert_eq!(call!(muli_si64(-9223372036854775807, 1)), -9223372036854775807); -assert_eq!(call!(muli_si64(1, -9223372036854775807)), -9223372036854775807); -assert_eq!(call!(muli_si64(-1741927215160008704, 4)), -6967708860640034816); -assert_eq!(call!(muli_si64(4, -1741927215160008704)), -6967708860640034816); -assert_eq!(call!(muli_si64(-1328271339354574848, 4)), -5313085357418299392); -assert_eq!(call!(muli_si64(4, -1328271339354574848)), -5313085357418299392); -assert_eq!(call!(muli_si64(-1741927215160008704, 3)), -5225781645480026112); -assert_eq!(call!(muli_si64(3, -1741927215160008704)), -5225781645480026112); -assert_eq!(call!(muli_si64(-1328271339354574848, 3)), -3984814018063724544); -assert_eq!(call!(muli_si64(3, -1328271339354574848)), -3984814018063724544); -assert_eq!(call!(muli_si64(-1741927215160008704, 2)), -3483854430320017408); -assert_eq!(call!(muli_si64(2, -1741927215160008704)), -3483854430320017408); -assert_eq!(call!(muli_si64(-1328271339354574848, 2)), -2656542678709149696); -assert_eq!(call!(muli_si64(2, -1328271339354574848)), -2656542678709149696); -assert_eq!(call!(muli_si64(-1741927215160008704, 1)), -1741927215160008704); -assert_eq!(call!(muli_si64(1, -1741927215160008704)), -1741927215160008704); -assert_eq!(call!(muli_si64(-1328271339354574848, 1)), -1328271339354574848); -assert_eq!(call!(muli_si64(1, -1328271339354574848)), -1328271339354574848); -assert_eq!(call!(muli_si64(-9223372036854775808, 0)), 0); -assert_eq!(call!(muli_si64(-9223372036854775807, 0)), 0); -assert_eq!(call!(muli_si64(-1741927215160008704, 0)), 0); -assert_eq!(call!(muli_si64(-1328271339354574848, 0)), 0); -assert_eq!(call!(muli_si64(0, -9223372036854775808)), 0); -assert_eq!(call!(muli_si64(0, -9223372036854775807)), 0); -assert_eq!(call!(muli_si64(0, -1741927215160008704)), 0); -assert_eq!(call!(muli_si64(0, -1328271339354574848)), 0); -assert_eq!(call!(muli_si64(0, 0)), 0); -assert_eq!(call!(muli_si64(0, 1)), 0); -assert_eq!(call!(muli_si64(0, 2)), 0); -assert_eq!(call!(muli_si64(0, 3)), 0); -assert_eq!(call!(muli_si64(0, 4)), 0); -assert_eq!(call!(muli_si64(0, 5577148965131116544)), 0); -assert_eq!(call!(muli_si64(0, 9223372036854775806)), 0); -assert_eq!(call!(muli_si64(0, 9223372036854775807)), 0); -assert_eq!(call!(muli_si64(1, 0)), 0); -assert_eq!(call!(muli_si64(2, 0)), 0); -assert_eq!(call!(muli_si64(3, 0)), 0); -assert_eq!(call!(muli_si64(4, 0)), 0); -assert_eq!(call!(muli_si64(5577148965131116544, 0)), 0); -assert_eq!(call!(muli_si64(9223372036854775806, 0)), 0); -assert_eq!(call!(muli_si64(9223372036854775807, 0)), 0); -assert_eq!(call!(muli_si64(1, 1)), 1); -assert_eq!(call!(muli_si64(1, 2)), 2); -assert_eq!(call!(muli_si64(2, 1)), 2); -assert_eq!(call!(muli_si64(1, 3)), 3); -assert_eq!(call!(muli_si64(3, 1)), 3); -assert_eq!(call!(muli_si64(1, 4)), 4); -assert_eq!(call!(muli_si64(2, 2)), 4); -assert_eq!(call!(muli_si64(4, 1)), 4); -assert_eq!(call!(muli_si64(2, 3)), 6); -assert_eq!(call!(muli_si64(3, 2)), 6); -assert_eq!(call!(muli_si64(2, 4)), 8); -assert_eq!(call!(muli_si64(4, 2)), 8); -assert_eq!(call!(muli_si64(3, 3)), 9); -assert_eq!(call!(muli_si64(3, 4)), 12); -assert_eq!(call!(muli_si64(4, 3)), 12); -assert_eq!(call!(muli_si64(4, 4)), 16); -assert_eq!(call!(muli_si64(1, 5577148965131116544)), 5577148965131116544); -assert_eq!(call!(muli_si64(5577148965131116544, 1)), 5577148965131116544); -assert_eq!(call!(muli_si64(1, 9223372036854775806)), 9223372036854775806); -assert_eq!(call!(muli_si64(9223372036854775806, 1)), 9223372036854775806); -assert_eq!(call!(muli_si64(1, 9223372036854775807)), 9223372036854775807); -assert_eq!(call!(muli_si64(9223372036854775807, 1)), 9223372036854775807); -assert_eq!(call!(muli_si8(-128, 1)), -128); -assert_eq!(call!(muli_si8(1, -128)), -128); -assert_eq!(call!(muli_si8(-127, 1)), -127); -assert_eq!(call!(muli_si8(1, -127)), -127); -assert_eq!(call!(muli_si8(-128, 0)), 0); -assert_eq!(call!(muli_si8(-127, 0)), 0); -assert_eq!(call!(muli_si8(0, -128)), 0); -assert_eq!(call!(muli_si8(0, -127)), 0); -assert_eq!(call!(muli_si8(0, 0)), 0); -assert_eq!(call!(muli_si8(0, 1)), 0); -assert_eq!(call!(muli_si8(0, 2)), 0); -assert_eq!(call!(muli_si8(0, 3)), 0); -assert_eq!(call!(muli_si8(0, 4)), 0); -assert_eq!(call!(muli_si8(0, 16)), 0); -assert_eq!(call!(muli_si8(0, 126)), 0); -assert_eq!(call!(muli_si8(0, 127)), 0); -assert_eq!(call!(muli_si8(1, 0)), 0); -assert_eq!(call!(muli_si8(2, 0)), 0); -assert_eq!(call!(muli_si8(3, 0)), 0); -assert_eq!(call!(muli_si8(4, 0)), 0); -assert_eq!(call!(muli_si8(16, 0)), 0); -assert_eq!(call!(muli_si8(126, 0)), 0); -assert_eq!(call!(muli_si8(127, 0)), 0); -assert_eq!(call!(muli_si8(1, 1)), 1); -assert_eq!(call!(muli_si8(1, 2)), 2); -assert_eq!(call!(muli_si8(2, 1)), 2); -assert_eq!(call!(muli_si8(1, 3)), 3); -assert_eq!(call!(muli_si8(3, 1)), 3); -assert_eq!(call!(muli_si8(1, 4)), 4); -assert_eq!(call!(muli_si8(2, 2)), 4); -assert_eq!(call!(muli_si8(4, 1)), 4); -assert_eq!(call!(muli_si8(2, 3)), 6); -assert_eq!(call!(muli_si8(3, 2)), 6); -assert_eq!(call!(muli_si8(2, 4)), 8); -assert_eq!(call!(muli_si8(4, 2)), 8); -assert_eq!(call!(muli_si8(3, 3)), 9); -assert_eq!(call!(muli_si8(3, 4)), 12); -assert_eq!(call!(muli_si8(4, 3)), 12); -assert_eq!(call!(muli_si8(1, 16)), 16); -assert_eq!(call!(muli_si8(4, 4)), 16); -assert_eq!(call!(muli_si8(16, 1)), 16); -assert_eq!(call!(muli_si8(2, 16)), 32); -assert_eq!(call!(muli_si8(16, 2)), 32); -assert_eq!(call!(muli_si8(3, 16)), 48); -assert_eq!(call!(muli_si8(16, 3)), 48); -assert_eq!(call!(muli_si8(4, 16)), 64); -assert_eq!(call!(muli_si8(16, 4)), 64); -assert_eq!(call!(muli_si8(1, 126)), 126); -assert_eq!(call!(muli_si8(126, 1)), 126); -assert_eq!(call!(muli_si8(1, 127)), 127); -assert_eq!(call!(muli_si8(127, 1)), 127); -assert_eq!(call!(muli_ui16(0, 0)), 0); -assert_eq!(call!(muli_ui16(0, 1)), 0); -assert_eq!(call!(muli_ui16(0, 2)), 0); -assert_eq!(call!(muli_ui16(0, 3)), 0); -assert_eq!(call!(muli_ui16(0, 4)), 0); -assert_eq!(call!(muli_ui16(0, 1717)), 0); -assert_eq!(call!(muli_ui16(0, 17988)), 0); -assert_eq!(call!(muli_ui16(0, 65096)), 0); -assert_eq!(call!(muli_ui16(0, 65534)), 0); -assert_eq!(call!(muli_ui16(0, 65535)), 0); -assert_eq!(call!(muli_ui16(1, 0)), 0); -assert_eq!(call!(muli_ui16(2, 0)), 0); -assert_eq!(call!(muli_ui16(3, 0)), 0); -assert_eq!(call!(muli_ui16(4, 0)), 0); -assert_eq!(call!(muli_ui16(1717, 0)), 0); -assert_eq!(call!(muli_ui16(17988, 0)), 0); -assert_eq!(call!(muli_ui16(65096, 0)), 0); -assert_eq!(call!(muli_ui16(65534, 0)), 0); -assert_eq!(call!(muli_ui16(65535, 0)), 0); -assert_eq!(call!(muli_ui16(1, 1)), 1); -assert_eq!(call!(muli_ui16(1, 2)), 2); -assert_eq!(call!(muli_ui16(2, 1)), 2); -assert_eq!(call!(muli_ui16(1, 3)), 3); -assert_eq!(call!(muli_ui16(3, 1)), 3); -assert_eq!(call!(muli_ui16(1, 4)), 4); -assert_eq!(call!(muli_ui16(2, 2)), 4); -assert_eq!(call!(muli_ui16(4, 1)), 4); -assert_eq!(call!(muli_ui16(2, 3)), 6); -assert_eq!(call!(muli_ui16(3, 2)), 6); -assert_eq!(call!(muli_ui16(2, 4)), 8); -assert_eq!(call!(muli_ui16(4, 2)), 8); -assert_eq!(call!(muli_ui16(3, 3)), 9); -assert_eq!(call!(muli_ui16(3, 4)), 12); -assert_eq!(call!(muli_ui16(4, 3)), 12); -assert_eq!(call!(muli_ui16(4, 4)), 16); -assert_eq!(call!(muli_ui16(1, 1717)), 1717); -assert_eq!(call!(muli_ui16(1717, 1)), 1717); -assert_eq!(call!(muli_ui16(2, 1717)), 3434); -assert_eq!(call!(muli_ui16(1717, 2)), 3434); -assert_eq!(call!(muli_ui16(3, 1717)), 5151); -assert_eq!(call!(muli_ui16(1717, 3)), 5151); -assert_eq!(call!(muli_ui16(4, 1717)), 6868); -assert_eq!(call!(muli_ui16(1717, 4)), 6868); -assert_eq!(call!(muli_ui16(1, 17988)), 17988); -assert_eq!(call!(muli_ui16(17988, 1)), 17988); -assert_eq!(call!(muli_ui16(2, 17988)), 35976); -assert_eq!(call!(muli_ui16(17988, 2)), 35976); -assert_eq!(call!(muli_ui16(3, 17988)), 53964); -assert_eq!(call!(muli_ui16(17988, 3)), 53964); -assert_eq!(call!(muli_ui16(1, 65096)), 65096); -assert_eq!(call!(muli_ui16(65096, 1)), 65096); -assert_eq!(call!(muli_ui16(1, 65534)), 65534); -assert_eq!(call!(muli_ui16(65534, 1)), 65534); -assert_eq!(call!(muli_ui16(1, 65535)), 65535); -assert_eq!(call!(muli_ui16(65535, 1)), 65535); -assert_eq!(call!(muli_ui32(0, 0)), 0); -assert_eq!(call!(muli_ui32(0, 1)), 0); -assert_eq!(call!(muli_ui32(0, 2)), 0); -assert_eq!(call!(muli_ui32(0, 3)), 0); -assert_eq!(call!(muli_ui32(0, 4)), 0); -assert_eq!(call!(muli_ui32(0, 2119154652)), 0); -assert_eq!(call!(muli_ui32(0, 3002788344)), 0); -assert_eq!(call!(muli_ui32(0, 3482297128)), 0); -assert_eq!(call!(muli_ui32(0, 4294967294)), 0); -assert_eq!(call!(muli_ui32(0, 4294967295)), 0); -assert_eq!(call!(muli_ui32(1, 0)), 0); -assert_eq!(call!(muli_ui32(2, 0)), 0); -assert_eq!(call!(muli_ui32(3, 0)), 0); -assert_eq!(call!(muli_ui32(4, 0)), 0); -assert_eq!(call!(muli_ui32(2119154652, 0)), 0); -assert_eq!(call!(muli_ui32(3002788344, 0)), 0); -assert_eq!(call!(muli_ui32(3482297128, 0)), 0); -assert_eq!(call!(muli_ui32(4294967294, 0)), 0); -assert_eq!(call!(muli_ui32(4294967295, 0)), 0); -assert_eq!(call!(muli_ui32(1, 1)), 1); -assert_eq!(call!(muli_ui32(1, 2)), 2); -assert_eq!(call!(muli_ui32(2, 1)), 2); -assert_eq!(call!(muli_ui32(1, 3)), 3); -assert_eq!(call!(muli_ui32(3, 1)), 3); -assert_eq!(call!(muli_ui32(1, 4)), 4); -assert_eq!(call!(muli_ui32(2, 2)), 4); -assert_eq!(call!(muli_ui32(4, 1)), 4); -assert_eq!(call!(muli_ui32(2, 3)), 6); -assert_eq!(call!(muli_ui32(3, 2)), 6); -assert_eq!(call!(muli_ui32(2, 4)), 8); -assert_eq!(call!(muli_ui32(4, 2)), 8); -assert_eq!(call!(muli_ui32(3, 3)), 9); -assert_eq!(call!(muli_ui32(3, 4)), 12); -assert_eq!(call!(muli_ui32(4, 3)), 12); -assert_eq!(call!(muli_ui32(4, 4)), 16); -assert_eq!(call!(muli_ui32(1, 2119154652)), 2119154652); -assert_eq!(call!(muli_ui32(2119154652, 1)), 2119154652); -assert_eq!(call!(muli_ui32(1, 3002788344)), 3002788344); -assert_eq!(call!(muli_ui32(3002788344, 1)), 3002788344); -assert_eq!(call!(muli_ui32(1, 3482297128)), 3482297128); -assert_eq!(call!(muli_ui32(3482297128, 1)), 3482297128); -assert_eq!(call!(muli_ui32(2, 2119154652)), 4238309304); -assert_eq!(call!(muli_ui32(2119154652, 2)), 4238309304); -assert_eq!(call!(muli_ui32(1, 4294967294)), 4294967294); -assert_eq!(call!(muli_ui32(4294967294, 1)), 4294967294); -assert_eq!(call!(muli_ui32(1, 4294967295)), 4294967295); -assert_eq!(call!(muli_ui32(4294967295, 1)), 4294967295); -assert_eq!(call!(muli_ui64(0, 0)), 0); -assert_eq!(call!(muli_ui64(0, 1)), 0); -assert_eq!(call!(muli_ui64(0, 2)), 0); -assert_eq!(call!(muli_ui64(0, 3)), 0); -assert_eq!(call!(muli_ui64(0, 4)), 0); -assert_eq!(call!(muli_ui64(0, 191084152064409600)), 0); -assert_eq!(call!(muli_ui64(0, 11015955194427482112)), 0); -assert_eq!(call!(muli_ui64(0, 16990600415051759616)), 0); -assert_eq!(call!(muli_ui64(0, 18446744073709551614)), 0); -assert_eq!(call!(muli_ui64(0, 18446744073709551615)), 0); -assert_eq!(call!(muli_ui64(1, 0)), 0); -assert_eq!(call!(muli_ui64(2, 0)), 0); -assert_eq!(call!(muli_ui64(3, 0)), 0); -assert_eq!(call!(muli_ui64(4, 0)), 0); -assert_eq!(call!(muli_ui64(191084152064409600, 0)), 0); -assert_eq!(call!(muli_ui64(11015955194427482112, 0)), 0); -assert_eq!(call!(muli_ui64(16990600415051759616, 0)), 0); -assert_eq!(call!(muli_ui64(18446744073709551614, 0)), 0); -assert_eq!(call!(muli_ui64(18446744073709551615, 0)), 0); -assert_eq!(call!(muli_ui64(1, 1)), 1); -assert_eq!(call!(muli_ui64(1, 2)), 2); -assert_eq!(call!(muli_ui64(2, 1)), 2); -assert_eq!(call!(muli_ui64(1, 3)), 3); -assert_eq!(call!(muli_ui64(3, 1)), 3); -assert_eq!(call!(muli_ui64(1, 4)), 4); -assert_eq!(call!(muli_ui64(2, 2)), 4); -assert_eq!(call!(muli_ui64(4, 1)), 4); -assert_eq!(call!(muli_ui64(2, 3)), 6); -assert_eq!(call!(muli_ui64(3, 2)), 6); -assert_eq!(call!(muli_ui64(2, 4)), 8); -assert_eq!(call!(muli_ui64(4, 2)), 8); -assert_eq!(call!(muli_ui64(3, 3)), 9); -assert_eq!(call!(muli_ui64(3, 4)), 12); -assert_eq!(call!(muli_ui64(4, 3)), 12); -assert_eq!(call!(muli_ui64(4, 4)), 16); -assert_eq!(call!(muli_ui64(1, 191084152064409600)), 191084152064409600); -assert_eq!(call!(muli_ui64(191084152064409600, 1)), 191084152064409600); -assert_eq!(call!(muli_ui64(2, 191084152064409600)), 382168304128819200); -assert_eq!(call!(muli_ui64(191084152064409600, 2)), 382168304128819200); -assert_eq!(call!(muli_ui64(3, 191084152064409600)), 573252456193228800); -assert_eq!(call!(muli_ui64(191084152064409600, 3)), 573252456193228800); -assert_eq!(call!(muli_ui64(4, 191084152064409600)), 764336608257638400); -assert_eq!(call!(muli_ui64(191084152064409600, 4)), 764336608257638400); -assert_eq!(call!(muli_ui64(1, 11015955194427482112)), 11015955194427482112); -assert_eq!(call!(muli_ui64(11015955194427482112, 1)), 11015955194427482112); -assert_eq!(call!(muli_ui64(1, 16990600415051759616)), 16990600415051759616); -assert_eq!(call!(muli_ui64(16990600415051759616, 1)), 16990600415051759616); -assert_eq!(call!(muli_ui64(1, 18446744073709551614)), 18446744073709551614); -assert_eq!(call!(muli_ui64(18446744073709551614, 1)), 18446744073709551614); -assert_eq!(call!(muli_ui64(1, 18446744073709551615)), 18446744073709551615); -assert_eq!(call!(muli_ui64(18446744073709551615, 1)), 18446744073709551615); -assert_eq!(call!(muli_ui8(0, 0)), 0); -assert_eq!(call!(muli_ui8(0, 1)), 0); -assert_eq!(call!(muli_ui8(0, 2)), 0); -assert_eq!(call!(muli_ui8(0, 3)), 0); -assert_eq!(call!(muli_ui8(0, 4)), 0); -assert_eq!(call!(muli_ui8(0, 72)), 0); -assert_eq!(call!(muli_ui8(0, 100)), 0); -assert_eq!(call!(muli_ui8(0, 162)), 0); -assert_eq!(call!(muli_ui8(0, 254)), 0); -assert_eq!(call!(muli_ui8(0, 255)), 0); -assert_eq!(call!(muli_ui8(1, 0)), 0); -assert_eq!(call!(muli_ui8(2, 0)), 0); -assert_eq!(call!(muli_ui8(3, 0)), 0); -assert_eq!(call!(muli_ui8(4, 0)), 0); -assert_eq!(call!(muli_ui8(72, 0)), 0); -assert_eq!(call!(muli_ui8(100, 0)), 0); -assert_eq!(call!(muli_ui8(162, 0)), 0); -assert_eq!(call!(muli_ui8(254, 0)), 0); -assert_eq!(call!(muli_ui8(255, 0)), 0); -assert_eq!(call!(muli_ui8(1, 1)), 1); -assert_eq!(call!(muli_ui8(1, 2)), 2); -assert_eq!(call!(muli_ui8(2, 1)), 2); -assert_eq!(call!(muli_ui8(1, 3)), 3); -assert_eq!(call!(muli_ui8(3, 1)), 3); -assert_eq!(call!(muli_ui8(1, 4)), 4); -assert_eq!(call!(muli_ui8(2, 2)), 4); -assert_eq!(call!(muli_ui8(4, 1)), 4); -assert_eq!(call!(muli_ui8(2, 3)), 6); -assert_eq!(call!(muli_ui8(3, 2)), 6); -assert_eq!(call!(muli_ui8(2, 4)), 8); -assert_eq!(call!(muli_ui8(4, 2)), 8); -assert_eq!(call!(muli_ui8(3, 3)), 9); -assert_eq!(call!(muli_ui8(3, 4)), 12); -assert_eq!(call!(muli_ui8(4, 3)), 12); -assert_eq!(call!(muli_ui8(4, 4)), 16); -assert_eq!(call!(muli_ui8(1, 72)), 72); -assert_eq!(call!(muli_ui8(72, 1)), 72); -assert_eq!(call!(muli_ui8(1, 100)), 100); -assert_eq!(call!(muli_ui8(100, 1)), 100); -assert_eq!(call!(muli_ui8(2, 72)), 144); -assert_eq!(call!(muli_ui8(72, 2)), 144); -assert_eq!(call!(muli_ui8(1, 162)), 162); -assert_eq!(call!(muli_ui8(162, 1)), 162); -assert_eq!(call!(muli_ui8(2, 100)), 200); -assert_eq!(call!(muli_ui8(100, 2)), 200); -assert_eq!(call!(muli_ui8(3, 72)), 216); -assert_eq!(call!(muli_ui8(72, 3)), 216); -assert_eq!(call!(muli_ui8(1, 254)), 254); -assert_eq!(call!(muli_ui8(254, 1)), 254); -assert_eq!(call!(muli_ui8(1, 255)), 255); -assert_eq!(call!(muli_ui8(255, 1)), 255); -assert_eq!(call!(remi_si16(-32767, -32768)), -32767); -assert_eq!(call!(remi_si16(-32547, -32768)), -32547); -assert_eq!(call!(remi_si16(-32547, -32767)), -32547); -assert_eq!(call!(remi_si16(-32547, 32766)), -32547); -assert_eq!(call!(remi_si16(-32547, 32767)), -32547); -assert_eq!(call!(remi_si16(-32768, 16514)), -16254); -assert_eq!(call!(remi_si16(-32767, 16514)), -16253); -assert_eq!(call!(remi_si16(-32547, 16514)), -16033); -assert_eq!(call!(remi_si16(-32768, 10486)), -1310); -assert_eq!(call!(remi_si16(-32767, 10486)), -1309); -assert_eq!(call!(remi_si16(-32547, 10486)), -1089); -assert_eq!(call!(remi_si16(-32768, -32547)), -221); -assert_eq!(call!(remi_si16(-32767, -32547)), -220); -assert_eq!(call!(remi_si16(-32767, 4)), -3); -assert_eq!(call!(remi_si16(-32547, 4)), -3); -assert_eq!(call!(remi_si16(-32768, 3)), -2); -assert_eq!(call!(remi_si16(-32768, 32766)), -2); -assert_eq!(call!(remi_si16(-32768, -32767)), -1); -assert_eq!(call!(remi_si16(-32768, 32767)), -1); -assert_eq!(call!(remi_si16(-32767, 2)), -1); -assert_eq!(call!(remi_si16(-32767, 3)), -1); -assert_eq!(call!(remi_si16(-32767, 32766)), -1); -assert_eq!(call!(remi_si16(-32547, 2)), -1); -assert_eq!(call!(remi_si16(-32768, -32768)), 0); -assert_eq!(call!(remi_si16(-32768, 1)), 0); -assert_eq!(call!(remi_si16(-32768, 2)), 0); -assert_eq!(call!(remi_si16(-32768, 4)), 0); -assert_eq!(call!(remi_si16(-32767, -32767)), 0); -assert_eq!(call!(remi_si16(-32767, 1)), 0); -assert_eq!(call!(remi_si16(-32767, 32767)), 0); -assert_eq!(call!(remi_si16(-32547, -32547)), 0); -assert_eq!(call!(remi_si16(-32547, 1)), 0); -assert_eq!(call!(remi_si16(-32547, 3)), 0); -assert_eq!(call!(remi_si16(0, -32768)), 0); -assert_eq!(call!(remi_si16(0, -32767)), 0); -assert_eq!(call!(remi_si16(0, -32547)), 0); -assert_eq!(call!(remi_si16(0, 1)), 0); -assert_eq!(call!(remi_si16(0, 2)), 0); -assert_eq!(call!(remi_si16(0, 3)), 0); -assert_eq!(call!(remi_si16(0, 4)), 0); -assert_eq!(call!(remi_si16(0, 10486)), 0); -assert_eq!(call!(remi_si16(0, 16514)), 0); -assert_eq!(call!(remi_si16(0, 32766)), 0); -assert_eq!(call!(remi_si16(0, 32767)), 0); -assert_eq!(call!(remi_si16(1, 1)), 0); -assert_eq!(call!(remi_si16(2, 1)), 0); -assert_eq!(call!(remi_si16(2, 2)), 0); -assert_eq!(call!(remi_si16(3, 1)), 0); -assert_eq!(call!(remi_si16(3, 3)), 0); -assert_eq!(call!(remi_si16(4, 1)), 0); -assert_eq!(call!(remi_si16(4, 2)), 0); -assert_eq!(call!(remi_si16(4, 4)), 0); -assert_eq!(call!(remi_si16(10486, 1)), 0); -assert_eq!(call!(remi_si16(10486, 2)), 0); -assert_eq!(call!(remi_si16(10486, 10486)), 0); -assert_eq!(call!(remi_si16(16514, 1)), 0); -assert_eq!(call!(remi_si16(16514, 2)), 0); -assert_eq!(call!(remi_si16(16514, 16514)), 0); -assert_eq!(call!(remi_si16(32766, 1)), 0); -assert_eq!(call!(remi_si16(32766, 2)), 0); -assert_eq!(call!(remi_si16(32766, 3)), 0); -assert_eq!(call!(remi_si16(32766, 32766)), 0); -assert_eq!(call!(remi_si16(32767, -32767)), 0); -assert_eq!(call!(remi_si16(32767, 1)), 0); -assert_eq!(call!(remi_si16(32767, 32767)), 0); -assert_eq!(call!(remi_si16(1, -32768)), 1); -assert_eq!(call!(remi_si16(1, -32767)), 1); -assert_eq!(call!(remi_si16(1, -32547)), 1); -assert_eq!(call!(remi_si16(1, 2)), 1); -assert_eq!(call!(remi_si16(1, 3)), 1); -assert_eq!(call!(remi_si16(1, 4)), 1); -assert_eq!(call!(remi_si16(1, 10486)), 1); -assert_eq!(call!(remi_si16(1, 16514)), 1); -assert_eq!(call!(remi_si16(1, 32766)), 1); -assert_eq!(call!(remi_si16(1, 32767)), 1); -assert_eq!(call!(remi_si16(3, 2)), 1); -assert_eq!(call!(remi_si16(4, 3)), 1); -assert_eq!(call!(remi_si16(10486, 3)), 1); -assert_eq!(call!(remi_si16(32767, 2)), 1); -assert_eq!(call!(remi_si16(32767, 3)), 1); -assert_eq!(call!(remi_si16(32767, 32766)), 1); -assert_eq!(call!(remi_si16(2, -32768)), 2); -assert_eq!(call!(remi_si16(2, -32767)), 2); -assert_eq!(call!(remi_si16(2, -32547)), 2); -assert_eq!(call!(remi_si16(2, 3)), 2); -assert_eq!(call!(remi_si16(2, 4)), 2); -assert_eq!(call!(remi_si16(2, 10486)), 2); -assert_eq!(call!(remi_si16(2, 16514)), 2); -assert_eq!(call!(remi_si16(2, 32766)), 2); -assert_eq!(call!(remi_si16(2, 32767)), 2); -assert_eq!(call!(remi_si16(10486, 4)), 2); -assert_eq!(call!(remi_si16(16514, 3)), 2); -assert_eq!(call!(remi_si16(16514, 4)), 2); -assert_eq!(call!(remi_si16(32766, 4)), 2); -assert_eq!(call!(remi_si16(3, -32768)), 3); -assert_eq!(call!(remi_si16(3, -32767)), 3); -assert_eq!(call!(remi_si16(3, -32547)), 3); -assert_eq!(call!(remi_si16(3, 4)), 3); -assert_eq!(call!(remi_si16(3, 10486)), 3); -assert_eq!(call!(remi_si16(3, 16514)), 3); -assert_eq!(call!(remi_si16(3, 32766)), 3); -assert_eq!(call!(remi_si16(3, 32767)), 3); -assert_eq!(call!(remi_si16(32767, 4)), 3); -assert_eq!(call!(remi_si16(4, -32768)), 4); -assert_eq!(call!(remi_si16(4, -32767)), 4); -assert_eq!(call!(remi_si16(4, -32547)), 4); -assert_eq!(call!(remi_si16(4, 10486)), 4); -assert_eq!(call!(remi_si16(4, 16514)), 4); -assert_eq!(call!(remi_si16(4, 32766)), 4); -assert_eq!(call!(remi_si16(4, 32767)), 4); -assert_eq!(call!(remi_si16(32766, -32547)), 219); -assert_eq!(call!(remi_si16(32767, -32547)), 220); -assert_eq!(call!(remi_si16(32766, 10486)), 1308); -assert_eq!(call!(remi_si16(32767, 10486)), 1309); -assert_eq!(call!(remi_si16(16514, 10486)), 6028); -assert_eq!(call!(remi_si16(10486, -32768)), 10486); -assert_eq!(call!(remi_si16(10486, -32767)), 10486); -assert_eq!(call!(remi_si16(10486, -32547)), 10486); -assert_eq!(call!(remi_si16(10486, 16514)), 10486); -assert_eq!(call!(remi_si16(10486, 32766)), 10486); -assert_eq!(call!(remi_si16(10486, 32767)), 10486); -assert_eq!(call!(remi_si16(32766, 16514)), 16252); -assert_eq!(call!(remi_si16(32767, 16514)), 16253); -assert_eq!(call!(remi_si16(16514, -32768)), 16514); -assert_eq!(call!(remi_si16(16514, -32767)), 16514); -assert_eq!(call!(remi_si16(16514, -32547)), 16514); -assert_eq!(call!(remi_si16(16514, 32766)), 16514); -assert_eq!(call!(remi_si16(16514, 32767)), 16514); -assert_eq!(call!(remi_si16(32766, -32768)), 32766); -assert_eq!(call!(remi_si16(32766, -32767)), 32766); -assert_eq!(call!(remi_si16(32766, 32767)), 32766); -assert_eq!(call!(remi_si16(32767, -32768)), 32767); -assert_eq!(call!(remi_si32(-2147483647, -2147483648)), -2147483647); -assert_eq!(call!(remi_si32(-1713183800, -2147483648)), -1713183800); -assert_eq!(call!(remi_si32(-1713183800, -2147483647)), -1713183800); -assert_eq!(call!(remi_si32(-1713183800, 2147483646)), -1713183800); -assert_eq!(call!(remi_si32(-1713183800, 2147483647)), -1713183800); -assert_eq!(call!(remi_si32(-1252582164, -2147483648)), -1252582164); -assert_eq!(call!(remi_si32(-1252582164, -2147483647)), -1252582164); -assert_eq!(call!(remi_si32(-1252582164, -1713183800)), -1252582164); -assert_eq!(call!(remi_si32(-1252582164, 2147483646)), -1252582164); -assert_eq!(call!(remi_si32(-1252582164, 2147483647)), -1252582164); -assert_eq!(call!(remi_si32(-1035405763, -2147483648)), -1035405763); -assert_eq!(call!(remi_si32(-1035405763, -2147483647)), -1035405763); -assert_eq!(call!(remi_si32(-1035405763, -1713183800)), -1035405763); -assert_eq!(call!(remi_si32(-1035405763, -1252582164)), -1035405763); -assert_eq!(call!(remi_si32(-1035405763, 2147483646)), -1035405763); -assert_eq!(call!(remi_si32(-1035405763, 2147483647)), -1035405763); -assert_eq!(call!(remi_si32(-2147483648, -1252582164)), -894901484); -assert_eq!(call!(remi_si32(-2147483647, -1252582164)), -894901483); -assert_eq!(call!(remi_si32(-1713183800, -1035405763)), -677778037); -assert_eq!(call!(remi_si32(-1713183800, -1252582164)), -460601636); -assert_eq!(call!(remi_si32(-2147483648, -1713183800)), -434299848); -assert_eq!(call!(remi_si32(-2147483647, -1713183800)), -434299847); -assert_eq!(call!(remi_si32(-1252582164, -1035405763)), -217176401); -assert_eq!(call!(remi_si32(-2147483648, -1035405763)), -76672122); -assert_eq!(call!(remi_si32(-2147483647, -1035405763)), -76672121); -assert_eq!(call!(remi_si32(-2147483647, 4)), -3); -assert_eq!(call!(remi_si32(-1035405763, 4)), -3); -assert_eq!(call!(remi_si32(-2147483648, 3)), -2); -assert_eq!(call!(remi_si32(-2147483648, 2147483646)), -2); -assert_eq!(call!(remi_si32(-1713183800, 3)), -2); -assert_eq!(call!(remi_si32(-2147483648, -2147483647)), -1); -assert_eq!(call!(remi_si32(-2147483648, 2147483647)), -1); -assert_eq!(call!(remi_si32(-2147483647, 2)), -1); -assert_eq!(call!(remi_si32(-2147483647, 3)), -1); -assert_eq!(call!(remi_si32(-2147483647, 2147483646)), -1); -assert_eq!(call!(remi_si32(-1035405763, 2)), -1); -assert_eq!(call!(remi_si32(-1035405763, 3)), -1); -assert_eq!(call!(remi_si32(-2147483648, -2147483648)), 0); -assert_eq!(call!(remi_si32(-2147483648, 1)), 0); -assert_eq!(call!(remi_si32(-2147483648, 2)), 0); -assert_eq!(call!(remi_si32(-2147483648, 4)), 0); -assert_eq!(call!(remi_si32(-2147483647, -2147483647)), 0); -assert_eq!(call!(remi_si32(-2147483647, 1)), 0); -assert_eq!(call!(remi_si32(-2147483647, 2147483647)), 0); -assert_eq!(call!(remi_si32(-1713183800, -1713183800)), 0); -assert_eq!(call!(remi_si32(-1713183800, 1)), 0); -assert_eq!(call!(remi_si32(-1713183800, 2)), 0); -assert_eq!(call!(remi_si32(-1713183800, 4)), 0); -assert_eq!(call!(remi_si32(-1252582164, -1252582164)), 0); -assert_eq!(call!(remi_si32(-1252582164, 1)), 0); -assert_eq!(call!(remi_si32(-1252582164, 2)), 0); -assert_eq!(call!(remi_si32(-1252582164, 3)), 0); -assert_eq!(call!(remi_si32(-1252582164, 4)), 0); -assert_eq!(call!(remi_si32(-1035405763, -1035405763)), 0); -assert_eq!(call!(remi_si32(-1035405763, 1)), 0); -assert_eq!(call!(remi_si32(0, -2147483648)), 0); -assert_eq!(call!(remi_si32(0, -2147483647)), 0); -assert_eq!(call!(remi_si32(0, -1713183800)), 0); -assert_eq!(call!(remi_si32(0, -1252582164)), 0); -assert_eq!(call!(remi_si32(0, -1035405763)), 0); -assert_eq!(call!(remi_si32(0, 1)), 0); -assert_eq!(call!(remi_si32(0, 2)), 0); -assert_eq!(call!(remi_si32(0, 3)), 0); -assert_eq!(call!(remi_si32(0, 4)), 0); -assert_eq!(call!(remi_si32(0, 2147483646)), 0); -assert_eq!(call!(remi_si32(0, 2147483647)), 0); -assert_eq!(call!(remi_si32(1, 1)), 0); -assert_eq!(call!(remi_si32(2, 1)), 0); -assert_eq!(call!(remi_si32(2, 2)), 0); -assert_eq!(call!(remi_si32(3, 1)), 0); -assert_eq!(call!(remi_si32(3, 3)), 0); -assert_eq!(call!(remi_si32(4, 1)), 0); -assert_eq!(call!(remi_si32(4, 2)), 0); -assert_eq!(call!(remi_si32(4, 4)), 0); -assert_eq!(call!(remi_si32(2147483646, 1)), 0); -assert_eq!(call!(remi_si32(2147483646, 2)), 0); -assert_eq!(call!(remi_si32(2147483646, 3)), 0); -assert_eq!(call!(remi_si32(2147483646, 2147483646)), 0); -assert_eq!(call!(remi_si32(2147483647, -2147483647)), 0); -assert_eq!(call!(remi_si32(2147483647, 1)), 0); -assert_eq!(call!(remi_si32(2147483647, 2147483647)), 0); -assert_eq!(call!(remi_si32(1, -2147483648)), 1); -assert_eq!(call!(remi_si32(1, -2147483647)), 1); -assert_eq!(call!(remi_si32(1, -1713183800)), 1); -assert_eq!(call!(remi_si32(1, -1252582164)), 1); -assert_eq!(call!(remi_si32(1, -1035405763)), 1); -assert_eq!(call!(remi_si32(1, 2)), 1); -assert_eq!(call!(remi_si32(1, 3)), 1); -assert_eq!(call!(remi_si32(1, 4)), 1); -assert_eq!(call!(remi_si32(1, 2147483646)), 1); -assert_eq!(call!(remi_si32(1, 2147483647)), 1); -assert_eq!(call!(remi_si32(3, 2)), 1); -assert_eq!(call!(remi_si32(4, 3)), 1); -assert_eq!(call!(remi_si32(2147483647, 2)), 1); -assert_eq!(call!(remi_si32(2147483647, 3)), 1); -assert_eq!(call!(remi_si32(2147483647, 2147483646)), 1); -assert_eq!(call!(remi_si32(2, -2147483648)), 2); -assert_eq!(call!(remi_si32(2, -2147483647)), 2); -assert_eq!(call!(remi_si32(2, -1713183800)), 2); -assert_eq!(call!(remi_si32(2, -1252582164)), 2); -assert_eq!(call!(remi_si32(2, -1035405763)), 2); -assert_eq!(call!(remi_si32(2, 3)), 2); -assert_eq!(call!(remi_si32(2, 4)), 2); -assert_eq!(call!(remi_si32(2, 2147483646)), 2); -assert_eq!(call!(remi_si32(2, 2147483647)), 2); -assert_eq!(call!(remi_si32(2147483646, 4)), 2); -assert_eq!(call!(remi_si32(3, -2147483648)), 3); -assert_eq!(call!(remi_si32(3, -2147483647)), 3); -assert_eq!(call!(remi_si32(3, -1713183800)), 3); -assert_eq!(call!(remi_si32(3, -1252582164)), 3); -assert_eq!(call!(remi_si32(3, -1035405763)), 3); -assert_eq!(call!(remi_si32(3, 4)), 3); -assert_eq!(call!(remi_si32(3, 2147483646)), 3); -assert_eq!(call!(remi_si32(3, 2147483647)), 3); -assert_eq!(call!(remi_si32(2147483647, 4)), 3); -assert_eq!(call!(remi_si32(4, -2147483648)), 4); -assert_eq!(call!(remi_si32(4, -2147483647)), 4); -assert_eq!(call!(remi_si32(4, -1713183800)), 4); -assert_eq!(call!(remi_si32(4, -1252582164)), 4); -assert_eq!(call!(remi_si32(4, -1035405763)), 4); -assert_eq!(call!(remi_si32(4, 2147483646)), 4); -assert_eq!(call!(remi_si32(4, 2147483647)), 4); -assert_eq!(call!(remi_si32(2147483646, -1035405763)), 76672120); -assert_eq!(call!(remi_si32(2147483647, -1035405763)), 76672121); -assert_eq!(call!(remi_si32(2147483646, -1713183800)), 434299846); -assert_eq!(call!(remi_si32(2147483647, -1713183800)), 434299847); -assert_eq!(call!(remi_si32(2147483646, -1252582164)), 894901482); -assert_eq!(call!(remi_si32(2147483647, -1252582164)), 894901483); -assert_eq!(call!(remi_si32(2147483646, -2147483648)), 2147483646); -assert_eq!(call!(remi_si32(2147483646, -2147483647)), 2147483646); -assert_eq!(call!(remi_si32(2147483646, 2147483647)), 2147483646); -assert_eq!(call!(remi_si32(2147483647, -2147483648)), 2147483647); -assert_eq!(call!(remi_si64(-9223372036854775807, -9223372036854775808)), -9223372036854775807); -assert_eq!(call!(remi_si64(-9223372036854775808, 5577148965131116544)), -3646223071723659264); -assert_eq!(call!(remi_si64(-9223372036854775807, 5577148965131116544)), -3646223071723659263); -assert_eq!(call!(remi_si64(-1741927215160008704, -9223372036854775808)), -1741927215160008704); -assert_eq!(call!(remi_si64(-1741927215160008704, -9223372036854775807)), -1741927215160008704); -assert_eq!(call!(remi_si64(-1741927215160008704, 5577148965131116544)), -1741927215160008704); -assert_eq!(call!(remi_si64(-1741927215160008704, 9223372036854775806)), -1741927215160008704); -assert_eq!(call!(remi_si64(-1741927215160008704, 9223372036854775807)), -1741927215160008704); -assert_eq!(call!(remi_si64(-1328271339354574848, -9223372036854775808)), -1328271339354574848); -assert_eq!(call!(remi_si64(-1328271339354574848, -9223372036854775807)), -1328271339354574848); -assert_eq!(call!(remi_si64(-1328271339354574848, -1741927215160008704)), -1328271339354574848); -assert_eq!(call!(remi_si64(-1328271339354574848, 5577148965131116544)), -1328271339354574848); -assert_eq!(call!(remi_si64(-1328271339354574848, 9223372036854775806)), -1328271339354574848); -assert_eq!(call!(remi_si64(-1328271339354574848, 9223372036854775807)), -1328271339354574848); -assert_eq!(call!(remi_si64(-9223372036854775808, -1328271339354574848)), -1253744000727326720); -assert_eq!(call!(remi_si64(-9223372036854775807, -1328271339354574848)), -1253744000727326719); -assert_eq!(call!(remi_si64(-9223372036854775808, -1741927215160008704)), -513735961054732288); -assert_eq!(call!(remi_si64(-9223372036854775807, -1741927215160008704)), -513735961054732287); -assert_eq!(call!(remi_si64(-1741927215160008704, -1328271339354574848)), -413655875805433856); -assert_eq!(call!(remi_si64(-9223372036854775807, 4)), -3); -assert_eq!(call!(remi_si64(-9223372036854775808, 3)), -2); -assert_eq!(call!(remi_si64(-9223372036854775808, 9223372036854775806)), -2); -assert_eq!(call!(remi_si64(-1741927215160008704, 3)), -2); -assert_eq!(call!(remi_si64(-9223372036854775808, -9223372036854775807)), -1); -assert_eq!(call!(remi_si64(-9223372036854775808, 9223372036854775807)), -1); -assert_eq!(call!(remi_si64(-9223372036854775807, 2)), -1); -assert_eq!(call!(remi_si64(-9223372036854775807, 3)), -1); -assert_eq!(call!(remi_si64(-9223372036854775807, 9223372036854775806)), -1); -assert_eq!(call!(remi_si64(-9223372036854775808, -9223372036854775808)), 0); -assert_eq!(call!(remi_si64(-9223372036854775808, 1)), 0); -assert_eq!(call!(remi_si64(-9223372036854775808, 2)), 0); -assert_eq!(call!(remi_si64(-9223372036854775808, 4)), 0); -assert_eq!(call!(remi_si64(-9223372036854775807, -9223372036854775807)), 0); -assert_eq!(call!(remi_si64(-9223372036854775807, 1)), 0); -assert_eq!(call!(remi_si64(-9223372036854775807, 9223372036854775807)), 0); -assert_eq!(call!(remi_si64(-1741927215160008704, -1741927215160008704)), 0); -assert_eq!(call!(remi_si64(-1741927215160008704, 1)), 0); -assert_eq!(call!(remi_si64(-1741927215160008704, 2)), 0); -assert_eq!(call!(remi_si64(-1741927215160008704, 4)), 0); -assert_eq!(call!(remi_si64(-1328271339354574848, -1328271339354574848)), 0); -assert_eq!(call!(remi_si64(-1328271339354574848, 1)), 0); -assert_eq!(call!(remi_si64(-1328271339354574848, 2)), 0); -assert_eq!(call!(remi_si64(-1328271339354574848, 3)), 0); -assert_eq!(call!(remi_si64(-1328271339354574848, 4)), 0); -assert_eq!(call!(remi_si64(0, -9223372036854775808)), 0); -assert_eq!(call!(remi_si64(0, -9223372036854775807)), 0); -assert_eq!(call!(remi_si64(0, -1741927215160008704)), 0); -assert_eq!(call!(remi_si64(0, -1328271339354574848)), 0); -assert_eq!(call!(remi_si64(0, 1)), 0); -assert_eq!(call!(remi_si64(0, 2)), 0); -assert_eq!(call!(remi_si64(0, 3)), 0); -assert_eq!(call!(remi_si64(0, 4)), 0); -assert_eq!(call!(remi_si64(0, 5577148965131116544)), 0); -assert_eq!(call!(remi_si64(0, 9223372036854775806)), 0); -assert_eq!(call!(remi_si64(0, 9223372036854775807)), 0); -assert_eq!(call!(remi_si64(1, 1)), 0); -assert_eq!(call!(remi_si64(2, 1)), 0); -assert_eq!(call!(remi_si64(2, 2)), 0); -assert_eq!(call!(remi_si64(3, 1)), 0); -assert_eq!(call!(remi_si64(3, 3)), 0); -assert_eq!(call!(remi_si64(4, 1)), 0); -assert_eq!(call!(remi_si64(4, 2)), 0); -assert_eq!(call!(remi_si64(4, 4)), 0); -assert_eq!(call!(remi_si64(5577148965131116544, 1)), 0); -assert_eq!(call!(remi_si64(5577148965131116544, 2)), 0); -assert_eq!(call!(remi_si64(5577148965131116544, 4)), 0); -assert_eq!(call!(remi_si64(5577148965131116544, 5577148965131116544)), 0); -assert_eq!(call!(remi_si64(9223372036854775806, 1)), 0); -assert_eq!(call!(remi_si64(9223372036854775806, 2)), 0); -assert_eq!(call!(remi_si64(9223372036854775806, 3)), 0); -assert_eq!(call!(remi_si64(9223372036854775806, 9223372036854775806)), 0); -assert_eq!(call!(remi_si64(9223372036854775807, -9223372036854775807)), 0); -assert_eq!(call!(remi_si64(9223372036854775807, 1)), 0); -assert_eq!(call!(remi_si64(9223372036854775807, 9223372036854775807)), 0); -assert_eq!(call!(remi_si64(1, -9223372036854775808)), 1); -assert_eq!(call!(remi_si64(1, -9223372036854775807)), 1); -assert_eq!(call!(remi_si64(1, -1741927215160008704)), 1); -assert_eq!(call!(remi_si64(1, -1328271339354574848)), 1); -assert_eq!(call!(remi_si64(1, 2)), 1); -assert_eq!(call!(remi_si64(1, 3)), 1); -assert_eq!(call!(remi_si64(1, 4)), 1); -assert_eq!(call!(remi_si64(1, 5577148965131116544)), 1); -assert_eq!(call!(remi_si64(1, 9223372036854775806)), 1); -assert_eq!(call!(remi_si64(1, 9223372036854775807)), 1); -assert_eq!(call!(remi_si64(3, 2)), 1); -assert_eq!(call!(remi_si64(4, 3)), 1); -assert_eq!(call!(remi_si64(9223372036854775807, 2)), 1); -assert_eq!(call!(remi_si64(9223372036854775807, 3)), 1); -assert_eq!(call!(remi_si64(9223372036854775807, 9223372036854775806)), 1); -assert_eq!(call!(remi_si64(2, -9223372036854775808)), 2); -assert_eq!(call!(remi_si64(2, -9223372036854775807)), 2); -assert_eq!(call!(remi_si64(2, -1741927215160008704)), 2); -assert_eq!(call!(remi_si64(2, -1328271339354574848)), 2); -assert_eq!(call!(remi_si64(2, 3)), 2); -assert_eq!(call!(remi_si64(2, 4)), 2); -assert_eq!(call!(remi_si64(2, 5577148965131116544)), 2); -assert_eq!(call!(remi_si64(2, 9223372036854775806)), 2); -assert_eq!(call!(remi_si64(2, 9223372036854775807)), 2); -assert_eq!(call!(remi_si64(5577148965131116544, 3)), 2); -assert_eq!(call!(remi_si64(9223372036854775806, 4)), 2); -assert_eq!(call!(remi_si64(3, -9223372036854775808)), 3); -assert_eq!(call!(remi_si64(3, -9223372036854775807)), 3); -assert_eq!(call!(remi_si64(3, -1741927215160008704)), 3); -assert_eq!(call!(remi_si64(3, -1328271339354574848)), 3); -assert_eq!(call!(remi_si64(3, 4)), 3); -assert_eq!(call!(remi_si64(3, 5577148965131116544)), 3); -assert_eq!(call!(remi_si64(3, 9223372036854775806)), 3); -assert_eq!(call!(remi_si64(3, 9223372036854775807)), 3); -assert_eq!(call!(remi_si64(9223372036854775807, 4)), 3); -assert_eq!(call!(remi_si64(4, -9223372036854775808)), 4); -assert_eq!(call!(remi_si64(4, -9223372036854775807)), 4); -assert_eq!(call!(remi_si64(4, -1741927215160008704)), 4); -assert_eq!(call!(remi_si64(4, -1328271339354574848)), 4); -assert_eq!(call!(remi_si64(4, 5577148965131116544)), 4); -assert_eq!(call!(remi_si64(4, 9223372036854775806)), 4); -assert_eq!(call!(remi_si64(4, 9223372036854775807)), 4); -assert_eq!(call!(remi_si64(5577148965131116544, -1328271339354574848)), 264063607712817152); -assert_eq!(call!(remi_si64(5577148965131116544, -1741927215160008704)), 351367319651090432); -assert_eq!(call!(remi_si64(9223372036854775806, -1741927215160008704)), 513735961054732286); -assert_eq!(call!(remi_si64(9223372036854775807, -1741927215160008704)), 513735961054732287); -assert_eq!(call!(remi_si64(9223372036854775806, -1328271339354574848)), 1253744000727326718); -assert_eq!(call!(remi_si64(9223372036854775807, -1328271339354574848)), 1253744000727326719); -assert_eq!(call!(remi_si64(9223372036854775806, 5577148965131116544)), 3646223071723659262); -assert_eq!(call!(remi_si64(9223372036854775807, 5577148965131116544)), 3646223071723659263); -assert_eq!(call!(remi_si64(5577148965131116544, -9223372036854775808)), 5577148965131116544); -assert_eq!(call!(remi_si64(5577148965131116544, -9223372036854775807)), 5577148965131116544); -assert_eq!(call!(remi_si64(5577148965131116544, 9223372036854775806)), 5577148965131116544); -assert_eq!(call!(remi_si64(5577148965131116544, 9223372036854775807)), 5577148965131116544); -assert_eq!(call!(remi_si64(9223372036854775806, -9223372036854775808)), 9223372036854775806); -assert_eq!(call!(remi_si64(9223372036854775806, -9223372036854775807)), 9223372036854775806); -assert_eq!(call!(remi_si64(9223372036854775806, 9223372036854775807)), 9223372036854775806); -assert_eq!(call!(remi_si64(9223372036854775807, -9223372036854775808)), 9223372036854775807); -assert_eq!(call!(remi_si8(-127, -128)), -127); -assert_eq!(call!(remi_si8(-127, 16)), -15); -assert_eq!(call!(remi_si8(-127, 4)), -3); -assert_eq!(call!(remi_si8(-128, 3)), -2); -assert_eq!(call!(remi_si8(-128, 126)), -2); -assert_eq!(call!(remi_si8(-128, -127)), -1); -assert_eq!(call!(remi_si8(-128, 127)), -1); -assert_eq!(call!(remi_si8(-127, 2)), -1); -assert_eq!(call!(remi_si8(-127, 3)), -1); -assert_eq!(call!(remi_si8(-127, 126)), -1); -assert_eq!(call!(remi_si8(-128, -128)), 0); -assert_eq!(call!(remi_si8(-128, 1)), 0); -assert_eq!(call!(remi_si8(-128, 2)), 0); -assert_eq!(call!(remi_si8(-128, 4)), 0); -assert_eq!(call!(remi_si8(-128, 16)), 0); -assert_eq!(call!(remi_si8(-127, -127)), 0); -assert_eq!(call!(remi_si8(-127, 1)), 0); -assert_eq!(call!(remi_si8(-127, 127)), 0); -assert_eq!(call!(remi_si8(0, -128)), 0); -assert_eq!(call!(remi_si8(0, -127)), 0); -assert_eq!(call!(remi_si8(0, 1)), 0); -assert_eq!(call!(remi_si8(0, 2)), 0); -assert_eq!(call!(remi_si8(0, 3)), 0); -assert_eq!(call!(remi_si8(0, 4)), 0); -assert_eq!(call!(remi_si8(0, 16)), 0); -assert_eq!(call!(remi_si8(0, 126)), 0); -assert_eq!(call!(remi_si8(0, 127)), 0); -assert_eq!(call!(remi_si8(1, 1)), 0); -assert_eq!(call!(remi_si8(2, 1)), 0); -assert_eq!(call!(remi_si8(2, 2)), 0); -assert_eq!(call!(remi_si8(3, 1)), 0); -assert_eq!(call!(remi_si8(3, 3)), 0); -assert_eq!(call!(remi_si8(4, 1)), 0); -assert_eq!(call!(remi_si8(4, 2)), 0); -assert_eq!(call!(remi_si8(4, 4)), 0); -assert_eq!(call!(remi_si8(16, 1)), 0); -assert_eq!(call!(remi_si8(16, 2)), 0); -assert_eq!(call!(remi_si8(16, 4)), 0); -assert_eq!(call!(remi_si8(16, 16)), 0); -assert_eq!(call!(remi_si8(126, 1)), 0); -assert_eq!(call!(remi_si8(126, 2)), 0); -assert_eq!(call!(remi_si8(126, 3)), 0); -assert_eq!(call!(remi_si8(126, 126)), 0); -assert_eq!(call!(remi_si8(127, -127)), 0); -assert_eq!(call!(remi_si8(127, 1)), 0); -assert_eq!(call!(remi_si8(127, 127)), 0); -assert_eq!(call!(remi_si8(1, -128)), 1); -assert_eq!(call!(remi_si8(1, -127)), 1); -assert_eq!(call!(remi_si8(1, 2)), 1); -assert_eq!(call!(remi_si8(1, 3)), 1); -assert_eq!(call!(remi_si8(1, 4)), 1); -assert_eq!(call!(remi_si8(1, 16)), 1); -assert_eq!(call!(remi_si8(1, 126)), 1); -assert_eq!(call!(remi_si8(1, 127)), 1); -assert_eq!(call!(remi_si8(3, 2)), 1); -assert_eq!(call!(remi_si8(4, 3)), 1); -assert_eq!(call!(remi_si8(16, 3)), 1); -assert_eq!(call!(remi_si8(127, 2)), 1); -assert_eq!(call!(remi_si8(127, 3)), 1); -assert_eq!(call!(remi_si8(127, 126)), 1); -assert_eq!(call!(remi_si8(2, -128)), 2); -assert_eq!(call!(remi_si8(2, -127)), 2); -assert_eq!(call!(remi_si8(2, 3)), 2); -assert_eq!(call!(remi_si8(2, 4)), 2); -assert_eq!(call!(remi_si8(2, 16)), 2); -assert_eq!(call!(remi_si8(2, 126)), 2); -assert_eq!(call!(remi_si8(2, 127)), 2); -assert_eq!(call!(remi_si8(126, 4)), 2); -assert_eq!(call!(remi_si8(3, -128)), 3); -assert_eq!(call!(remi_si8(3, -127)), 3); -assert_eq!(call!(remi_si8(3, 4)), 3); -assert_eq!(call!(remi_si8(3, 16)), 3); -assert_eq!(call!(remi_si8(3, 126)), 3); -assert_eq!(call!(remi_si8(3, 127)), 3); -assert_eq!(call!(remi_si8(127, 4)), 3); -assert_eq!(call!(remi_si8(4, -128)), 4); -assert_eq!(call!(remi_si8(4, -127)), 4); -assert_eq!(call!(remi_si8(4, 16)), 4); -assert_eq!(call!(remi_si8(4, 126)), 4); -assert_eq!(call!(remi_si8(4, 127)), 4); -assert_eq!(call!(remi_si8(126, 16)), 14); -assert_eq!(call!(remi_si8(127, 16)), 15); -assert_eq!(call!(remi_si8(16, -128)), 16); -assert_eq!(call!(remi_si8(16, -127)), 16); -assert_eq!(call!(remi_si8(16, 126)), 16); -assert_eq!(call!(remi_si8(16, 127)), 16); -assert_eq!(call!(remi_si8(126, -128)), 126); -assert_eq!(call!(remi_si8(126, -127)), 126); -assert_eq!(call!(remi_si8(126, 127)), 126); -assert_eq!(call!(remi_si8(127, -128)), 127); -assert_eq!(call!(remi_ui16(0, 1)), 0); -assert_eq!(call!(remi_ui16(0, 2)), 0); -assert_eq!(call!(remi_ui16(0, 3)), 0); -assert_eq!(call!(remi_ui16(0, 4)), 0); -assert_eq!(call!(remi_ui16(0, 1717)), 0); -assert_eq!(call!(remi_ui16(0, 17988)), 0); -assert_eq!(call!(remi_ui16(0, 65096)), 0); -assert_eq!(call!(remi_ui16(0, 65534)), 0); -assert_eq!(call!(remi_ui16(0, 65535)), 0); -assert_eq!(call!(remi_ui16(1, 1)), 0); -assert_eq!(call!(remi_ui16(2, 1)), 0); -assert_eq!(call!(remi_ui16(2, 2)), 0); -assert_eq!(call!(remi_ui16(3, 1)), 0); -assert_eq!(call!(remi_ui16(3, 3)), 0); -assert_eq!(call!(remi_ui16(4, 1)), 0); -assert_eq!(call!(remi_ui16(4, 2)), 0); -assert_eq!(call!(remi_ui16(4, 4)), 0); -assert_eq!(call!(remi_ui16(1717, 1)), 0); -assert_eq!(call!(remi_ui16(1717, 1717)), 0); -assert_eq!(call!(remi_ui16(17988, 1)), 0); -assert_eq!(call!(remi_ui16(17988, 2)), 0); -assert_eq!(call!(remi_ui16(17988, 3)), 0); -assert_eq!(call!(remi_ui16(17988, 4)), 0); -assert_eq!(call!(remi_ui16(17988, 17988)), 0); -assert_eq!(call!(remi_ui16(65096, 1)), 0); -assert_eq!(call!(remi_ui16(65096, 2)), 0); -assert_eq!(call!(remi_ui16(65096, 4)), 0); -assert_eq!(call!(remi_ui16(65096, 65096)), 0); -assert_eq!(call!(remi_ui16(65534, 1)), 0); -assert_eq!(call!(remi_ui16(65534, 2)), 0); -assert_eq!(call!(remi_ui16(65534, 65534)), 0); -assert_eq!(call!(remi_ui16(65535, 1)), 0); -assert_eq!(call!(remi_ui16(65535, 3)), 0); -assert_eq!(call!(remi_ui16(65535, 65535)), 0); -assert_eq!(call!(remi_ui16(1, 2)), 1); -assert_eq!(call!(remi_ui16(1, 3)), 1); -assert_eq!(call!(remi_ui16(1, 4)), 1); -assert_eq!(call!(remi_ui16(1, 1717)), 1); -assert_eq!(call!(remi_ui16(1, 17988)), 1); -assert_eq!(call!(remi_ui16(1, 65096)), 1); -assert_eq!(call!(remi_ui16(1, 65534)), 1); -assert_eq!(call!(remi_ui16(1, 65535)), 1); -assert_eq!(call!(remi_ui16(3, 2)), 1); -assert_eq!(call!(remi_ui16(4, 3)), 1); -assert_eq!(call!(remi_ui16(1717, 2)), 1); -assert_eq!(call!(remi_ui16(1717, 3)), 1); -assert_eq!(call!(remi_ui16(1717, 4)), 1); -assert_eq!(call!(remi_ui16(65535, 2)), 1); -assert_eq!(call!(remi_ui16(65535, 65534)), 1); -assert_eq!(call!(remi_ui16(2, 3)), 2); -assert_eq!(call!(remi_ui16(2, 4)), 2); -assert_eq!(call!(remi_ui16(2, 1717)), 2); -assert_eq!(call!(remi_ui16(2, 17988)), 2); -assert_eq!(call!(remi_ui16(2, 65096)), 2); -assert_eq!(call!(remi_ui16(2, 65534)), 2); -assert_eq!(call!(remi_ui16(2, 65535)), 2); -assert_eq!(call!(remi_ui16(65096, 3)), 2); -assert_eq!(call!(remi_ui16(65534, 3)), 2); -assert_eq!(call!(remi_ui16(65534, 4)), 2); -assert_eq!(call!(remi_ui16(3, 4)), 3); -assert_eq!(call!(remi_ui16(3, 1717)), 3); -assert_eq!(call!(remi_ui16(3, 17988)), 3); -assert_eq!(call!(remi_ui16(3, 65096)), 3); -assert_eq!(call!(remi_ui16(3, 65534)), 3); -assert_eq!(call!(remi_ui16(3, 65535)), 3); -assert_eq!(call!(remi_ui16(65535, 4)), 3); -assert_eq!(call!(remi_ui16(4, 1717)), 4); -assert_eq!(call!(remi_ui16(4, 17988)), 4); -assert_eq!(call!(remi_ui16(4, 65096)), 4); -assert_eq!(call!(remi_ui16(4, 65534)), 4); -assert_eq!(call!(remi_ui16(4, 65535)), 4); -assert_eq!(call!(remi_ui16(65534, 1717)), 288); -assert_eq!(call!(remi_ui16(65535, 1717)), 289); -assert_eq!(call!(remi_ui16(65534, 65096)), 438); -assert_eq!(call!(remi_ui16(65535, 65096)), 439); -assert_eq!(call!(remi_ui16(17988, 1717)), 818); -assert_eq!(call!(remi_ui16(65096, 1717)), 1567); -assert_eq!(call!(remi_ui16(1717, 17988)), 1717); -assert_eq!(call!(remi_ui16(1717, 65096)), 1717); -assert_eq!(call!(remi_ui16(1717, 65534)), 1717); -assert_eq!(call!(remi_ui16(1717, 65535)), 1717); -assert_eq!(call!(remi_ui16(65096, 17988)), 11132); -assert_eq!(call!(remi_ui16(65534, 17988)), 11570); -assert_eq!(call!(remi_ui16(65535, 17988)), 11571); -assert_eq!(call!(remi_ui16(17988, 65096)), 17988); -assert_eq!(call!(remi_ui16(17988, 65534)), 17988); -assert_eq!(call!(remi_ui16(17988, 65535)), 17988); -assert_eq!(call!(remi_ui16(65096, 65534)), 65096); -assert_eq!(call!(remi_ui16(65096, 65535)), 65096); -assert_eq!(call!(remi_ui16(65534, 65535)), 65534); -assert_eq!(call!(remi_ui32(0, 1)), 0); -assert_eq!(call!(remi_ui32(0, 2)), 0); -assert_eq!(call!(remi_ui32(0, 3)), 0); -assert_eq!(call!(remi_ui32(0, 4)), 0); -assert_eq!(call!(remi_ui32(0, 2119154652)), 0); -assert_eq!(call!(remi_ui32(0, 3002788344)), 0); -assert_eq!(call!(remi_ui32(0, 3482297128)), 0); -assert_eq!(call!(remi_ui32(0, 4294967294)), 0); -assert_eq!(call!(remi_ui32(0, 4294967295)), 0); -assert_eq!(call!(remi_ui32(1, 1)), 0); -assert_eq!(call!(remi_ui32(2, 1)), 0); -assert_eq!(call!(remi_ui32(2, 2)), 0); -assert_eq!(call!(remi_ui32(3, 1)), 0); -assert_eq!(call!(remi_ui32(3, 3)), 0); -assert_eq!(call!(remi_ui32(4, 1)), 0); -assert_eq!(call!(remi_ui32(4, 2)), 0); -assert_eq!(call!(remi_ui32(4, 4)), 0); -assert_eq!(call!(remi_ui32(2119154652, 1)), 0); -assert_eq!(call!(remi_ui32(2119154652, 2)), 0); -assert_eq!(call!(remi_ui32(2119154652, 3)), 0); -assert_eq!(call!(remi_ui32(2119154652, 4)), 0); -assert_eq!(call!(remi_ui32(2119154652, 2119154652)), 0); -assert_eq!(call!(remi_ui32(3002788344, 1)), 0); -assert_eq!(call!(remi_ui32(3002788344, 2)), 0); -assert_eq!(call!(remi_ui32(3002788344, 3)), 0); -assert_eq!(call!(remi_ui32(3002788344, 4)), 0); -assert_eq!(call!(remi_ui32(3002788344, 3002788344)), 0); -assert_eq!(call!(remi_ui32(3482297128, 1)), 0); -assert_eq!(call!(remi_ui32(3482297128, 2)), 0); -assert_eq!(call!(remi_ui32(3482297128, 4)), 0); -assert_eq!(call!(remi_ui32(3482297128, 3482297128)), 0); -assert_eq!(call!(remi_ui32(4294967294, 1)), 0); -assert_eq!(call!(remi_ui32(4294967294, 2)), 0); -assert_eq!(call!(remi_ui32(4294967294, 4294967294)), 0); -assert_eq!(call!(remi_ui32(4294967295, 1)), 0); -assert_eq!(call!(remi_ui32(4294967295, 3)), 0); -assert_eq!(call!(remi_ui32(4294967295, 4294967295)), 0); -assert_eq!(call!(remi_ui32(1, 2)), 1); -assert_eq!(call!(remi_ui32(1, 3)), 1); -assert_eq!(call!(remi_ui32(1, 4)), 1); -assert_eq!(call!(remi_ui32(1, 2119154652)), 1); -assert_eq!(call!(remi_ui32(1, 3002788344)), 1); -assert_eq!(call!(remi_ui32(1, 3482297128)), 1); -assert_eq!(call!(remi_ui32(1, 4294967294)), 1); -assert_eq!(call!(remi_ui32(1, 4294967295)), 1); -assert_eq!(call!(remi_ui32(3, 2)), 1); -assert_eq!(call!(remi_ui32(4, 3)), 1); -assert_eq!(call!(remi_ui32(3482297128, 3)), 1); -assert_eq!(call!(remi_ui32(4294967295, 2)), 1); -assert_eq!(call!(remi_ui32(4294967295, 4294967294)), 1); -assert_eq!(call!(remi_ui32(2, 3)), 2); -assert_eq!(call!(remi_ui32(2, 4)), 2); -assert_eq!(call!(remi_ui32(2, 2119154652)), 2); -assert_eq!(call!(remi_ui32(2, 3002788344)), 2); -assert_eq!(call!(remi_ui32(2, 3482297128)), 2); -assert_eq!(call!(remi_ui32(2, 4294967294)), 2); -assert_eq!(call!(remi_ui32(2, 4294967295)), 2); -assert_eq!(call!(remi_ui32(4294967294, 3)), 2); -assert_eq!(call!(remi_ui32(4294967294, 4)), 2); -assert_eq!(call!(remi_ui32(3, 4)), 3); -assert_eq!(call!(remi_ui32(3, 2119154652)), 3); -assert_eq!(call!(remi_ui32(3, 3002788344)), 3); -assert_eq!(call!(remi_ui32(3, 3482297128)), 3); -assert_eq!(call!(remi_ui32(3, 4294967294)), 3); -assert_eq!(call!(remi_ui32(3, 4294967295)), 3); -assert_eq!(call!(remi_ui32(4294967295, 4)), 3); -assert_eq!(call!(remi_ui32(4, 2119154652)), 4); -assert_eq!(call!(remi_ui32(4, 3002788344)), 4); -assert_eq!(call!(remi_ui32(4, 3482297128)), 4); -assert_eq!(call!(remi_ui32(4, 4294967294)), 4); -assert_eq!(call!(remi_ui32(4, 4294967295)), 4); -assert_eq!(call!(remi_ui32(4294967294, 2119154652)), 56657990); -assert_eq!(call!(remi_ui32(4294967295, 2119154652)), 56657991); -assert_eq!(call!(remi_ui32(3482297128, 3002788344)), 479508784); -assert_eq!(call!(remi_ui32(4294967294, 3482297128)), 812670166); -assert_eq!(call!(remi_ui32(4294967295, 3482297128)), 812670167); -assert_eq!(call!(remi_ui32(3002788344, 2119154652)), 883633692); -assert_eq!(call!(remi_ui32(4294967294, 3002788344)), 1292178950); -assert_eq!(call!(remi_ui32(4294967295, 3002788344)), 1292178951); -assert_eq!(call!(remi_ui32(3482297128, 2119154652)), 1363142476); -assert_eq!(call!(remi_ui32(2119154652, 3002788344)), 2119154652); -assert_eq!(call!(remi_ui32(2119154652, 3482297128)), 2119154652); -assert_eq!(call!(remi_ui32(2119154652, 4294967294)), 2119154652); -assert_eq!(call!(remi_ui32(2119154652, 4294967295)), 2119154652); -assert_eq!(call!(remi_ui32(3002788344, 3482297128)), 3002788344); -assert_eq!(call!(remi_ui32(3002788344, 4294967294)), 3002788344); -assert_eq!(call!(remi_ui32(3002788344, 4294967295)), 3002788344); -assert_eq!(call!(remi_ui32(3482297128, 4294967294)), 3482297128); -assert_eq!(call!(remi_ui32(3482297128, 4294967295)), 3482297128); -assert_eq!(call!(remi_ui32(4294967294, 4294967295)), 4294967294); -assert_eq!(call!(remi_ui64(0, 1)), 0); -assert_eq!(call!(remi_ui64(0, 2)), 0); -assert_eq!(call!(remi_ui64(0, 3)), 0); -assert_eq!(call!(remi_ui64(0, 4)), 0); -assert_eq!(call!(remi_ui64(0, 191084152064409600)), 0); -assert_eq!(call!(remi_ui64(0, 11015955194427482112)), 0); -assert_eq!(call!(remi_ui64(0, 16990600415051759616)), 0); -assert_eq!(call!(remi_ui64(0, 18446744073709551614)), 0); -assert_eq!(call!(remi_ui64(0, 18446744073709551615)), 0); -assert_eq!(call!(remi_ui64(1, 1)), 0); -assert_eq!(call!(remi_ui64(2, 1)), 0); -assert_eq!(call!(remi_ui64(2, 2)), 0); -assert_eq!(call!(remi_ui64(3, 1)), 0); -assert_eq!(call!(remi_ui64(3, 3)), 0); -assert_eq!(call!(remi_ui64(4, 1)), 0); -assert_eq!(call!(remi_ui64(4, 2)), 0); -assert_eq!(call!(remi_ui64(4, 4)), 0); -assert_eq!(call!(remi_ui64(191084152064409600, 1)), 0); -assert_eq!(call!(remi_ui64(191084152064409600, 2)), 0); -assert_eq!(call!(remi_ui64(191084152064409600, 3)), 0); -assert_eq!(call!(remi_ui64(191084152064409600, 4)), 0); -assert_eq!(call!(remi_ui64(191084152064409600, 191084152064409600)), 0); -assert_eq!(call!(remi_ui64(11015955194427482112, 1)), 0); -assert_eq!(call!(remi_ui64(11015955194427482112, 2)), 0); -assert_eq!(call!(remi_ui64(11015955194427482112, 3)), 0); -assert_eq!(call!(remi_ui64(11015955194427482112, 4)), 0); -assert_eq!(call!(remi_ui64(11015955194427482112, 11015955194427482112)), 0); -assert_eq!(call!(remi_ui64(16990600415051759616, 1)), 0); -assert_eq!(call!(remi_ui64(16990600415051759616, 2)), 0); -assert_eq!(call!(remi_ui64(16990600415051759616, 3)), 0); -assert_eq!(call!(remi_ui64(16990600415051759616, 4)), 0); -assert_eq!(call!(remi_ui64(16990600415051759616, 16990600415051759616)), 0); -assert_eq!(call!(remi_ui64(18446744073709551614, 1)), 0); -assert_eq!(call!(remi_ui64(18446744073709551614, 2)), 0); -assert_eq!(call!(remi_ui64(18446744073709551614, 18446744073709551614)), 0); -assert_eq!(call!(remi_ui64(18446744073709551615, 1)), 0); -assert_eq!(call!(remi_ui64(18446744073709551615, 3)), 0); -assert_eq!(call!(remi_ui64(18446744073709551615, 18446744073709551615)), 0); -assert_eq!(call!(remi_ui64(1, 2)), 1); -assert_eq!(call!(remi_ui64(1, 3)), 1); -assert_eq!(call!(remi_ui64(1, 4)), 1); -assert_eq!(call!(remi_ui64(1, 191084152064409600)), 1); -assert_eq!(call!(remi_ui64(1, 11015955194427482112)), 1); -assert_eq!(call!(remi_ui64(1, 16990600415051759616)), 1); -assert_eq!(call!(remi_ui64(1, 18446744073709551614)), 1); -assert_eq!(call!(remi_ui64(1, 18446744073709551615)), 1); -assert_eq!(call!(remi_ui64(3, 2)), 1); -assert_eq!(call!(remi_ui64(4, 3)), 1); -assert_eq!(call!(remi_ui64(18446744073709551615, 2)), 1); -assert_eq!(call!(remi_ui64(18446744073709551615, 18446744073709551614)), 1); -assert_eq!(call!(remi_ui64(2, 3)), 2); -assert_eq!(call!(remi_ui64(2, 4)), 2); -assert_eq!(call!(remi_ui64(2, 191084152064409600)), 2); -assert_eq!(call!(remi_ui64(2, 11015955194427482112)), 2); -assert_eq!(call!(remi_ui64(2, 16990600415051759616)), 2); -assert_eq!(call!(remi_ui64(2, 18446744073709551614)), 2); -assert_eq!(call!(remi_ui64(2, 18446744073709551615)), 2); -assert_eq!(call!(remi_ui64(18446744073709551614, 3)), 2); -assert_eq!(call!(remi_ui64(18446744073709551614, 4)), 2); -assert_eq!(call!(remi_ui64(3, 4)), 3); -assert_eq!(call!(remi_ui64(3, 191084152064409600)), 3); -assert_eq!(call!(remi_ui64(3, 11015955194427482112)), 3); -assert_eq!(call!(remi_ui64(3, 16990600415051759616)), 3); -assert_eq!(call!(remi_ui64(3, 18446744073709551614)), 3); -assert_eq!(call!(remi_ui64(3, 18446744073709551615)), 3); -assert_eq!(call!(remi_ui64(18446744073709551615, 4)), 3); -assert_eq!(call!(remi_ui64(4, 191084152064409600)), 4); -assert_eq!(call!(remi_ui64(4, 11015955194427482112)), 4); -assert_eq!(call!(remi_ui64(4, 16990600415051759616)), 4); -assert_eq!(call!(remi_ui64(4, 18446744073709551614)), 4); -assert_eq!(call!(remi_ui64(4, 18446744073709551615)), 4); -assert_eq!(call!(remi_ui64(18446744073709551614, 191084152064409600)), 102665475526230014); -assert_eq!(call!(remi_ui64(18446744073709551615, 191084152064409600)), 102665475526230015); -assert_eq!(call!(remi_ui64(11015955194427482112, 191084152064409600)), 124158526756134912); -assert_eq!(call!(remi_ui64(16990600415051759616, 191084152064409600)), 175195033383714816); -assert_eq!(call!(remi_ui64(191084152064409600, 11015955194427482112)), 191084152064409600); -assert_eq!(call!(remi_ui64(191084152064409600, 16990600415051759616)), 191084152064409600); -assert_eq!(call!(remi_ui64(191084152064409600, 18446744073709551614)), 191084152064409600); -assert_eq!(call!(remi_ui64(191084152064409600, 18446744073709551615)), 191084152064409600); -assert_eq!(call!(remi_ui64(18446744073709551614, 16990600415051759616)), 1456143658657791998); -assert_eq!(call!(remi_ui64(18446744073709551615, 16990600415051759616)), 1456143658657791999); -assert_eq!(call!(remi_ui64(16990600415051759616, 11015955194427482112)), 5974645220624277504); -assert_eq!(call!(remi_ui64(18446744073709551614, 11015955194427482112)), 7430788879282069502); -assert_eq!(call!(remi_ui64(18446744073709551615, 11015955194427482112)), 7430788879282069503); -assert_eq!(call!(remi_ui64(11015955194427482112, 16990600415051759616)), 11015955194427482112); -assert_eq!(call!(remi_ui64(11015955194427482112, 18446744073709551614)), 11015955194427482112); -assert_eq!(call!(remi_ui64(11015955194427482112, 18446744073709551615)), 11015955194427482112); -assert_eq!(call!(remi_ui64(16990600415051759616, 18446744073709551614)), 16990600415051759616); -assert_eq!(call!(remi_ui64(16990600415051759616, 18446744073709551615)), 16990600415051759616); -assert_eq!(call!(remi_ui64(18446744073709551614, 18446744073709551615)), 18446744073709551614); -assert_eq!(call!(remi_ui8(0, 1)), 0); -assert_eq!(call!(remi_ui8(0, 2)), 0); -assert_eq!(call!(remi_ui8(0, 3)), 0); -assert_eq!(call!(remi_ui8(0, 4)), 0); -assert_eq!(call!(remi_ui8(0, 72)), 0); -assert_eq!(call!(remi_ui8(0, 100)), 0); -assert_eq!(call!(remi_ui8(0, 162)), 0); -assert_eq!(call!(remi_ui8(0, 254)), 0); -assert_eq!(call!(remi_ui8(0, 255)), 0); -assert_eq!(call!(remi_ui8(1, 1)), 0); -assert_eq!(call!(remi_ui8(2, 1)), 0); -assert_eq!(call!(remi_ui8(2, 2)), 0); -assert_eq!(call!(remi_ui8(3, 1)), 0); -assert_eq!(call!(remi_ui8(3, 3)), 0); -assert_eq!(call!(remi_ui8(4, 1)), 0); -assert_eq!(call!(remi_ui8(4, 2)), 0); -assert_eq!(call!(remi_ui8(4, 4)), 0); -assert_eq!(call!(remi_ui8(72, 1)), 0); -assert_eq!(call!(remi_ui8(72, 2)), 0); -assert_eq!(call!(remi_ui8(72, 3)), 0); -assert_eq!(call!(remi_ui8(72, 4)), 0); -assert_eq!(call!(remi_ui8(72, 72)), 0); -assert_eq!(call!(remi_ui8(100, 1)), 0); -assert_eq!(call!(remi_ui8(100, 2)), 0); -assert_eq!(call!(remi_ui8(100, 4)), 0); -assert_eq!(call!(remi_ui8(100, 100)), 0); -assert_eq!(call!(remi_ui8(162, 1)), 0); -assert_eq!(call!(remi_ui8(162, 2)), 0); -assert_eq!(call!(remi_ui8(162, 3)), 0); -assert_eq!(call!(remi_ui8(162, 162)), 0); -assert_eq!(call!(remi_ui8(254, 1)), 0); -assert_eq!(call!(remi_ui8(254, 2)), 0); -assert_eq!(call!(remi_ui8(254, 254)), 0); -assert_eq!(call!(remi_ui8(255, 1)), 0); -assert_eq!(call!(remi_ui8(255, 3)), 0); -assert_eq!(call!(remi_ui8(255, 255)), 0); -assert_eq!(call!(remi_ui8(1, 2)), 1); -assert_eq!(call!(remi_ui8(1, 3)), 1); -assert_eq!(call!(remi_ui8(1, 4)), 1); -assert_eq!(call!(remi_ui8(1, 72)), 1); -assert_eq!(call!(remi_ui8(1, 100)), 1); -assert_eq!(call!(remi_ui8(1, 162)), 1); -assert_eq!(call!(remi_ui8(1, 254)), 1); -assert_eq!(call!(remi_ui8(1, 255)), 1); -assert_eq!(call!(remi_ui8(3, 2)), 1); -assert_eq!(call!(remi_ui8(4, 3)), 1); -assert_eq!(call!(remi_ui8(100, 3)), 1); -assert_eq!(call!(remi_ui8(255, 2)), 1); -assert_eq!(call!(remi_ui8(255, 254)), 1); -assert_eq!(call!(remi_ui8(2, 3)), 2); -assert_eq!(call!(remi_ui8(2, 4)), 2); -assert_eq!(call!(remi_ui8(2, 72)), 2); -assert_eq!(call!(remi_ui8(2, 100)), 2); -assert_eq!(call!(remi_ui8(2, 162)), 2); -assert_eq!(call!(remi_ui8(2, 254)), 2); -assert_eq!(call!(remi_ui8(2, 255)), 2); -assert_eq!(call!(remi_ui8(162, 4)), 2); -assert_eq!(call!(remi_ui8(254, 3)), 2); -assert_eq!(call!(remi_ui8(254, 4)), 2); -assert_eq!(call!(remi_ui8(3, 4)), 3); -assert_eq!(call!(remi_ui8(3, 72)), 3); -assert_eq!(call!(remi_ui8(3, 100)), 3); -assert_eq!(call!(remi_ui8(3, 162)), 3); -assert_eq!(call!(remi_ui8(3, 254)), 3); -assert_eq!(call!(remi_ui8(3, 255)), 3); -assert_eq!(call!(remi_ui8(255, 4)), 3); -assert_eq!(call!(remi_ui8(4, 72)), 4); -assert_eq!(call!(remi_ui8(4, 100)), 4); -assert_eq!(call!(remi_ui8(4, 162)), 4); -assert_eq!(call!(remi_ui8(4, 254)), 4); -assert_eq!(call!(remi_ui8(4, 255)), 4); -assert_eq!(call!(remi_ui8(162, 72)), 18); -assert_eq!(call!(remi_ui8(100, 72)), 28); -assert_eq!(call!(remi_ui8(254, 72)), 38); -assert_eq!(call!(remi_ui8(255, 72)), 39); -assert_eq!(call!(remi_ui8(254, 100)), 54); -assert_eq!(call!(remi_ui8(255, 100)), 55); -assert_eq!(call!(remi_ui8(162, 100)), 62); -assert_eq!(call!(remi_ui8(72, 100)), 72); -assert_eq!(call!(remi_ui8(72, 162)), 72); -assert_eq!(call!(remi_ui8(72, 254)), 72); -assert_eq!(call!(remi_ui8(72, 255)), 72); -assert_eq!(call!(remi_ui8(254, 162)), 92); -assert_eq!(call!(remi_ui8(255, 162)), 93); -assert_eq!(call!(remi_ui8(100, 162)), 100); -assert_eq!(call!(remi_ui8(100, 254)), 100); -assert_eq!(call!(remi_ui8(100, 255)), 100); -assert_eq!(call!(remi_ui8(162, 254)), 162); -assert_eq!(call!(remi_ui8(162, 255)), 162); -assert_eq!(call!(remi_ui8(254, 255)), 254); -assert_eq!(call!(subi_si16(-32768, 0)), -32768); -assert_eq!(call!(subi_si16(-32767, 1)), -32768); -assert_eq!(call!(subi_si16(-32767, 0)), -32767); -assert_eq!(call!(subi_si16(0, 32767)), -32767); -assert_eq!(call!(subi_si16(0, 32766)), -32766); -assert_eq!(call!(subi_si16(1, 32767)), -32766); -assert_eq!(call!(subi_si16(1, 32766)), -32765); -assert_eq!(call!(subi_si16(2, 32767)), -32765); -assert_eq!(call!(subi_si16(2, 32766)), -32764); -assert_eq!(call!(subi_si16(3, 32767)), -32764); -assert_eq!(call!(subi_si16(3, 32766)), -32763); -assert_eq!(call!(subi_si16(4, 32767)), -32763); -assert_eq!(call!(subi_si16(4, 32766)), -32762); -assert_eq!(call!(subi_si16(-32547, 4)), -32551); -assert_eq!(call!(subi_si16(-32547, 3)), -32550); -assert_eq!(call!(subi_si16(-32547, 2)), -32549); -assert_eq!(call!(subi_si16(-32547, 1)), -32548); -assert_eq!(call!(subi_si16(-32547, 0)), -32547); -assert_eq!(call!(subi_si16(10486, 32767)), -22281); -assert_eq!(call!(subi_si16(10486, 32766)), -22280); -assert_eq!(call!(subi_si16(0, 16514)), -16514); -assert_eq!(call!(subi_si16(1, 16514)), -16513); -assert_eq!(call!(subi_si16(2, 16514)), -16512); -assert_eq!(call!(subi_si16(3, 16514)), -16511); -assert_eq!(call!(subi_si16(4, 16514)), -16510); -assert_eq!(call!(subi_si16(16514, 32767)), -16253); -assert_eq!(call!(subi_si16(16514, 32766)), -16252); -assert_eq!(call!(subi_si16(0, 10486)), -10486); -assert_eq!(call!(subi_si16(1, 10486)), -10485); -assert_eq!(call!(subi_si16(2, 10486)), -10484); -assert_eq!(call!(subi_si16(3, 10486)), -10483); -assert_eq!(call!(subi_si16(4, 10486)), -10482); -assert_eq!(call!(subi_si16(10486, 16514)), -6028); -assert_eq!(call!(subi_si16(-32768, -32547)), -221); -assert_eq!(call!(subi_si16(-32767, -32547)), -220); -assert_eq!(call!(subi_si16(0, 4)), -4); -assert_eq!(call!(subi_si16(0, 3)), -3); -assert_eq!(call!(subi_si16(1, 4)), -3); -assert_eq!(call!(subi_si16(0, 2)), -2); -assert_eq!(call!(subi_si16(1, 3)), -2); -assert_eq!(call!(subi_si16(2, 4)), -2); -assert_eq!(call!(subi_si16(-32768, -32767)), -1); -assert_eq!(call!(subi_si16(0, 1)), -1); -assert_eq!(call!(subi_si16(1, 2)), -1); -assert_eq!(call!(subi_si16(2, 3)), -1); -assert_eq!(call!(subi_si16(3, 4)), -1); -assert_eq!(call!(subi_si16(32766, 32767)), -1); -assert_eq!(call!(subi_si16(-32768, -32768)), 0); -assert_eq!(call!(subi_si16(-32767, -32767)), 0); -assert_eq!(call!(subi_si16(-32547, -32547)), 0); -assert_eq!(call!(subi_si16(0, 0)), 0); -assert_eq!(call!(subi_si16(1, 1)), 0); -assert_eq!(call!(subi_si16(2, 2)), 0); -assert_eq!(call!(subi_si16(3, 3)), 0); -assert_eq!(call!(subi_si16(4, 4)), 0); -assert_eq!(call!(subi_si16(10486, 10486)), 0); -assert_eq!(call!(subi_si16(16514, 16514)), 0); -assert_eq!(call!(subi_si16(32766, 32766)), 0); -assert_eq!(call!(subi_si16(32767, 32767)), 0); -assert_eq!(call!(subi_si16(-32767, -32768)), 1); -assert_eq!(call!(subi_si16(1, 0)), 1); -assert_eq!(call!(subi_si16(2, 1)), 1); -assert_eq!(call!(subi_si16(3, 2)), 1); -assert_eq!(call!(subi_si16(4, 3)), 1); -assert_eq!(call!(subi_si16(32767, 32766)), 1); -assert_eq!(call!(subi_si16(2, 0)), 2); -assert_eq!(call!(subi_si16(3, 1)), 2); -assert_eq!(call!(subi_si16(4, 2)), 2); -assert_eq!(call!(subi_si16(3, 0)), 3); -assert_eq!(call!(subi_si16(4, 1)), 3); -assert_eq!(call!(subi_si16(4, 0)), 4); -assert_eq!(call!(subi_si16(-32547, -32767)), 220); -assert_eq!(call!(subi_si16(-32547, -32768)), 221); -assert_eq!(call!(subi_si16(16514, 10486)), 6028); -assert_eq!(call!(subi_si16(10486, 4)), 10482); -assert_eq!(call!(subi_si16(10486, 3)), 10483); -assert_eq!(call!(subi_si16(10486, 2)), 10484); -assert_eq!(call!(subi_si16(10486, 1)), 10485); -assert_eq!(call!(subi_si16(10486, 0)), 10486); -assert_eq!(call!(subi_si16(32766, 16514)), 16252); -assert_eq!(call!(subi_si16(32767, 16514)), 16253); -assert_eq!(call!(subi_si16(16514, 4)), 16510); -assert_eq!(call!(subi_si16(16514, 3)), 16511); -assert_eq!(call!(subi_si16(16514, 2)), 16512); -assert_eq!(call!(subi_si16(16514, 1)), 16513); -assert_eq!(call!(subi_si16(16514, 0)), 16514); -assert_eq!(call!(subi_si16(32766, 10486)), 22280); -assert_eq!(call!(subi_si16(32767, 10486)), 22281); -assert_eq!(call!(subi_si16(0, -32547)), 32547); -assert_eq!(call!(subi_si16(1, -32547)), 32548); -assert_eq!(call!(subi_si16(2, -32547)), 32549); -assert_eq!(call!(subi_si16(3, -32547)), 32550); -assert_eq!(call!(subi_si16(4, -32547)), 32551); -assert_eq!(call!(subi_si16(32766, 4)), 32762); -assert_eq!(call!(subi_si16(32766, 3)), 32763); -assert_eq!(call!(subi_si16(32767, 4)), 32763); -assert_eq!(call!(subi_si16(32766, 2)), 32764); -assert_eq!(call!(subi_si16(32767, 3)), 32764); -assert_eq!(call!(subi_si16(32766, 1)), 32765); -assert_eq!(call!(subi_si16(32767, 2)), 32765); -assert_eq!(call!(subi_si16(32766, 0)), 32766); -assert_eq!(call!(subi_si16(32767, 1)), 32766); -assert_eq!(call!(subi_si16(0, -32767)), 32767); -assert_eq!(call!(subi_si16(32767, 0)), 32767); -assert_eq!(call!(subi_si32(-2147483648, 0)), -2147483648); -assert_eq!(call!(subi_si32(-2147483647, 1)), -2147483648); -assert_eq!(call!(subi_si32(-2147483647, 0)), -2147483647); -assert_eq!(call!(subi_si32(0, 2147483647)), -2147483647); -assert_eq!(call!(subi_si32(0, 2147483646)), -2147483646); -assert_eq!(call!(subi_si32(1, 2147483647)), -2147483646); -assert_eq!(call!(subi_si32(1, 2147483646)), -2147483645); -assert_eq!(call!(subi_si32(2, 2147483647)), -2147483645); -assert_eq!(call!(subi_si32(2, 2147483646)), -2147483644); -assert_eq!(call!(subi_si32(3, 2147483647)), -2147483644); -assert_eq!(call!(subi_si32(3, 2147483646)), -2147483643); -assert_eq!(call!(subi_si32(4, 2147483647)), -2147483643); -assert_eq!(call!(subi_si32(4, 2147483646)), -2147483642); -assert_eq!(call!(subi_si32(-1713183800, 4)), -1713183804); -assert_eq!(call!(subi_si32(-1713183800, 3)), -1713183803); -assert_eq!(call!(subi_si32(-1713183800, 2)), -1713183802); -assert_eq!(call!(subi_si32(-1713183800, 1)), -1713183801); -assert_eq!(call!(subi_si32(-1713183800, 0)), -1713183800); -assert_eq!(call!(subi_si32(-1252582164, 4)), -1252582168); -assert_eq!(call!(subi_si32(-1252582164, 3)), -1252582167); -assert_eq!(call!(subi_si32(-1252582164, 2)), -1252582166); -assert_eq!(call!(subi_si32(-1252582164, 1)), -1252582165); -assert_eq!(call!(subi_si32(-1252582164, 0)), -1252582164); -assert_eq!(call!(subi_si32(-2147483648, -1035405763)), -1112077885); -assert_eq!(call!(subi_si32(-2147483647, -1035405763)), -1112077884); -assert_eq!(call!(subi_si32(-1035405763, 4)), -1035405767); -assert_eq!(call!(subi_si32(-1035405763, 3)), -1035405766); -assert_eq!(call!(subi_si32(-1035405763, 2)), -1035405765); -assert_eq!(call!(subi_si32(-1035405763, 1)), -1035405764); -assert_eq!(call!(subi_si32(-1035405763, 0)), -1035405763); -assert_eq!(call!(subi_si32(-2147483648, -1252582164)), -894901484); -assert_eq!(call!(subi_si32(-2147483647, -1252582164)), -894901483); -assert_eq!(call!(subi_si32(-1713183800, -1035405763)), -677778037); -assert_eq!(call!(subi_si32(-1713183800, -1252582164)), -460601636); -assert_eq!(call!(subi_si32(-2147483648, -1713183800)), -434299848); -assert_eq!(call!(subi_si32(-2147483647, -1713183800)), -434299847); -assert_eq!(call!(subi_si32(-1252582164, -1035405763)), -217176401); -assert_eq!(call!(subi_si32(0, 4)), -4); -assert_eq!(call!(subi_si32(0, 3)), -3); -assert_eq!(call!(subi_si32(1, 4)), -3); -assert_eq!(call!(subi_si32(0, 2)), -2); -assert_eq!(call!(subi_si32(1, 3)), -2); -assert_eq!(call!(subi_si32(2, 4)), -2); -assert_eq!(call!(subi_si32(-2147483648, -2147483647)), -1); -assert_eq!(call!(subi_si32(0, 1)), -1); -assert_eq!(call!(subi_si32(1, 2)), -1); -assert_eq!(call!(subi_si32(2, 3)), -1); -assert_eq!(call!(subi_si32(3, 4)), -1); -assert_eq!(call!(subi_si32(2147483646, 2147483647)), -1); -assert_eq!(call!(subi_si32(-2147483648, -2147483648)), 0); -assert_eq!(call!(subi_si32(-2147483647, -2147483647)), 0); -assert_eq!(call!(subi_si32(-1713183800, -1713183800)), 0); -assert_eq!(call!(subi_si32(-1252582164, -1252582164)), 0); -assert_eq!(call!(subi_si32(-1035405763, -1035405763)), 0); -assert_eq!(call!(subi_si32(0, 0)), 0); -assert_eq!(call!(subi_si32(1, 1)), 0); -assert_eq!(call!(subi_si32(2, 2)), 0); -assert_eq!(call!(subi_si32(3, 3)), 0); -assert_eq!(call!(subi_si32(4, 4)), 0); -assert_eq!(call!(subi_si32(2147483646, 2147483646)), 0); -assert_eq!(call!(subi_si32(2147483647, 2147483647)), 0); -assert_eq!(call!(subi_si32(-2147483647, -2147483648)), 1); -assert_eq!(call!(subi_si32(1, 0)), 1); -assert_eq!(call!(subi_si32(2, 1)), 1); -assert_eq!(call!(subi_si32(3, 2)), 1); -assert_eq!(call!(subi_si32(4, 3)), 1); -assert_eq!(call!(subi_si32(2147483647, 2147483646)), 1); -assert_eq!(call!(subi_si32(2, 0)), 2); -assert_eq!(call!(subi_si32(3, 1)), 2); -assert_eq!(call!(subi_si32(4, 2)), 2); -assert_eq!(call!(subi_si32(3, 0)), 3); -assert_eq!(call!(subi_si32(4, 1)), 3); -assert_eq!(call!(subi_si32(4, 0)), 4); -assert_eq!(call!(subi_si32(-1035405763, -1252582164)), 217176401); -assert_eq!(call!(subi_si32(-1713183800, -2147483647)), 434299847); -assert_eq!(call!(subi_si32(-1713183800, -2147483648)), 434299848); -assert_eq!(call!(subi_si32(-1252582164, -1713183800)), 460601636); -assert_eq!(call!(subi_si32(-1035405763, -1713183800)), 677778037); -assert_eq!(call!(subi_si32(-1252582164, -2147483647)), 894901483); -assert_eq!(call!(subi_si32(-1252582164, -2147483648)), 894901484); -assert_eq!(call!(subi_si32(0, -1035405763)), 1035405763); -assert_eq!(call!(subi_si32(1, -1035405763)), 1035405764); -assert_eq!(call!(subi_si32(2, -1035405763)), 1035405765); -assert_eq!(call!(subi_si32(3, -1035405763)), 1035405766); -assert_eq!(call!(subi_si32(4, -1035405763)), 1035405767); -assert_eq!(call!(subi_si32(-1035405763, -2147483647)), 1112077884); -assert_eq!(call!(subi_si32(-1035405763, -2147483648)), 1112077885); -assert_eq!(call!(subi_si32(0, -1252582164)), 1252582164); -assert_eq!(call!(subi_si32(1, -1252582164)), 1252582165); -assert_eq!(call!(subi_si32(2, -1252582164)), 1252582166); -assert_eq!(call!(subi_si32(3, -1252582164)), 1252582167); -assert_eq!(call!(subi_si32(4, -1252582164)), 1252582168); -assert_eq!(call!(subi_si32(0, -1713183800)), 1713183800); -assert_eq!(call!(subi_si32(1, -1713183800)), 1713183801); -assert_eq!(call!(subi_si32(2, -1713183800)), 1713183802); -assert_eq!(call!(subi_si32(3, -1713183800)), 1713183803); -assert_eq!(call!(subi_si32(4, -1713183800)), 1713183804); -assert_eq!(call!(subi_si32(2147483646, 4)), 2147483642); -assert_eq!(call!(subi_si32(2147483646, 3)), 2147483643); -assert_eq!(call!(subi_si32(2147483647, 4)), 2147483643); -assert_eq!(call!(subi_si32(2147483646, 2)), 2147483644); -assert_eq!(call!(subi_si32(2147483647, 3)), 2147483644); -assert_eq!(call!(subi_si32(2147483646, 1)), 2147483645); -assert_eq!(call!(subi_si32(2147483647, 2)), 2147483645); -assert_eq!(call!(subi_si32(2147483646, 0)), 2147483646); -assert_eq!(call!(subi_si32(2147483647, 1)), 2147483646); -assert_eq!(call!(subi_si32(0, -2147483647)), 2147483647); -assert_eq!(call!(subi_si32(2147483647, 0)), 2147483647); -assert_eq!(call!(subi_si64(-9223372036854775808, 0)), -9223372036854775808); -assert_eq!(call!(subi_si64(-9223372036854775807, 1)), -9223372036854775808); -assert_eq!(call!(subi_si64(-9223372036854775807, 0)), -9223372036854775807); -assert_eq!(call!(subi_si64(0, 9223372036854775807)), -9223372036854775807); -assert_eq!(call!(subi_si64(0, 9223372036854775806)), -9223372036854775806); -assert_eq!(call!(subi_si64(1, 9223372036854775807)), -9223372036854775806); -assert_eq!(call!(subi_si64(1, 9223372036854775806)), -9223372036854775805); -assert_eq!(call!(subi_si64(2, 9223372036854775807)), -9223372036854775805); -assert_eq!(call!(subi_si64(2, 9223372036854775806)), -9223372036854775804); -assert_eq!(call!(subi_si64(3, 9223372036854775807)), -9223372036854775804); -assert_eq!(call!(subi_si64(3, 9223372036854775806)), -9223372036854775803); -assert_eq!(call!(subi_si64(4, 9223372036854775807)), -9223372036854775803); -assert_eq!(call!(subi_si64(4, 9223372036854775806)), -9223372036854775802); -assert_eq!(call!(subi_si64(-9223372036854775808, -1328271339354574848)), -7895100697500200960); -assert_eq!(call!(subi_si64(-9223372036854775807, -1328271339354574848)), -7895100697500200959); -assert_eq!(call!(subi_si64(-9223372036854775808, -1741927215160008704)), -7481444821694767104); -assert_eq!(call!(subi_si64(-9223372036854775807, -1741927215160008704)), -7481444821694767103); -assert_eq!(call!(subi_si64(-1741927215160008704, 5577148965131116544)), -7319076180291125248); -assert_eq!(call!(subi_si64(-1328271339354574848, 5577148965131116544)), -6905420304485691392); -assert_eq!(call!(subi_si64(0, 5577148965131116544)), -5577148965131116544); -assert_eq!(call!(subi_si64(1, 5577148965131116544)), -5577148965131116543); -assert_eq!(call!(subi_si64(2, 5577148965131116544)), -5577148965131116542); -assert_eq!(call!(subi_si64(3, 5577148965131116544)), -5577148965131116541); -assert_eq!(call!(subi_si64(4, 5577148965131116544)), -5577148965131116540); -assert_eq!(call!(subi_si64(5577148965131116544, 9223372036854775807)), -3646223071723659263); -assert_eq!(call!(subi_si64(5577148965131116544, 9223372036854775806)), -3646223071723659262); -assert_eq!(call!(subi_si64(-1741927215160008704, 4)), -1741927215160008708); -assert_eq!(call!(subi_si64(-1741927215160008704, 3)), -1741927215160008707); -assert_eq!(call!(subi_si64(-1741927215160008704, 2)), -1741927215160008706); -assert_eq!(call!(subi_si64(-1741927215160008704, 1)), -1741927215160008705); -assert_eq!(call!(subi_si64(-1741927215160008704, 0)), -1741927215160008704); -assert_eq!(call!(subi_si64(-1328271339354574848, 4)), -1328271339354574852); -assert_eq!(call!(subi_si64(-1328271339354574848, 3)), -1328271339354574851); -assert_eq!(call!(subi_si64(-1328271339354574848, 2)), -1328271339354574850); -assert_eq!(call!(subi_si64(-1328271339354574848, 1)), -1328271339354574849); -assert_eq!(call!(subi_si64(-1328271339354574848, 0)), -1328271339354574848); -assert_eq!(call!(subi_si64(-1741927215160008704, -1328271339354574848)), -413655875805433856); -assert_eq!(call!(subi_si64(0, 4)), -4); -assert_eq!(call!(subi_si64(0, 3)), -3); -assert_eq!(call!(subi_si64(1, 4)), -3); -assert_eq!(call!(subi_si64(0, 2)), -2); -assert_eq!(call!(subi_si64(1, 3)), -2); -assert_eq!(call!(subi_si64(2, 4)), -2); -assert_eq!(call!(subi_si64(-9223372036854775808, -9223372036854775807)), -1); -assert_eq!(call!(subi_si64(0, 1)), -1); -assert_eq!(call!(subi_si64(1, 2)), -1); -assert_eq!(call!(subi_si64(2, 3)), -1); -assert_eq!(call!(subi_si64(3, 4)), -1); -assert_eq!(call!(subi_si64(9223372036854775806, 9223372036854775807)), -1); -assert_eq!(call!(subi_si64(-9223372036854775808, -9223372036854775808)), 0); -assert_eq!(call!(subi_si64(-9223372036854775807, -9223372036854775807)), 0); -assert_eq!(call!(subi_si64(-1741927215160008704, -1741927215160008704)), 0); -assert_eq!(call!(subi_si64(-1328271339354574848, -1328271339354574848)), 0); -assert_eq!(call!(subi_si64(0, 0)), 0); -assert_eq!(call!(subi_si64(1, 1)), 0); -assert_eq!(call!(subi_si64(2, 2)), 0); -assert_eq!(call!(subi_si64(3, 3)), 0); -assert_eq!(call!(subi_si64(4, 4)), 0); -assert_eq!(call!(subi_si64(5577148965131116544, 5577148965131116544)), 0); -assert_eq!(call!(subi_si64(9223372036854775806, 9223372036854775806)), 0); -assert_eq!(call!(subi_si64(9223372036854775807, 9223372036854775807)), 0); -assert_eq!(call!(subi_si64(-9223372036854775807, -9223372036854775808)), 1); -assert_eq!(call!(subi_si64(1, 0)), 1); -assert_eq!(call!(subi_si64(2, 1)), 1); -assert_eq!(call!(subi_si64(3, 2)), 1); -assert_eq!(call!(subi_si64(4, 3)), 1); -assert_eq!(call!(subi_si64(9223372036854775807, 9223372036854775806)), 1); -assert_eq!(call!(subi_si64(2, 0)), 2); -assert_eq!(call!(subi_si64(3, 1)), 2); -assert_eq!(call!(subi_si64(4, 2)), 2); -assert_eq!(call!(subi_si64(3, 0)), 3); -assert_eq!(call!(subi_si64(4, 1)), 3); -assert_eq!(call!(subi_si64(4, 0)), 4); -assert_eq!(call!(subi_si64(-1328271339354574848, -1741927215160008704)), 413655875805433856); -assert_eq!(call!(subi_si64(0, -1328271339354574848)), 1328271339354574848); -assert_eq!(call!(subi_si64(1, -1328271339354574848)), 1328271339354574849); -assert_eq!(call!(subi_si64(2, -1328271339354574848)), 1328271339354574850); -assert_eq!(call!(subi_si64(3, -1328271339354574848)), 1328271339354574851); -assert_eq!(call!(subi_si64(4, -1328271339354574848)), 1328271339354574852); -assert_eq!(call!(subi_si64(0, -1741927215160008704)), 1741927215160008704); -assert_eq!(call!(subi_si64(1, -1741927215160008704)), 1741927215160008705); -assert_eq!(call!(subi_si64(2, -1741927215160008704)), 1741927215160008706); -assert_eq!(call!(subi_si64(3, -1741927215160008704)), 1741927215160008707); -assert_eq!(call!(subi_si64(4, -1741927215160008704)), 1741927215160008708); -assert_eq!(call!(subi_si64(9223372036854775806, 5577148965131116544)), 3646223071723659262); -assert_eq!(call!(subi_si64(9223372036854775807, 5577148965131116544)), 3646223071723659263); -assert_eq!(call!(subi_si64(5577148965131116544, 4)), 5577148965131116540); -assert_eq!(call!(subi_si64(5577148965131116544, 3)), 5577148965131116541); -assert_eq!(call!(subi_si64(5577148965131116544, 2)), 5577148965131116542); -assert_eq!(call!(subi_si64(5577148965131116544, 1)), 5577148965131116543); -assert_eq!(call!(subi_si64(5577148965131116544, 0)), 5577148965131116544); -assert_eq!(call!(subi_si64(5577148965131116544, -1328271339354574848)), 6905420304485691392); -assert_eq!(call!(subi_si64(5577148965131116544, -1741927215160008704)), 7319076180291125248); -assert_eq!(call!(subi_si64(-1741927215160008704, -9223372036854775807)), 7481444821694767103); -assert_eq!(call!(subi_si64(-1741927215160008704, -9223372036854775808)), 7481444821694767104); -assert_eq!(call!(subi_si64(-1328271339354574848, -9223372036854775807)), 7895100697500200959); -assert_eq!(call!(subi_si64(-1328271339354574848, -9223372036854775808)), 7895100697500200960); -assert_eq!(call!(subi_si64(9223372036854775806, 4)), 9223372036854775802); -assert_eq!(call!(subi_si64(9223372036854775806, 3)), 9223372036854775803); -assert_eq!(call!(subi_si64(9223372036854775807, 4)), 9223372036854775803); -assert_eq!(call!(subi_si64(9223372036854775806, 2)), 9223372036854775804); -assert_eq!(call!(subi_si64(9223372036854775807, 3)), 9223372036854775804); -assert_eq!(call!(subi_si64(9223372036854775806, 1)), 9223372036854775805); -assert_eq!(call!(subi_si64(9223372036854775807, 2)), 9223372036854775805); -assert_eq!(call!(subi_si64(9223372036854775806, 0)), 9223372036854775806); -assert_eq!(call!(subi_si64(9223372036854775807, 1)), 9223372036854775806); -assert_eq!(call!(subi_si64(0, -9223372036854775807)), 9223372036854775807); -assert_eq!(call!(subi_si64(9223372036854775807, 0)), 9223372036854775807); -assert_eq!(call!(subi_si8(-128, 0)), -128); -assert_eq!(call!(subi_si8(-127, 1)), -128); -assert_eq!(call!(subi_si8(-127, 0)), -127); -assert_eq!(call!(subi_si8(0, 127)), -127); -assert_eq!(call!(subi_si8(0, 126)), -126); -assert_eq!(call!(subi_si8(1, 127)), -126); -assert_eq!(call!(subi_si8(1, 126)), -125); -assert_eq!(call!(subi_si8(2, 127)), -125); -assert_eq!(call!(subi_si8(2, 126)), -124); -assert_eq!(call!(subi_si8(3, 127)), -124); -assert_eq!(call!(subi_si8(3, 126)), -123); -assert_eq!(call!(subi_si8(4, 127)), -123); -assert_eq!(call!(subi_si8(4, 126)), -122); -assert_eq!(call!(subi_si8(16, 127)), -111); -assert_eq!(call!(subi_si8(16, 126)), -110); -assert_eq!(call!(subi_si8(0, 16)), -16); -assert_eq!(call!(subi_si8(1, 16)), -15); -assert_eq!(call!(subi_si8(2, 16)), -14); -assert_eq!(call!(subi_si8(3, 16)), -13); -assert_eq!(call!(subi_si8(4, 16)), -12); -assert_eq!(call!(subi_si8(0, 4)), -4); -assert_eq!(call!(subi_si8(0, 3)), -3); -assert_eq!(call!(subi_si8(1, 4)), -3); -assert_eq!(call!(subi_si8(0, 2)), -2); -assert_eq!(call!(subi_si8(1, 3)), -2); -assert_eq!(call!(subi_si8(2, 4)), -2); -assert_eq!(call!(subi_si8(-128, -127)), -1); -assert_eq!(call!(subi_si8(0, 1)), -1); -assert_eq!(call!(subi_si8(1, 2)), -1); -assert_eq!(call!(subi_si8(2, 3)), -1); -assert_eq!(call!(subi_si8(3, 4)), -1); -assert_eq!(call!(subi_si8(126, 127)), -1); -assert_eq!(call!(subi_si8(-128, -128)), 0); -assert_eq!(call!(subi_si8(-127, -127)), 0); -assert_eq!(call!(subi_si8(0, 0)), 0); -assert_eq!(call!(subi_si8(1, 1)), 0); -assert_eq!(call!(subi_si8(2, 2)), 0); -assert_eq!(call!(subi_si8(3, 3)), 0); -assert_eq!(call!(subi_si8(4, 4)), 0); -assert_eq!(call!(subi_si8(16, 16)), 0); -assert_eq!(call!(subi_si8(126, 126)), 0); -assert_eq!(call!(subi_si8(127, 127)), 0); -assert_eq!(call!(subi_si8(-127, -128)), 1); -assert_eq!(call!(subi_si8(1, 0)), 1); -assert_eq!(call!(subi_si8(2, 1)), 1); -assert_eq!(call!(subi_si8(3, 2)), 1); -assert_eq!(call!(subi_si8(4, 3)), 1); -assert_eq!(call!(subi_si8(127, 126)), 1); -assert_eq!(call!(subi_si8(2, 0)), 2); -assert_eq!(call!(subi_si8(3, 1)), 2); -assert_eq!(call!(subi_si8(4, 2)), 2); -assert_eq!(call!(subi_si8(3, 0)), 3); -assert_eq!(call!(subi_si8(4, 1)), 3); -assert_eq!(call!(subi_si8(4, 0)), 4); -assert_eq!(call!(subi_si8(16, 4)), 12); -assert_eq!(call!(subi_si8(16, 3)), 13); -assert_eq!(call!(subi_si8(16, 2)), 14); -assert_eq!(call!(subi_si8(16, 1)), 15); -assert_eq!(call!(subi_si8(16, 0)), 16); -assert_eq!(call!(subi_si8(126, 16)), 110); -assert_eq!(call!(subi_si8(127, 16)), 111); -assert_eq!(call!(subi_si8(126, 4)), 122); -assert_eq!(call!(subi_si8(126, 3)), 123); -assert_eq!(call!(subi_si8(127, 4)), 123); -assert_eq!(call!(subi_si8(126, 2)), 124); -assert_eq!(call!(subi_si8(127, 3)), 124); -assert_eq!(call!(subi_si8(126, 1)), 125); -assert_eq!(call!(subi_si8(127, 2)), 125); -assert_eq!(call!(subi_si8(126, 0)), 126); -assert_eq!(call!(subi_si8(127, 1)), 126); -assert_eq!(call!(subi_si8(0, -127)), 127); -assert_eq!(call!(subi_si8(127, 0)), 127); -assert_eq!(call!(subi_ui16(0, 0)), 0); -assert_eq!(call!(subi_ui16(1, 1)), 0); -assert_eq!(call!(subi_ui16(2, 2)), 0); -assert_eq!(call!(subi_ui16(3, 3)), 0); -assert_eq!(call!(subi_ui16(4, 4)), 0); -assert_eq!(call!(subi_ui16(1717, 1717)), 0); -assert_eq!(call!(subi_ui16(17988, 17988)), 0); -assert_eq!(call!(subi_ui16(65096, 65096)), 0); -assert_eq!(call!(subi_ui16(65534, 65534)), 0); -assert_eq!(call!(subi_ui16(65535, 65535)), 0); -assert_eq!(call!(subi_ui16(1, 0)), 1); -assert_eq!(call!(subi_ui16(2, 1)), 1); -assert_eq!(call!(subi_ui16(3, 2)), 1); -assert_eq!(call!(subi_ui16(4, 3)), 1); -assert_eq!(call!(subi_ui16(65535, 65534)), 1); -assert_eq!(call!(subi_ui16(2, 0)), 2); -assert_eq!(call!(subi_ui16(3, 1)), 2); -assert_eq!(call!(subi_ui16(4, 2)), 2); -assert_eq!(call!(subi_ui16(3, 0)), 3); -assert_eq!(call!(subi_ui16(4, 1)), 3); -assert_eq!(call!(subi_ui16(4, 0)), 4); -assert_eq!(call!(subi_ui16(65534, 65096)), 438); -assert_eq!(call!(subi_ui16(65535, 65096)), 439); -assert_eq!(call!(subi_ui16(1717, 4)), 1713); -assert_eq!(call!(subi_ui16(1717, 3)), 1714); -assert_eq!(call!(subi_ui16(1717, 2)), 1715); -assert_eq!(call!(subi_ui16(1717, 1)), 1716); -assert_eq!(call!(subi_ui16(1717, 0)), 1717); -assert_eq!(call!(subi_ui16(17988, 1717)), 16271); -assert_eq!(call!(subi_ui16(17988, 4)), 17984); -assert_eq!(call!(subi_ui16(17988, 3)), 17985); -assert_eq!(call!(subi_ui16(17988, 2)), 17986); -assert_eq!(call!(subi_ui16(17988, 1)), 17987); -assert_eq!(call!(subi_ui16(17988, 0)), 17988); -assert_eq!(call!(subi_ui16(65096, 17988)), 47108); -assert_eq!(call!(subi_ui16(65534, 17988)), 47546); -assert_eq!(call!(subi_ui16(65535, 17988)), 47547); -assert_eq!(call!(subi_ui16(65096, 1717)), 63379); -assert_eq!(call!(subi_ui16(65534, 1717)), 63817); -assert_eq!(call!(subi_ui16(65535, 1717)), 63818); -assert_eq!(call!(subi_ui16(65096, 4)), 65092); -assert_eq!(call!(subi_ui16(65096, 3)), 65093); -assert_eq!(call!(subi_ui16(65096, 2)), 65094); -assert_eq!(call!(subi_ui16(65096, 1)), 65095); -assert_eq!(call!(subi_ui16(65096, 0)), 65096); -assert_eq!(call!(subi_ui16(65534, 4)), 65530); -assert_eq!(call!(subi_ui16(65534, 3)), 65531); -assert_eq!(call!(subi_ui16(65535, 4)), 65531); -assert_eq!(call!(subi_ui16(65534, 2)), 65532); -assert_eq!(call!(subi_ui16(65535, 3)), 65532); -assert_eq!(call!(subi_ui16(65534, 1)), 65533); -assert_eq!(call!(subi_ui16(65535, 2)), 65533); -assert_eq!(call!(subi_ui16(65534, 0)), 65534); -assert_eq!(call!(subi_ui16(65535, 1)), 65534); -assert_eq!(call!(subi_ui16(65535, 0)), 65535); -assert_eq!(call!(subi_ui32(0, 0)), 0); -assert_eq!(call!(subi_ui32(1, 1)), 0); -assert_eq!(call!(subi_ui32(2, 2)), 0); -assert_eq!(call!(subi_ui32(3, 3)), 0); -assert_eq!(call!(subi_ui32(4, 4)), 0); -assert_eq!(call!(subi_ui32(2119154652, 2119154652)), 0); -assert_eq!(call!(subi_ui32(3002788344, 3002788344)), 0); -assert_eq!(call!(subi_ui32(3482297128, 3482297128)), 0); -assert_eq!(call!(subi_ui32(4294967294, 4294967294)), 0); -assert_eq!(call!(subi_ui32(4294967295, 4294967295)), 0); -assert_eq!(call!(subi_ui32(1, 0)), 1); -assert_eq!(call!(subi_ui32(2, 1)), 1); -assert_eq!(call!(subi_ui32(3, 2)), 1); -assert_eq!(call!(subi_ui32(4, 3)), 1); -assert_eq!(call!(subi_ui32(4294967295, 4294967294)), 1); -assert_eq!(call!(subi_ui32(2, 0)), 2); -assert_eq!(call!(subi_ui32(3, 1)), 2); -assert_eq!(call!(subi_ui32(4, 2)), 2); -assert_eq!(call!(subi_ui32(3, 0)), 3); -assert_eq!(call!(subi_ui32(4, 1)), 3); -assert_eq!(call!(subi_ui32(4, 0)), 4); -assert_eq!(call!(subi_ui32(3482297128, 3002788344)), 479508784); -assert_eq!(call!(subi_ui32(4294967294, 3482297128)), 812670166); -assert_eq!(call!(subi_ui32(4294967295, 3482297128)), 812670167); -assert_eq!(call!(subi_ui32(3002788344, 2119154652)), 883633692); -assert_eq!(call!(subi_ui32(4294967294, 3002788344)), 1292178950); -assert_eq!(call!(subi_ui32(4294967295, 3002788344)), 1292178951); -assert_eq!(call!(subi_ui32(3482297128, 2119154652)), 1363142476); -assert_eq!(call!(subi_ui32(2119154652, 4)), 2119154648); -assert_eq!(call!(subi_ui32(2119154652, 3)), 2119154649); -assert_eq!(call!(subi_ui32(2119154652, 2)), 2119154650); -assert_eq!(call!(subi_ui32(2119154652, 1)), 2119154651); -assert_eq!(call!(subi_ui32(2119154652, 0)), 2119154652); -assert_eq!(call!(subi_ui32(4294967294, 2119154652)), 2175812642); -assert_eq!(call!(subi_ui32(4294967295, 2119154652)), 2175812643); -assert_eq!(call!(subi_ui32(3002788344, 4)), 3002788340); -assert_eq!(call!(subi_ui32(3002788344, 3)), 3002788341); -assert_eq!(call!(subi_ui32(3002788344, 2)), 3002788342); -assert_eq!(call!(subi_ui32(3002788344, 1)), 3002788343); -assert_eq!(call!(subi_ui32(3002788344, 0)), 3002788344); -assert_eq!(call!(subi_ui32(3482297128, 4)), 3482297124); -assert_eq!(call!(subi_ui32(3482297128, 3)), 3482297125); -assert_eq!(call!(subi_ui32(3482297128, 2)), 3482297126); -assert_eq!(call!(subi_ui32(3482297128, 1)), 3482297127); -assert_eq!(call!(subi_ui32(3482297128, 0)), 3482297128); -assert_eq!(call!(subi_ui32(4294967294, 4)), 4294967290); -assert_eq!(call!(subi_ui32(4294967294, 3)), 4294967291); -assert_eq!(call!(subi_ui32(4294967295, 4)), 4294967291); -assert_eq!(call!(subi_ui32(4294967294, 2)), 4294967292); -assert_eq!(call!(subi_ui32(4294967295, 3)), 4294967292); -assert_eq!(call!(subi_ui32(4294967294, 1)), 4294967293); -assert_eq!(call!(subi_ui32(4294967295, 2)), 4294967293); -assert_eq!(call!(subi_ui32(4294967294, 0)), 4294967294); -assert_eq!(call!(subi_ui32(4294967295, 1)), 4294967294); -assert_eq!(call!(subi_ui32(4294967295, 0)), 4294967295); -assert_eq!(call!(subi_ui64(0, 0)), 0); -assert_eq!(call!(subi_ui64(1, 1)), 0); -assert_eq!(call!(subi_ui64(2, 2)), 0); -assert_eq!(call!(subi_ui64(3, 3)), 0); -assert_eq!(call!(subi_ui64(4, 4)), 0); -assert_eq!(call!(subi_ui64(191084152064409600, 191084152064409600)), 0); -assert_eq!(call!(subi_ui64(11015955194427482112, 11015955194427482112)), 0); -assert_eq!(call!(subi_ui64(16990600415051759616, 16990600415051759616)), 0); -assert_eq!(call!(subi_ui64(18446744073709551614, 18446744073709551614)), 0); -assert_eq!(call!(subi_ui64(18446744073709551615, 18446744073709551615)), 0); -assert_eq!(call!(subi_ui64(1, 0)), 1); -assert_eq!(call!(subi_ui64(2, 1)), 1); -assert_eq!(call!(subi_ui64(3, 2)), 1); -assert_eq!(call!(subi_ui64(4, 3)), 1); -assert_eq!(call!(subi_ui64(18446744073709551615, 18446744073709551614)), 1); -assert_eq!(call!(subi_ui64(2, 0)), 2); -assert_eq!(call!(subi_ui64(3, 1)), 2); -assert_eq!(call!(subi_ui64(4, 2)), 2); -assert_eq!(call!(subi_ui64(3, 0)), 3); -assert_eq!(call!(subi_ui64(4, 1)), 3); -assert_eq!(call!(subi_ui64(4, 0)), 4); -assert_eq!(call!(subi_ui64(191084152064409600, 4)), 191084152064409596); -assert_eq!(call!(subi_ui64(191084152064409600, 3)), 191084152064409597); -assert_eq!(call!(subi_ui64(191084152064409600, 2)), 191084152064409598); -assert_eq!(call!(subi_ui64(191084152064409600, 1)), 191084152064409599); -assert_eq!(call!(subi_ui64(191084152064409600, 0)), 191084152064409600); -assert_eq!(call!(subi_ui64(18446744073709551614, 16990600415051759616)), 1456143658657791998); -assert_eq!(call!(subi_ui64(18446744073709551615, 16990600415051759616)), 1456143658657791999); -assert_eq!(call!(subi_ui64(16990600415051759616, 11015955194427482112)), 5974645220624277504); -assert_eq!(call!(subi_ui64(18446744073709551614, 11015955194427482112)), 7430788879282069502); -assert_eq!(call!(subi_ui64(18446744073709551615, 11015955194427482112)), 7430788879282069503); -assert_eq!(call!(subi_ui64(11015955194427482112, 191084152064409600)), 10824871042363072512); -assert_eq!(call!(subi_ui64(11015955194427482112, 4)), 11015955194427482108); -assert_eq!(call!(subi_ui64(11015955194427482112, 3)), 11015955194427482109); -assert_eq!(call!(subi_ui64(11015955194427482112, 2)), 11015955194427482110); -assert_eq!(call!(subi_ui64(11015955194427482112, 1)), 11015955194427482111); -assert_eq!(call!(subi_ui64(11015955194427482112, 0)), 11015955194427482112); -assert_eq!(call!(subi_ui64(16990600415051759616, 191084152064409600)), 16799516262987350016); -assert_eq!(call!(subi_ui64(16990600415051759616, 4)), 16990600415051759612); -assert_eq!(call!(subi_ui64(16990600415051759616, 3)), 16990600415051759613); -assert_eq!(call!(subi_ui64(16990600415051759616, 2)), 16990600415051759614); -assert_eq!(call!(subi_ui64(16990600415051759616, 1)), 16990600415051759615); -assert_eq!(call!(subi_ui64(16990600415051759616, 0)), 16990600415051759616); -assert_eq!(call!(subi_ui64(18446744073709551614, 191084152064409600)), 18255659921645142014); -assert_eq!(call!(subi_ui64(18446744073709551615, 191084152064409600)), 18255659921645142015); -assert_eq!(call!(subi_ui64(18446744073709551614, 4)), 18446744073709551610); -assert_eq!(call!(subi_ui64(18446744073709551614, 3)), 18446744073709551611); -assert_eq!(call!(subi_ui64(18446744073709551615, 4)), 18446744073709551611); -assert_eq!(call!(subi_ui64(18446744073709551614, 2)), 18446744073709551612); -assert_eq!(call!(subi_ui64(18446744073709551615, 3)), 18446744073709551612); -assert_eq!(call!(subi_ui64(18446744073709551614, 1)), 18446744073709551613); -assert_eq!(call!(subi_ui64(18446744073709551615, 2)), 18446744073709551613); -assert_eq!(call!(subi_ui64(18446744073709551614, 0)), 18446744073709551614); -assert_eq!(call!(subi_ui64(18446744073709551615, 1)), 18446744073709551614); -assert_eq!(call!(subi_ui64(18446744073709551615, 0)), 18446744073709551615); -assert_eq!(call!(subi_ui8(0, 0)), 0); -assert_eq!(call!(subi_ui8(1, 1)), 0); -assert_eq!(call!(subi_ui8(2, 2)), 0); -assert_eq!(call!(subi_ui8(3, 3)), 0); -assert_eq!(call!(subi_ui8(4, 4)), 0); -assert_eq!(call!(subi_ui8(72, 72)), 0); -assert_eq!(call!(subi_ui8(100, 100)), 0); -assert_eq!(call!(subi_ui8(162, 162)), 0); -assert_eq!(call!(subi_ui8(254, 254)), 0); -assert_eq!(call!(subi_ui8(255, 255)), 0); -assert_eq!(call!(subi_ui8(1, 0)), 1); -assert_eq!(call!(subi_ui8(2, 1)), 1); -assert_eq!(call!(subi_ui8(3, 2)), 1); -assert_eq!(call!(subi_ui8(4, 3)), 1); -assert_eq!(call!(subi_ui8(255, 254)), 1); -assert_eq!(call!(subi_ui8(2, 0)), 2); -assert_eq!(call!(subi_ui8(3, 1)), 2); -assert_eq!(call!(subi_ui8(4, 2)), 2); -assert_eq!(call!(subi_ui8(3, 0)), 3); -assert_eq!(call!(subi_ui8(4, 1)), 3); -assert_eq!(call!(subi_ui8(4, 0)), 4); -assert_eq!(call!(subi_ui8(100, 72)), 28); -assert_eq!(call!(subi_ui8(162, 100)), 62); -assert_eq!(call!(subi_ui8(72, 4)), 68); -assert_eq!(call!(subi_ui8(72, 3)), 69); -assert_eq!(call!(subi_ui8(72, 2)), 70); -assert_eq!(call!(subi_ui8(72, 1)), 71); -assert_eq!(call!(subi_ui8(72, 0)), 72); -assert_eq!(call!(subi_ui8(162, 72)), 90); -assert_eq!(call!(subi_ui8(254, 162)), 92); -assert_eq!(call!(subi_ui8(255, 162)), 93); -assert_eq!(call!(subi_ui8(100, 4)), 96); -assert_eq!(call!(subi_ui8(100, 3)), 97); -assert_eq!(call!(subi_ui8(100, 2)), 98); -assert_eq!(call!(subi_ui8(100, 1)), 99); -assert_eq!(call!(subi_ui8(100, 0)), 100); -assert_eq!(call!(subi_ui8(254, 100)), 154); -assert_eq!(call!(subi_ui8(255, 100)), 155); -assert_eq!(call!(subi_ui8(162, 4)), 158); -assert_eq!(call!(subi_ui8(162, 3)), 159); -assert_eq!(call!(subi_ui8(162, 2)), 160); -assert_eq!(call!(subi_ui8(162, 1)), 161); -assert_eq!(call!(subi_ui8(162, 0)), 162); -assert_eq!(call!(subi_ui8(254, 72)), 182); -assert_eq!(call!(subi_ui8(255, 72)), 183); -assert_eq!(call!(subi_ui8(254, 4)), 250); -assert_eq!(call!(subi_ui8(254, 3)), 251); -assert_eq!(call!(subi_ui8(255, 4)), 251); -assert_eq!(call!(subi_ui8(254, 2)), 252); -assert_eq!(call!(subi_ui8(255, 3)), 252); -assert_eq!(call!(subi_ui8(254, 1)), 253); -assert_eq!(call!(subi_ui8(255, 2)), 253); -assert_eq!(call!(subi_ui8(254, 0)), 254); -assert_eq!(call!(subi_ui8(255, 1)), 254); -assert_eq!(call!(subi_ui8(255, 0)), 255); -} + use crate::arctorustintarith::*; + #[test] + fn it_works() { + assert_eq!(addi_si16(-32768, 0), -32768); + assert_eq!(addi_si16(0, -32768), -32768); + assert_eq!(addi_si16(-32768, 1), -32767); + assert_eq!(addi_si16(-32767, 0), -32767); + assert_eq!(addi_si16(0, -32767), -32767); + assert_eq!(addi_si16(1, -32768), -32767); + assert_eq!(addi_si16(-32768, 2), -32766); + assert_eq!(addi_si16(-32767, 1), -32766); + assert_eq!(addi_si16(1, -32767), -32766); + assert_eq!(addi_si16(2, -32768), -32766); + assert_eq!(addi_si16(-32768, 3), -32765); + assert_eq!(addi_si16(-32767, 2), -32765); + assert_eq!(addi_si16(2, -32767), -32765); + assert_eq!(addi_si16(3, -32768), -32765); + assert_eq!(addi_si16(-32768, 4), -32764); + assert_eq!(addi_si16(-32767, 3), -32764); + assert_eq!(addi_si16(3, -32767), -32764); + assert_eq!(addi_si16(4, -32768), -32764); + assert_eq!(addi_si16(-32767, 4), -32763); + assert_eq!(addi_si16(4, -32767), -32763); + assert_eq!(addi_si16(-32547, 0), -32547); + assert_eq!(addi_si16(0, -32547), -32547); + assert_eq!(addi_si16(-32547, 1), -32546); + assert_eq!(addi_si16(1, -32547), -32546); + assert_eq!(addi_si16(-32547, 2), -32545); + assert_eq!(addi_si16(2, -32547), -32545); + assert_eq!(addi_si16(-32547, 3), -32544); + assert_eq!(addi_si16(3, -32547), -32544); + assert_eq!(addi_si16(-32547, 4), -32543); + assert_eq!(addi_si16(4, -32547), -32543); + assert_eq!(addi_si16(-32768, 10486), -22282); + assert_eq!(addi_si16(10486, -32768), -22282); + assert_eq!(addi_si16(-32767, 10486), -22281); + assert_eq!(addi_si16(10486, -32767), -22281); + assert_eq!(addi_si16(-32547, 10486), -22061); + assert_eq!(addi_si16(10486, -32547), -22061); + assert_eq!(addi_si16(-32768, 16514), -16254); + assert_eq!(addi_si16(16514, -32768), -16254); + assert_eq!(addi_si16(-32767, 16514), -16253); + assert_eq!(addi_si16(16514, -32767), -16253); + assert_eq!(addi_si16(-32547, 16514), -16033); + assert_eq!(addi_si16(16514, -32547), -16033); + assert_eq!(addi_si16(-32768, 32766), -2); + assert_eq!(addi_si16(32766, -32768), -2); + assert_eq!(addi_si16(-32768, 32767), -1); + assert_eq!(addi_si16(-32767, 32766), -1); + assert_eq!(addi_si16(32766, -32767), -1); + assert_eq!(addi_si16(32767, -32768), -1); + assert_eq!(addi_si16(-32767, 32767), 0); + assert_eq!(addi_si16(0, 0), 0); + assert_eq!(addi_si16(32767, -32767), 0); + assert_eq!(addi_si16(0, 1), 1); + assert_eq!(addi_si16(1, 0), 1); + assert_eq!(addi_si16(0, 2), 2); + assert_eq!(addi_si16(1, 1), 2); + assert_eq!(addi_si16(2, 0), 2); + assert_eq!(addi_si16(0, 3), 3); + assert_eq!(addi_si16(1, 2), 3); + assert_eq!(addi_si16(2, 1), 3); + assert_eq!(addi_si16(3, 0), 3); + assert_eq!(addi_si16(0, 4), 4); + assert_eq!(addi_si16(1, 3), 4); + assert_eq!(addi_si16(2, 2), 4); + assert_eq!(addi_si16(3, 1), 4); + assert_eq!(addi_si16(4, 0), 4); + assert_eq!(addi_si16(1, 4), 5); + assert_eq!(addi_si16(2, 3), 5); + assert_eq!(addi_si16(3, 2), 5); + assert_eq!(addi_si16(4, 1), 5); + assert_eq!(addi_si16(2, 4), 6); + assert_eq!(addi_si16(3, 3), 6); + assert_eq!(addi_si16(4, 2), 6); + assert_eq!(addi_si16(3, 4), 7); + assert_eq!(addi_si16(4, 3), 7); + assert_eq!(addi_si16(4, 4), 8); + assert_eq!(addi_si16(-32547, 32766), 219); + assert_eq!(addi_si16(32766, -32547), 219); + assert_eq!(addi_si16(-32547, 32767), 220); + assert_eq!(addi_si16(32767, -32547), 220); + assert_eq!(addi_si16(0, 10486), 10486); + assert_eq!(addi_si16(10486, 0), 10486); + assert_eq!(addi_si16(1, 10486), 10487); + assert_eq!(addi_si16(10486, 1), 10487); + assert_eq!(addi_si16(2, 10486), 10488); + assert_eq!(addi_si16(10486, 2), 10488); + assert_eq!(addi_si16(3, 10486), 10489); + assert_eq!(addi_si16(10486, 3), 10489); + assert_eq!(addi_si16(4, 10486), 10490); + assert_eq!(addi_si16(10486, 4), 10490); + assert_eq!(addi_si16(0, 16514), 16514); + assert_eq!(addi_si16(16514, 0), 16514); + assert_eq!(addi_si16(1, 16514), 16515); + assert_eq!(addi_si16(16514, 1), 16515); + assert_eq!(addi_si16(2, 16514), 16516); + assert_eq!(addi_si16(16514, 2), 16516); + assert_eq!(addi_si16(3, 16514), 16517); + assert_eq!(addi_si16(16514, 3), 16517); + assert_eq!(addi_si16(4, 16514), 16518); + assert_eq!(addi_si16(16514, 4), 16518); + assert_eq!(addi_si16(10486, 10486), 20972); + assert_eq!(addi_si16(10486, 16514), 27000); + assert_eq!(addi_si16(16514, 10486), 27000); + assert_eq!(addi_si16(0, 32766), 32766); + assert_eq!(addi_si16(32766, 0), 32766); + assert_eq!(addi_si16(0, 32767), 32767); + assert_eq!(addi_si16(1, 32766), 32767); + assert_eq!(addi_si16(32766, 1), 32767); + assert_eq!(addi_si16(32767, 0), 32767); + assert_eq!(addi_si32(-2147483648, 0), -2147483648); + assert_eq!(addi_si32(0, -2147483648), -2147483648); + assert_eq!(addi_si32(-2147483648, 1), -2147483647); + assert_eq!(addi_si32(-2147483647, 0), -2147483647); + assert_eq!(addi_si32(0, -2147483647), -2147483647); + assert_eq!(addi_si32(1, -2147483648), -2147483647); + assert_eq!(addi_si32(-2147483648, 2), -2147483646); + assert_eq!(addi_si32(-2147483647, 1), -2147483646); + assert_eq!(addi_si32(1, -2147483647), -2147483646); + assert_eq!(addi_si32(2, -2147483648), -2147483646); + assert_eq!(addi_si32(-2147483648, 3), -2147483645); + assert_eq!(addi_si32(-2147483647, 2), -2147483645); + assert_eq!(addi_si32(2, -2147483647), -2147483645); + assert_eq!(addi_si32(3, -2147483648), -2147483645); + assert_eq!(addi_si32(-2147483648, 4), -2147483644); + assert_eq!(addi_si32(-2147483647, 3), -2147483644); + assert_eq!(addi_si32(3, -2147483647), -2147483644); + assert_eq!(addi_si32(4, -2147483648), -2147483644); + assert_eq!(addi_si32(-2147483647, 4), -2147483643); + assert_eq!(addi_si32(4, -2147483647), -2147483643); + assert_eq!(addi_si32(-1035405763, -1035405763), -2070811526); + assert_eq!(addi_si32(-1713183800, 0), -1713183800); + assert_eq!(addi_si32(0, -1713183800), -1713183800); + assert_eq!(addi_si32(-1713183800, 1), -1713183799); + assert_eq!(addi_si32(1, -1713183800), -1713183799); + assert_eq!(addi_si32(-1713183800, 2), -1713183798); + assert_eq!(addi_si32(2, -1713183800), -1713183798); + assert_eq!(addi_si32(-1713183800, 3), -1713183797); + assert_eq!(addi_si32(3, -1713183800), -1713183797); + assert_eq!(addi_si32(-1713183800, 4), -1713183796); + assert_eq!(addi_si32(4, -1713183800), -1713183796); + assert_eq!(addi_si32(-1252582164, 0), -1252582164); + assert_eq!(addi_si32(0, -1252582164), -1252582164); + assert_eq!(addi_si32(-1252582164, 1), -1252582163); + assert_eq!(addi_si32(1, -1252582164), -1252582163); + assert_eq!(addi_si32(-1252582164, 2), -1252582162); + assert_eq!(addi_si32(2, -1252582164), -1252582162); + assert_eq!(addi_si32(-1252582164, 3), -1252582161); + assert_eq!(addi_si32(3, -1252582164), -1252582161); + assert_eq!(addi_si32(-1252582164, 4), -1252582160); + assert_eq!(addi_si32(4, -1252582164), -1252582160); + assert_eq!(addi_si32(-1035405763, 0), -1035405763); + assert_eq!(addi_si32(0, -1035405763), -1035405763); + assert_eq!(addi_si32(-1035405763, 1), -1035405762); + assert_eq!(addi_si32(1, -1035405763), -1035405762); + assert_eq!(addi_si32(-1035405763, 2), -1035405761); + assert_eq!(addi_si32(2, -1035405763), -1035405761); + assert_eq!(addi_si32(-1035405763, 3), -1035405760); + assert_eq!(addi_si32(3, -1035405763), -1035405760); + assert_eq!(addi_si32(-1035405763, 4), -1035405759); + assert_eq!(addi_si32(4, -1035405763), -1035405759); + assert_eq!(addi_si32(-2147483648, 2147483646), -2); + assert_eq!(addi_si32(2147483646, -2147483648), -2); + assert_eq!(addi_si32(-2147483648, 2147483647), -1); + assert_eq!(addi_si32(-2147483647, 2147483646), -1); + assert_eq!(addi_si32(2147483646, -2147483647), -1); + assert_eq!(addi_si32(2147483647, -2147483648), -1); + assert_eq!(addi_si32(-2147483647, 2147483647), 0); + assert_eq!(addi_si32(0, 0), 0); + assert_eq!(addi_si32(2147483647, -2147483647), 0); + assert_eq!(addi_si32(0, 1), 1); + assert_eq!(addi_si32(1, 0), 1); + assert_eq!(addi_si32(0, 2), 2); + assert_eq!(addi_si32(1, 1), 2); + assert_eq!(addi_si32(2, 0), 2); + assert_eq!(addi_si32(0, 3), 3); + assert_eq!(addi_si32(1, 2), 3); + assert_eq!(addi_si32(2, 1), 3); + assert_eq!(addi_si32(3, 0), 3); + assert_eq!(addi_si32(0, 4), 4); + assert_eq!(addi_si32(1, 3), 4); + assert_eq!(addi_si32(2, 2), 4); + assert_eq!(addi_si32(3, 1), 4); + assert_eq!(addi_si32(4, 0), 4); + assert_eq!(addi_si32(1, 4), 5); + assert_eq!(addi_si32(2, 3), 5); + assert_eq!(addi_si32(3, 2), 5); + assert_eq!(addi_si32(4, 1), 5); + assert_eq!(addi_si32(2, 4), 6); + assert_eq!(addi_si32(3, 3), 6); + assert_eq!(addi_si32(4, 2), 6); + assert_eq!(addi_si32(3, 4), 7); + assert_eq!(addi_si32(4, 3), 7); + assert_eq!(addi_si32(4, 4), 8); + assert_eq!(addi_si32(-1713183800, 2147483646), 434299846); + assert_eq!(addi_si32(2147483646, -1713183800), 434299846); + assert_eq!(addi_si32(-1713183800, 2147483647), 434299847); + assert_eq!(addi_si32(2147483647, -1713183800), 434299847); + assert_eq!(addi_si32(-1252582164, 2147483646), 894901482); + assert_eq!(addi_si32(2147483646, -1252582164), 894901482); + assert_eq!(addi_si32(-1252582164, 2147483647), 894901483); + assert_eq!(addi_si32(2147483647, -1252582164), 894901483); + assert_eq!(addi_si32(-1035405763, 2147483646), 1112077883); + assert_eq!(addi_si32(2147483646, -1035405763), 1112077883); + assert_eq!(addi_si32(-1035405763, 2147483647), 1112077884); + assert_eq!(addi_si32(2147483647, -1035405763), 1112077884); + assert_eq!(addi_si32(0, 2147483646), 2147483646); + assert_eq!(addi_si32(2147483646, 0), 2147483646); + assert_eq!(addi_si32(0, 2147483647), 2147483647); + assert_eq!(addi_si32(1, 2147483646), 2147483647); + assert_eq!(addi_si32(2147483646, 1), 2147483647); + assert_eq!(addi_si32(2147483647, 0), 2147483647); + assert_eq!(addi_si64(-9223372036854775808, 0), -9223372036854775808); + assert_eq!(addi_si64(0, -9223372036854775808), -9223372036854775808); + assert_eq!(addi_si64(-9223372036854775808, 1), -9223372036854775807); + assert_eq!(addi_si64(-9223372036854775807, 0), -9223372036854775807); + assert_eq!(addi_si64(0, -9223372036854775807), -9223372036854775807); + assert_eq!(addi_si64(1, -9223372036854775808), -9223372036854775807); + assert_eq!(addi_si64(-9223372036854775808, 2), -9223372036854775806); + assert_eq!(addi_si64(-9223372036854775807, 1), -9223372036854775806); + assert_eq!(addi_si64(1, -9223372036854775807), -9223372036854775806); + assert_eq!(addi_si64(2, -9223372036854775808), -9223372036854775806); + assert_eq!(addi_si64(-9223372036854775808, 3), -9223372036854775805); + assert_eq!(addi_si64(-9223372036854775807, 2), -9223372036854775805); + assert_eq!(addi_si64(2, -9223372036854775807), -9223372036854775805); + assert_eq!(addi_si64(3, -9223372036854775808), -9223372036854775805); + assert_eq!(addi_si64(-9223372036854775808, 4), -9223372036854775804); + assert_eq!(addi_si64(-9223372036854775807, 3), -9223372036854775804); + assert_eq!(addi_si64(3, -9223372036854775807), -9223372036854775804); + assert_eq!(addi_si64(4, -9223372036854775808), -9223372036854775804); + assert_eq!(addi_si64(-9223372036854775807, 4), -9223372036854775803); + assert_eq!(addi_si64(4, -9223372036854775807), -9223372036854775803); + assert_eq!( + addi_si64(-9223372036854775808, 5577148965131116544), + -3646223071723659264 + ); + assert_eq!( + addi_si64(5577148965131116544, -9223372036854775808), + -3646223071723659264 + ); + assert_eq!( + addi_si64(-9223372036854775807, 5577148965131116544), + -3646223071723659263 + ); + assert_eq!( + addi_si64(5577148965131116544, -9223372036854775807), + -3646223071723659263 + ); + assert_eq!( + addi_si64(-1741927215160008704, -1741927215160008704), + -3483854430320017408 + ); + assert_eq!( + addi_si64(-1741927215160008704, -1328271339354574848), + -3070198554514583552 + ); + assert_eq!( + addi_si64(-1328271339354574848, -1741927215160008704), + -3070198554514583552 + ); + assert_eq!( + addi_si64(-1328271339354574848, -1328271339354574848), + -2656542678709149696 + ); + assert_eq!(addi_si64(-1741927215160008704, 0), -1741927215160008704); + assert_eq!(addi_si64(0, -1741927215160008704), -1741927215160008704); + assert_eq!(addi_si64(-1741927215160008704, 1), -1741927215160008703); + assert_eq!(addi_si64(1, -1741927215160008704), -1741927215160008703); + assert_eq!(addi_si64(-1741927215160008704, 2), -1741927215160008702); + assert_eq!(addi_si64(2, -1741927215160008704), -1741927215160008702); + assert_eq!(addi_si64(-1741927215160008704, 3), -1741927215160008701); + assert_eq!(addi_si64(3, -1741927215160008704), -1741927215160008701); + assert_eq!(addi_si64(-1741927215160008704, 4), -1741927215160008700); + assert_eq!(addi_si64(4, -1741927215160008704), -1741927215160008700); + assert_eq!(addi_si64(-1328271339354574848, 0), -1328271339354574848); + assert_eq!(addi_si64(0, -1328271339354574848), -1328271339354574848); + assert_eq!(addi_si64(-1328271339354574848, 1), -1328271339354574847); + assert_eq!(addi_si64(1, -1328271339354574848), -1328271339354574847); + assert_eq!(addi_si64(-1328271339354574848, 2), -1328271339354574846); + assert_eq!(addi_si64(2, -1328271339354574848), -1328271339354574846); + assert_eq!(addi_si64(-1328271339354574848, 3), -1328271339354574845); + assert_eq!(addi_si64(3, -1328271339354574848), -1328271339354574845); + assert_eq!(addi_si64(-1328271339354574848, 4), -1328271339354574844); + assert_eq!(addi_si64(4, -1328271339354574848), -1328271339354574844); + assert_eq!(addi_si64(-9223372036854775808, 9223372036854775806), -2); + assert_eq!(addi_si64(9223372036854775806, -9223372036854775808), -2); + assert_eq!(addi_si64(-9223372036854775808, 9223372036854775807), -1); + assert_eq!(addi_si64(-9223372036854775807, 9223372036854775806), -1); + assert_eq!(addi_si64(9223372036854775806, -9223372036854775807), -1); + assert_eq!(addi_si64(9223372036854775807, -9223372036854775808), -1); + assert_eq!(addi_si64(-9223372036854775807, 9223372036854775807), 0); + assert_eq!(addi_si64(0, 0), 0); + assert_eq!(addi_si64(9223372036854775807, -9223372036854775807), 0); + assert_eq!(addi_si64(0, 1), 1); + assert_eq!(addi_si64(1, 0), 1); + assert_eq!(addi_si64(0, 2), 2); + assert_eq!(addi_si64(1, 1), 2); + assert_eq!(addi_si64(2, 0), 2); + assert_eq!(addi_si64(0, 3), 3); + assert_eq!(addi_si64(1, 2), 3); + assert_eq!(addi_si64(2, 1), 3); + assert_eq!(addi_si64(3, 0), 3); + assert_eq!(addi_si64(0, 4), 4); + assert_eq!(addi_si64(1, 3), 4); + assert_eq!(addi_si64(2, 2), 4); + assert_eq!(addi_si64(3, 1), 4); + assert_eq!(addi_si64(4, 0), 4); + assert_eq!(addi_si64(1, 4), 5); + assert_eq!(addi_si64(2, 3), 5); + assert_eq!(addi_si64(3, 2), 5); + assert_eq!(addi_si64(4, 1), 5); + assert_eq!(addi_si64(2, 4), 6); + assert_eq!(addi_si64(3, 3), 6); + assert_eq!(addi_si64(4, 2), 6); + assert_eq!(addi_si64(3, 4), 7); + assert_eq!(addi_si64(4, 3), 7); + assert_eq!(addi_si64(4, 4), 8); + assert_eq!( + addi_si64(-1741927215160008704, 5577148965131116544), + 3835221749971107840 + ); + assert_eq!( + addi_si64(5577148965131116544, -1741927215160008704), + 3835221749971107840 + ); + assert_eq!( + addi_si64(-1328271339354574848, 5577148965131116544), + 4248877625776541696 + ); + assert_eq!( + addi_si64(5577148965131116544, -1328271339354574848), + 4248877625776541696 + ); + assert_eq!(addi_si64(0, 5577148965131116544), 5577148965131116544); + assert_eq!(addi_si64(5577148965131116544, 0), 5577148965131116544); + assert_eq!(addi_si64(1, 5577148965131116544), 5577148965131116545); + assert_eq!(addi_si64(5577148965131116544, 1), 5577148965131116545); + assert_eq!(addi_si64(2, 5577148965131116544), 5577148965131116546); + assert_eq!(addi_si64(5577148965131116544, 2), 5577148965131116546); + assert_eq!(addi_si64(3, 5577148965131116544), 5577148965131116547); + assert_eq!(addi_si64(5577148965131116544, 3), 5577148965131116547); + assert_eq!(addi_si64(4, 5577148965131116544), 5577148965131116548); + assert_eq!(addi_si64(5577148965131116544, 4), 5577148965131116548); + assert_eq!( + addi_si64(-1741927215160008704, 9223372036854775806), + 7481444821694767102 + ); + assert_eq!( + addi_si64(9223372036854775806, -1741927215160008704), + 7481444821694767102 + ); + assert_eq!( + addi_si64(-1741927215160008704, 9223372036854775807), + 7481444821694767103 + ); + assert_eq!( + addi_si64(9223372036854775807, -1741927215160008704), + 7481444821694767103 + ); + assert_eq!( + addi_si64(-1328271339354574848, 9223372036854775806), + 7895100697500200958 + ); + assert_eq!( + addi_si64(9223372036854775806, -1328271339354574848), + 7895100697500200958 + ); + assert_eq!( + addi_si64(-1328271339354574848, 9223372036854775807), + 7895100697500200959 + ); + assert_eq!( + addi_si64(9223372036854775807, -1328271339354574848), + 7895100697500200959 + ); + assert_eq!(addi_si64(0, 9223372036854775806), 9223372036854775806); + assert_eq!(addi_si64(9223372036854775806, 0), 9223372036854775806); + assert_eq!(addi_si64(0, 9223372036854775807), 9223372036854775807); + assert_eq!(addi_si64(1, 9223372036854775806), 9223372036854775807); + assert_eq!(addi_si64(9223372036854775806, 1), 9223372036854775807); + assert_eq!(addi_si64(9223372036854775807, 0), 9223372036854775807); + assert_eq!(addi_si8(-128, 0), -128); + assert_eq!(addi_si8(0, -128), -128); + assert_eq!(addi_si8(-128, 1), -127); + assert_eq!(addi_si8(-127, 0), -127); + assert_eq!(addi_si8(0, -127), -127); + assert_eq!(addi_si8(1, -128), -127); + assert_eq!(addi_si8(-128, 2), -126); + assert_eq!(addi_si8(-127, 1), -126); + assert_eq!(addi_si8(1, -127), -126); + assert_eq!(addi_si8(2, -128), -126); + assert_eq!(addi_si8(-128, 3), -125); + assert_eq!(addi_si8(-127, 2), -125); + assert_eq!(addi_si8(2, -127), -125); + assert_eq!(addi_si8(3, -128), -125); + assert_eq!(addi_si8(-128, 4), -124); + assert_eq!(addi_si8(-127, 3), -124); + assert_eq!(addi_si8(3, -127), -124); + assert_eq!(addi_si8(4, -128), -124); + assert_eq!(addi_si8(-127, 4), -123); + assert_eq!(addi_si8(4, -127), -123); + assert_eq!(addi_si8(-128, 16), -112); + assert_eq!(addi_si8(16, -128), -112); + assert_eq!(addi_si8(-127, 16), -111); + assert_eq!(addi_si8(16, -127), -111); + assert_eq!(addi_si8(-128, 126), -2); + assert_eq!(addi_si8(126, -128), -2); + assert_eq!(addi_si8(-128, 127), -1); + assert_eq!(addi_si8(-127, 126), -1); + assert_eq!(addi_si8(126, -127), -1); + assert_eq!(addi_si8(127, -128), -1); + assert_eq!(addi_si8(-127, 127), 0); + assert_eq!(addi_si8(0, 0), 0); + assert_eq!(addi_si8(127, -127), 0); + assert_eq!(addi_si8(0, 1), 1); + assert_eq!(addi_si8(1, 0), 1); + assert_eq!(addi_si8(0, 2), 2); + assert_eq!(addi_si8(1, 1), 2); + assert_eq!(addi_si8(2, 0), 2); + assert_eq!(addi_si8(0, 3), 3); + assert_eq!(addi_si8(1, 2), 3); + assert_eq!(addi_si8(2, 1), 3); + assert_eq!(addi_si8(3, 0), 3); + assert_eq!(addi_si8(0, 4), 4); + assert_eq!(addi_si8(1, 3), 4); + assert_eq!(addi_si8(2, 2), 4); + assert_eq!(addi_si8(3, 1), 4); + assert_eq!(addi_si8(4, 0), 4); + assert_eq!(addi_si8(1, 4), 5); + assert_eq!(addi_si8(2, 3), 5); + assert_eq!(addi_si8(3, 2), 5); + assert_eq!(addi_si8(4, 1), 5); + assert_eq!(addi_si8(2, 4), 6); + assert_eq!(addi_si8(3, 3), 6); + assert_eq!(addi_si8(4, 2), 6); + assert_eq!(addi_si8(3, 4), 7); + assert_eq!(addi_si8(4, 3), 7); + assert_eq!(addi_si8(4, 4), 8); + assert_eq!(addi_si8(0, 16), 16); + assert_eq!(addi_si8(16, 0), 16); + assert_eq!(addi_si8(1, 16), 17); + assert_eq!(addi_si8(16, 1), 17); + assert_eq!(addi_si8(2, 16), 18); + assert_eq!(addi_si8(16, 2), 18); + assert_eq!(addi_si8(3, 16), 19); + assert_eq!(addi_si8(16, 3), 19); + assert_eq!(addi_si8(4, 16), 20); + assert_eq!(addi_si8(16, 4), 20); + assert_eq!(addi_si8(16, 16), 32); + assert_eq!(addi_si8(0, 126), 126); + assert_eq!(addi_si8(126, 0), 126); + assert_eq!(addi_si8(0, 127), 127); + assert_eq!(addi_si8(1, 126), 127); + assert_eq!(addi_si8(126, 1), 127); + assert_eq!(addi_si8(127, 0), 127); + assert_eq!(addi_ui16(0, 0), 0); + assert_eq!(addi_ui16(0, 1), 1); + assert_eq!(addi_ui16(1, 0), 1); + assert_eq!(addi_ui16(0, 2), 2); + assert_eq!(addi_ui16(1, 1), 2); + assert_eq!(addi_ui16(2, 0), 2); + assert_eq!(addi_ui16(0, 3), 3); + assert_eq!(addi_ui16(1, 2), 3); + assert_eq!(addi_ui16(2, 1), 3); + assert_eq!(addi_ui16(3, 0), 3); + assert_eq!(addi_ui16(0, 4), 4); + assert_eq!(addi_ui16(1, 3), 4); + assert_eq!(addi_ui16(2, 2), 4); + assert_eq!(addi_ui16(3, 1), 4); + assert_eq!(addi_ui16(4, 0), 4); + assert_eq!(addi_ui16(1, 4), 5); + assert_eq!(addi_ui16(2, 3), 5); + assert_eq!(addi_ui16(3, 2), 5); + assert_eq!(addi_ui16(4, 1), 5); + assert_eq!(addi_ui16(2, 4), 6); + assert_eq!(addi_ui16(3, 3), 6); + assert_eq!(addi_ui16(4, 2), 6); + assert_eq!(addi_ui16(3, 4), 7); + assert_eq!(addi_ui16(4, 3), 7); + assert_eq!(addi_ui16(4, 4), 8); + assert_eq!(addi_ui16(0, 1717), 1717); + assert_eq!(addi_ui16(1717, 0), 1717); + assert_eq!(addi_ui16(1, 1717), 1718); + assert_eq!(addi_ui16(1717, 1), 1718); + assert_eq!(addi_ui16(2, 1717), 1719); + assert_eq!(addi_ui16(1717, 2), 1719); + assert_eq!(addi_ui16(3, 1717), 1720); + assert_eq!(addi_ui16(1717, 3), 1720); + assert_eq!(addi_ui16(4, 1717), 1721); + assert_eq!(addi_ui16(1717, 4), 1721); + assert_eq!(addi_ui16(1717, 1717), 3434); + assert_eq!(addi_ui16(0, 17988), 17988); + assert_eq!(addi_ui16(17988, 0), 17988); + assert_eq!(addi_ui16(1, 17988), 17989); + assert_eq!(addi_ui16(17988, 1), 17989); + assert_eq!(addi_ui16(2, 17988), 17990); + assert_eq!(addi_ui16(17988, 2), 17990); + assert_eq!(addi_ui16(3, 17988), 17991); + assert_eq!(addi_ui16(17988, 3), 17991); + assert_eq!(addi_ui16(4, 17988), 17992); + assert_eq!(addi_ui16(17988, 4), 17992); + assert_eq!(addi_ui16(1717, 17988), 19705); + assert_eq!(addi_ui16(17988, 1717), 19705); + assert_eq!(addi_ui16(17988, 17988), 35976); + assert_eq!(addi_ui16(0, 65096), 65096); + assert_eq!(addi_ui16(65096, 0), 65096); + assert_eq!(addi_ui16(1, 65096), 65097); + assert_eq!(addi_ui16(65096, 1), 65097); + assert_eq!(addi_ui16(2, 65096), 65098); + assert_eq!(addi_ui16(65096, 2), 65098); + assert_eq!(addi_ui16(3, 65096), 65099); + assert_eq!(addi_ui16(65096, 3), 65099); + assert_eq!(addi_ui16(4, 65096), 65100); + assert_eq!(addi_ui16(65096, 4), 65100); + assert_eq!(addi_ui16(0, 65534), 65534); + assert_eq!(addi_ui16(65534, 0), 65534); + assert_eq!(addi_ui16(0, 65535), 65535); + assert_eq!(addi_ui16(1, 65534), 65535); + assert_eq!(addi_ui16(65534, 1), 65535); + assert_eq!(addi_ui16(65535, 0), 65535); + assert_eq!(addi_ui32(0, 0), 0); + assert_eq!(addi_ui32(0, 1), 1); + assert_eq!(addi_ui32(1, 0), 1); + assert_eq!(addi_ui32(0, 2), 2); + assert_eq!(addi_ui32(1, 1), 2); + assert_eq!(addi_ui32(2, 0), 2); + assert_eq!(addi_ui32(0, 3), 3); + assert_eq!(addi_ui32(1, 2), 3); + assert_eq!(addi_ui32(2, 1), 3); + assert_eq!(addi_ui32(3, 0), 3); + assert_eq!(addi_ui32(0, 4), 4); + assert_eq!(addi_ui32(1, 3), 4); + assert_eq!(addi_ui32(2, 2), 4); + assert_eq!(addi_ui32(3, 1), 4); + assert_eq!(addi_ui32(4, 0), 4); + assert_eq!(addi_ui32(1, 4), 5); + assert_eq!(addi_ui32(2, 3), 5); + assert_eq!(addi_ui32(3, 2), 5); + assert_eq!(addi_ui32(4, 1), 5); + assert_eq!(addi_ui32(2, 4), 6); + assert_eq!(addi_ui32(3, 3), 6); + assert_eq!(addi_ui32(4, 2), 6); + assert_eq!(addi_ui32(3, 4), 7); + assert_eq!(addi_ui32(4, 3), 7); + assert_eq!(addi_ui32(4, 4), 8); + assert_eq!(addi_ui32(0, 2119154652), 2119154652); + assert_eq!(addi_ui32(2119154652, 0), 2119154652); + assert_eq!(addi_ui32(1, 2119154652), 2119154653); + assert_eq!(addi_ui32(2119154652, 1), 2119154653); + assert_eq!(addi_ui32(2, 2119154652), 2119154654); + assert_eq!(addi_ui32(2119154652, 2), 2119154654); + assert_eq!(addi_ui32(3, 2119154652), 2119154655); + assert_eq!(addi_ui32(2119154652, 3), 2119154655); + assert_eq!(addi_ui32(4, 2119154652), 2119154656); + assert_eq!(addi_ui32(2119154652, 4), 2119154656); + assert_eq!(addi_ui32(0, 3002788344), 3002788344); + assert_eq!(addi_ui32(3002788344, 0), 3002788344); + assert_eq!(addi_ui32(1, 3002788344), 3002788345); + assert_eq!(addi_ui32(3002788344, 1), 3002788345); + assert_eq!(addi_ui32(2, 3002788344), 3002788346); + assert_eq!(addi_ui32(3002788344, 2), 3002788346); + assert_eq!(addi_ui32(3, 3002788344), 3002788347); + assert_eq!(addi_ui32(3002788344, 3), 3002788347); + assert_eq!(addi_ui32(4, 3002788344), 3002788348); + assert_eq!(addi_ui32(3002788344, 4), 3002788348); + assert_eq!(addi_ui32(0, 3482297128), 3482297128); + assert_eq!(addi_ui32(3482297128, 0), 3482297128); + assert_eq!(addi_ui32(1, 3482297128), 3482297129); + assert_eq!(addi_ui32(3482297128, 1), 3482297129); + assert_eq!(addi_ui32(2, 3482297128), 3482297130); + assert_eq!(addi_ui32(3482297128, 2), 3482297130); + assert_eq!(addi_ui32(3, 3482297128), 3482297131); + assert_eq!(addi_ui32(3482297128, 3), 3482297131); + assert_eq!(addi_ui32(4, 3482297128), 3482297132); + assert_eq!(addi_ui32(3482297128, 4), 3482297132); + assert_eq!(addi_ui32(2119154652, 2119154652), 4238309304); + assert_eq!(addi_ui32(0, 4294967294), 4294967294); + assert_eq!(addi_ui32(4294967294, 0), 4294967294); + assert_eq!(addi_ui32(0, 4294967295), 4294967295); + assert_eq!(addi_ui32(1, 4294967294), 4294967295); + assert_eq!(addi_ui32(4294967294, 1), 4294967295); + assert_eq!(addi_ui32(4294967295, 0), 4294967295); + assert_eq!(addi_ui64(0, 0), 0); + assert_eq!(addi_ui64(0, 1), 1); + assert_eq!(addi_ui64(1, 0), 1); + assert_eq!(addi_ui64(0, 2), 2); + assert_eq!(addi_ui64(1, 1), 2); + assert_eq!(addi_ui64(2, 0), 2); + assert_eq!(addi_ui64(0, 3), 3); + assert_eq!(addi_ui64(1, 2), 3); + assert_eq!(addi_ui64(2, 1), 3); + assert_eq!(addi_ui64(3, 0), 3); + assert_eq!(addi_ui64(0, 4), 4); + assert_eq!(addi_ui64(1, 3), 4); + assert_eq!(addi_ui64(2, 2), 4); + assert_eq!(addi_ui64(3, 1), 4); + assert_eq!(addi_ui64(4, 0), 4); + assert_eq!(addi_ui64(1, 4), 5); + assert_eq!(addi_ui64(2, 3), 5); + assert_eq!(addi_ui64(3, 2), 5); + assert_eq!(addi_ui64(4, 1), 5); + assert_eq!(addi_ui64(2, 4), 6); + assert_eq!(addi_ui64(3, 3), 6); + assert_eq!(addi_ui64(4, 2), 6); + assert_eq!(addi_ui64(3, 4), 7); + assert_eq!(addi_ui64(4, 3), 7); + assert_eq!(addi_ui64(4, 4), 8); + assert_eq!(addi_ui64(0, 191084152064409600), 191084152064409600); + assert_eq!(addi_ui64(191084152064409600, 0), 191084152064409600); + assert_eq!(addi_ui64(1, 191084152064409600), 191084152064409601); + assert_eq!(addi_ui64(191084152064409600, 1), 191084152064409601); + assert_eq!(addi_ui64(2, 191084152064409600), 191084152064409602); + assert_eq!(addi_ui64(191084152064409600, 2), 191084152064409602); + assert_eq!(addi_ui64(3, 191084152064409600), 191084152064409603); + assert_eq!(addi_ui64(191084152064409600, 3), 191084152064409603); + assert_eq!(addi_ui64(4, 191084152064409600), 191084152064409604); + assert_eq!(addi_ui64(191084152064409600, 4), 191084152064409604); + assert_eq!( + addi_ui64(191084152064409600, 191084152064409600), + 382168304128819200 + ); + assert_eq!(addi_ui64(0, 11015955194427482112), 11015955194427482112); + assert_eq!(addi_ui64(11015955194427482112, 0), 11015955194427482112); + assert_eq!(addi_ui64(1, 11015955194427482112), 11015955194427482113); + assert_eq!(addi_ui64(11015955194427482112, 1), 11015955194427482113); + assert_eq!(addi_ui64(2, 11015955194427482112), 11015955194427482114); + assert_eq!(addi_ui64(11015955194427482112, 2), 11015955194427482114); + assert_eq!(addi_ui64(3, 11015955194427482112), 11015955194427482115); + assert_eq!(addi_ui64(11015955194427482112, 3), 11015955194427482115); + assert_eq!(addi_ui64(4, 11015955194427482112), 11015955194427482116); + assert_eq!(addi_ui64(11015955194427482112, 4), 11015955194427482116); + assert_eq!( + addi_ui64(191084152064409600, 11015955194427482112), + 11207039346491891712 + ); + assert_eq!( + addi_ui64(11015955194427482112, 191084152064409600), + 11207039346491891712 + ); + assert_eq!(addi_ui64(0, 16990600415051759616), 16990600415051759616); + assert_eq!(addi_ui64(16990600415051759616, 0), 16990600415051759616); + assert_eq!(addi_ui64(1, 16990600415051759616), 16990600415051759617); + assert_eq!(addi_ui64(16990600415051759616, 1), 16990600415051759617); + assert_eq!(addi_ui64(2, 16990600415051759616), 16990600415051759618); + assert_eq!(addi_ui64(16990600415051759616, 2), 16990600415051759618); + assert_eq!(addi_ui64(3, 16990600415051759616), 16990600415051759619); + assert_eq!(addi_ui64(16990600415051759616, 3), 16990600415051759619); + assert_eq!(addi_ui64(4, 16990600415051759616), 16990600415051759620); + assert_eq!(addi_ui64(16990600415051759616, 4), 16990600415051759620); + assert_eq!( + addi_ui64(191084152064409600, 16990600415051759616), + 17181684567116169216 + ); + assert_eq!( + addi_ui64(16990600415051759616, 191084152064409600), + 17181684567116169216 + ); + assert_eq!(addi_ui64(0, 18446744073709551614), 18446744073709551614); + assert_eq!(addi_ui64(18446744073709551614, 0), 18446744073709551614); + assert_eq!(addi_ui64(0, 18446744073709551615), 18446744073709551615); + assert_eq!(addi_ui64(1, 18446744073709551614), 18446744073709551615); + assert_eq!(addi_ui64(18446744073709551614, 1), 18446744073709551615); + assert_eq!(addi_ui64(18446744073709551615, 0), 18446744073709551615); + assert_eq!(addi_ui8(0, 0), 0); + assert_eq!(addi_ui8(0, 1), 1); + assert_eq!(addi_ui8(1, 0), 1); + assert_eq!(addi_ui8(0, 2), 2); + assert_eq!(addi_ui8(1, 1), 2); + assert_eq!(addi_ui8(2, 0), 2); + assert_eq!(addi_ui8(0, 3), 3); + assert_eq!(addi_ui8(1, 2), 3); + assert_eq!(addi_ui8(2, 1), 3); + assert_eq!(addi_ui8(3, 0), 3); + assert_eq!(addi_ui8(0, 4), 4); + assert_eq!(addi_ui8(1, 3), 4); + assert_eq!(addi_ui8(2, 2), 4); + assert_eq!(addi_ui8(3, 1), 4); + assert_eq!(addi_ui8(4, 0), 4); + assert_eq!(addi_ui8(1, 4), 5); + assert_eq!(addi_ui8(2, 3), 5); + assert_eq!(addi_ui8(3, 2), 5); + assert_eq!(addi_ui8(4, 1), 5); + assert_eq!(addi_ui8(2, 4), 6); + assert_eq!(addi_ui8(3, 3), 6); + assert_eq!(addi_ui8(4, 2), 6); + assert_eq!(addi_ui8(3, 4), 7); + assert_eq!(addi_ui8(4, 3), 7); + assert_eq!(addi_ui8(4, 4), 8); + assert_eq!(addi_ui8(0, 72), 72); + assert_eq!(addi_ui8(72, 0), 72); + assert_eq!(addi_ui8(1, 72), 73); + assert_eq!(addi_ui8(72, 1), 73); + assert_eq!(addi_ui8(2, 72), 74); + assert_eq!(addi_ui8(72, 2), 74); + assert_eq!(addi_ui8(3, 72), 75); + assert_eq!(addi_ui8(72, 3), 75); + assert_eq!(addi_ui8(4, 72), 76); + assert_eq!(addi_ui8(72, 4), 76); + assert_eq!(addi_ui8(0, 100), 100); + assert_eq!(addi_ui8(100, 0), 100); + assert_eq!(addi_ui8(1, 100), 101); + assert_eq!(addi_ui8(100, 1), 101); + assert_eq!(addi_ui8(2, 100), 102); + assert_eq!(addi_ui8(100, 2), 102); + assert_eq!(addi_ui8(3, 100), 103); + assert_eq!(addi_ui8(100, 3), 103); + assert_eq!(addi_ui8(4, 100), 104); + assert_eq!(addi_ui8(100, 4), 104); + assert_eq!(addi_ui8(72, 72), 144); + assert_eq!(addi_ui8(0, 162), 162); + assert_eq!(addi_ui8(162, 0), 162); + assert_eq!(addi_ui8(1, 162), 163); + assert_eq!(addi_ui8(162, 1), 163); + assert_eq!(addi_ui8(2, 162), 164); + assert_eq!(addi_ui8(162, 2), 164); + assert_eq!(addi_ui8(3, 162), 165); + assert_eq!(addi_ui8(162, 3), 165); + assert_eq!(addi_ui8(4, 162), 166); + assert_eq!(addi_ui8(162, 4), 166); + assert_eq!(addi_ui8(72, 100), 172); + assert_eq!(addi_ui8(100, 72), 172); + assert_eq!(addi_ui8(100, 100), 200); + assert_eq!(addi_ui8(72, 162), 234); + assert_eq!(addi_ui8(162, 72), 234); + assert_eq!(addi_ui8(0, 254), 254); + assert_eq!(addi_ui8(254, 0), 254); + assert_eq!(addi_ui8(0, 255), 255); + assert_eq!(addi_ui8(1, 254), 255); + assert_eq!(addi_ui8(254, 1), 255); + assert_eq!(addi_ui8(255, 0), 255); + assert_eq!(divi_si16(-32768, 1), -32768); + assert_eq!(divi_si16(-32767, 1), -32767); + assert_eq!(divi_si16(-32547, 1), -32547); + assert_eq!(divi_si16(-32768, 2), -16384); + assert_eq!(divi_si16(-32767, 2), -16383); + assert_eq!(divi_si16(-32547, 2), -16273); + assert_eq!(divi_si16(-32768, 3), -10922); + assert_eq!(divi_si16(-32767, 3), -10922); + assert_eq!(divi_si16(-32547, 3), -10849); + assert_eq!(divi_si16(-32768, 4), -8192); + assert_eq!(divi_si16(-32767, 4), -8191); + assert_eq!(divi_si16(-32547, 4), -8136); + assert_eq!(divi_si16(-32768, 10486), -3); + assert_eq!(divi_si16(-32767, 10486), -3); + assert_eq!(divi_si16(-32547, 10486), -3); + assert_eq!(divi_si16(-32768, 16514), -1); + assert_eq!(divi_si16(-32768, 32766), -1); + assert_eq!(divi_si16(-32768, 32767), -1); + assert_eq!(divi_si16(-32767, 16514), -1); + assert_eq!(divi_si16(-32767, 32766), -1); + assert_eq!(divi_si16(-32767, 32767), -1); + assert_eq!(divi_si16(-32547, 16514), -1); + assert_eq!(divi_si16(32766, -32547), -1); + assert_eq!(divi_si16(32767, -32767), -1); + assert_eq!(divi_si16(32767, -32547), -1); + assert_eq!(divi_si16(-32767, -32768), 0); + assert_eq!(divi_si16(-32547, -32768), 0); + assert_eq!(divi_si16(-32547, -32767), 0); + assert_eq!(divi_si16(-32547, 32766), 0); + assert_eq!(divi_si16(-32547, 32767), 0); + assert_eq!(divi_si16(0, -32768), 0); + assert_eq!(divi_si16(0, -32767), 0); + assert_eq!(divi_si16(0, -32547), 0); + assert_eq!(divi_si16(0, 1), 0); + assert_eq!(divi_si16(0, 2), 0); + assert_eq!(divi_si16(0, 3), 0); + assert_eq!(divi_si16(0, 4), 0); + assert_eq!(divi_si16(0, 10486), 0); + assert_eq!(divi_si16(0, 16514), 0); + assert_eq!(divi_si16(0, 32766), 0); + assert_eq!(divi_si16(0, 32767), 0); + assert_eq!(divi_si16(1, -32768), 0); + assert_eq!(divi_si16(1, -32767), 0); + assert_eq!(divi_si16(1, -32547), 0); + assert_eq!(divi_si16(1, 2), 0); + assert_eq!(divi_si16(1, 3), 0); + assert_eq!(divi_si16(1, 4), 0); + assert_eq!(divi_si16(1, 10486), 0); + assert_eq!(divi_si16(1, 16514), 0); + assert_eq!(divi_si16(1, 32766), 0); + assert_eq!(divi_si16(1, 32767), 0); + assert_eq!(divi_si16(2, -32768), 0); + assert_eq!(divi_si16(2, -32767), 0); + assert_eq!(divi_si16(2, -32547), 0); + assert_eq!(divi_si16(2, 3), 0); + assert_eq!(divi_si16(2, 4), 0); + assert_eq!(divi_si16(2, 10486), 0); + assert_eq!(divi_si16(2, 16514), 0); + assert_eq!(divi_si16(2, 32766), 0); + assert_eq!(divi_si16(2, 32767), 0); + assert_eq!(divi_si16(3, -32768), 0); + assert_eq!(divi_si16(3, -32767), 0); + assert_eq!(divi_si16(3, -32547), 0); + assert_eq!(divi_si16(3, 4), 0); + assert_eq!(divi_si16(3, 10486), 0); + assert_eq!(divi_si16(3, 16514), 0); + assert_eq!(divi_si16(3, 32766), 0); + assert_eq!(divi_si16(3, 32767), 0); + assert_eq!(divi_si16(4, -32768), 0); + assert_eq!(divi_si16(4, -32767), 0); + assert_eq!(divi_si16(4, -32547), 0); + assert_eq!(divi_si16(4, 10486), 0); + assert_eq!(divi_si16(4, 16514), 0); + assert_eq!(divi_si16(4, 32766), 0); + assert_eq!(divi_si16(4, 32767), 0); + assert_eq!(divi_si16(10486, -32768), 0); + assert_eq!(divi_si16(10486, -32767), 0); + assert_eq!(divi_si16(10486, -32547), 0); + assert_eq!(divi_si16(10486, 16514), 0); + assert_eq!(divi_si16(10486, 32766), 0); + assert_eq!(divi_si16(10486, 32767), 0); + assert_eq!(divi_si16(16514, -32768), 0); + assert_eq!(divi_si16(16514, -32767), 0); + assert_eq!(divi_si16(16514, -32547), 0); + assert_eq!(divi_si16(16514, 32766), 0); + assert_eq!(divi_si16(16514, 32767), 0); + assert_eq!(divi_si16(32766, -32768), 0); + assert_eq!(divi_si16(32766, -32767), 0); + assert_eq!(divi_si16(32766, 32767), 0); + assert_eq!(divi_si16(32767, -32768), 0); + assert_eq!(divi_si16(-32768, -32768), 1); + assert_eq!(divi_si16(-32768, -32767), 1); + assert_eq!(divi_si16(-32768, -32547), 1); + assert_eq!(divi_si16(-32767, -32767), 1); + assert_eq!(divi_si16(-32767, -32547), 1); + assert_eq!(divi_si16(-32547, -32547), 1); + assert_eq!(divi_si16(1, 1), 1); + assert_eq!(divi_si16(2, 2), 1); + assert_eq!(divi_si16(3, 2), 1); + assert_eq!(divi_si16(3, 3), 1); + assert_eq!(divi_si16(4, 3), 1); + assert_eq!(divi_si16(4, 4), 1); + assert_eq!(divi_si16(10486, 10486), 1); + assert_eq!(divi_si16(16514, 10486), 1); + assert_eq!(divi_si16(16514, 16514), 1); + assert_eq!(divi_si16(32766, 16514), 1); + assert_eq!(divi_si16(32766, 32766), 1); + assert_eq!(divi_si16(32767, 16514), 1); + assert_eq!(divi_si16(32767, 32766), 1); + assert_eq!(divi_si16(32767, 32767), 1); + assert_eq!(divi_si16(2, 1), 2); + assert_eq!(divi_si16(4, 2), 2); + assert_eq!(divi_si16(3, 1), 3); + assert_eq!(divi_si16(32766, 10486), 3); + assert_eq!(divi_si16(32767, 10486), 3); + assert_eq!(divi_si16(4, 1), 4); + assert_eq!(divi_si16(10486, 4), 2621); + assert_eq!(divi_si16(10486, 3), 3495); + assert_eq!(divi_si16(16514, 4), 4128); + assert_eq!(divi_si16(10486, 2), 5243); + assert_eq!(divi_si16(16514, 3), 5504); + assert_eq!(divi_si16(32766, 4), 8191); + assert_eq!(divi_si16(32767, 4), 8191); + assert_eq!(divi_si16(16514, 2), 8257); + assert_eq!(divi_si16(10486, 1), 10486); + assert_eq!(divi_si16(32766, 3), 10922); + assert_eq!(divi_si16(32767, 3), 10922); + assert_eq!(divi_si16(32766, 2), 16383); + assert_eq!(divi_si16(32767, 2), 16383); + assert_eq!(divi_si16(16514, 1), 16514); + assert_eq!(divi_si16(32766, 1), 32766); + assert_eq!(divi_si16(32767, 1), 32767); + assert_eq!(divi_si32(-2147483648, 1), -2147483648); + assert_eq!(divi_si32(-2147483647, 1), -2147483647); + assert_eq!(divi_si32(-1713183800, 1), -1713183800); + assert_eq!(divi_si32(-1252582164, 1), -1252582164); + assert_eq!(divi_si32(-2147483648, 2), -1073741824); + assert_eq!(divi_si32(-2147483647, 2), -1073741823); + assert_eq!(divi_si32(-1035405763, 1), -1035405763); + assert_eq!(divi_si32(-1713183800, 2), -856591900); + assert_eq!(divi_si32(-2147483648, 3), -715827882); + assert_eq!(divi_si32(-2147483647, 3), -715827882); + assert_eq!(divi_si32(-1252582164, 2), -626291082); + assert_eq!(divi_si32(-1713183800, 3), -571061266); + assert_eq!(divi_si32(-2147483648, 4), -536870912); + assert_eq!(divi_si32(-2147483647, 4), -536870911); + assert_eq!(divi_si32(-1035405763, 2), -517702881); + assert_eq!(divi_si32(-1713183800, 4), -428295950); + assert_eq!(divi_si32(-1252582164, 3), -417527388); + assert_eq!(divi_si32(-1035405763, 3), -345135254); + assert_eq!(divi_si32(-1252582164, 4), -313145541); + assert_eq!(divi_si32(-1035405763, 4), -258851440); + assert_eq!(divi_si32(2147483646, -1035405763), -2); + assert_eq!(divi_si32(2147483647, -1035405763), -2); + assert_eq!(divi_si32(-2147483648, 2147483646), -1); + assert_eq!(divi_si32(-2147483648, 2147483647), -1); + assert_eq!(divi_si32(-2147483647, 2147483646), -1); + assert_eq!(divi_si32(-2147483647, 2147483647), -1); + assert_eq!(divi_si32(2147483646, -1713183800), -1); + assert_eq!(divi_si32(2147483646, -1252582164), -1); + assert_eq!(divi_si32(2147483647, -2147483647), -1); + assert_eq!(divi_si32(2147483647, -1713183800), -1); + assert_eq!(divi_si32(2147483647, -1252582164), -1); + assert_eq!(divi_si32(-2147483647, -2147483648), 0); + assert_eq!(divi_si32(-1713183800, -2147483648), 0); + assert_eq!(divi_si32(-1713183800, -2147483647), 0); + assert_eq!(divi_si32(-1713183800, 2147483646), 0); + assert_eq!(divi_si32(-1713183800, 2147483647), 0); + assert_eq!(divi_si32(-1252582164, -2147483648), 0); + assert_eq!(divi_si32(-1252582164, -2147483647), 0); + assert_eq!(divi_si32(-1252582164, -1713183800), 0); + assert_eq!(divi_si32(-1252582164, 2147483646), 0); + assert_eq!(divi_si32(-1252582164, 2147483647), 0); + assert_eq!(divi_si32(-1035405763, -2147483648), 0); + assert_eq!(divi_si32(-1035405763, -2147483647), 0); + assert_eq!(divi_si32(-1035405763, -1713183800), 0); + assert_eq!(divi_si32(-1035405763, -1252582164), 0); + assert_eq!(divi_si32(-1035405763, 2147483646), 0); + assert_eq!(divi_si32(-1035405763, 2147483647), 0); + assert_eq!(divi_si32(0, -2147483648), 0); + assert_eq!(divi_si32(0, -2147483647), 0); + assert_eq!(divi_si32(0, -1713183800), 0); + assert_eq!(divi_si32(0, -1252582164), 0); + assert_eq!(divi_si32(0, -1035405763), 0); + assert_eq!(divi_si32(0, 1), 0); + assert_eq!(divi_si32(0, 2), 0); + assert_eq!(divi_si32(0, 3), 0); + assert_eq!(divi_si32(0, 4), 0); + assert_eq!(divi_si32(0, 2147483646), 0); + assert_eq!(divi_si32(0, 2147483647), 0); + assert_eq!(divi_si32(1, -2147483648), 0); + assert_eq!(divi_si32(1, -2147483647), 0); + assert_eq!(divi_si32(1, -1713183800), 0); + assert_eq!(divi_si32(1, -1252582164), 0); + assert_eq!(divi_si32(1, -1035405763), 0); + assert_eq!(divi_si32(1, 2), 0); + assert_eq!(divi_si32(1, 3), 0); + assert_eq!(divi_si32(1, 4), 0); + assert_eq!(divi_si32(1, 2147483646), 0); + assert_eq!(divi_si32(1, 2147483647), 0); + assert_eq!(divi_si32(2, -2147483648), 0); + assert_eq!(divi_si32(2, -2147483647), 0); + assert_eq!(divi_si32(2, -1713183800), 0); + assert_eq!(divi_si32(2, -1252582164), 0); + assert_eq!(divi_si32(2, -1035405763), 0); + assert_eq!(divi_si32(2, 3), 0); + assert_eq!(divi_si32(2, 4), 0); + assert_eq!(divi_si32(2, 2147483646), 0); + assert_eq!(divi_si32(2, 2147483647), 0); + assert_eq!(divi_si32(3, -2147483648), 0); + assert_eq!(divi_si32(3, -2147483647), 0); + assert_eq!(divi_si32(3, -1713183800), 0); + assert_eq!(divi_si32(3, -1252582164), 0); + assert_eq!(divi_si32(3, -1035405763), 0); + assert_eq!(divi_si32(3, 4), 0); + assert_eq!(divi_si32(3, 2147483646), 0); + assert_eq!(divi_si32(3, 2147483647), 0); + assert_eq!(divi_si32(4, -2147483648), 0); + assert_eq!(divi_si32(4, -2147483647), 0); + assert_eq!(divi_si32(4, -1713183800), 0); + assert_eq!(divi_si32(4, -1252582164), 0); + assert_eq!(divi_si32(4, -1035405763), 0); + assert_eq!(divi_si32(4, 2147483646), 0); + assert_eq!(divi_si32(4, 2147483647), 0); + assert_eq!(divi_si32(2147483646, -2147483648), 0); + assert_eq!(divi_si32(2147483646, -2147483647), 0); + assert_eq!(divi_si32(2147483646, 2147483647), 0); + assert_eq!(divi_si32(2147483647, -2147483648), 0); + assert_eq!(divi_si32(-2147483648, -2147483648), 1); + assert_eq!(divi_si32(-2147483648, -2147483647), 1); + assert_eq!(divi_si32(-2147483648, -1713183800), 1); + assert_eq!(divi_si32(-2147483648, -1252582164), 1); + assert_eq!(divi_si32(-2147483647, -2147483647), 1); + assert_eq!(divi_si32(-2147483647, -1713183800), 1); + assert_eq!(divi_si32(-2147483647, -1252582164), 1); + assert_eq!(divi_si32(-1713183800, -1713183800), 1); + assert_eq!(divi_si32(-1713183800, -1252582164), 1); + assert_eq!(divi_si32(-1713183800, -1035405763), 1); + assert_eq!(divi_si32(-1252582164, -1252582164), 1); + assert_eq!(divi_si32(-1252582164, -1035405763), 1); + assert_eq!(divi_si32(-1035405763, -1035405763), 1); + assert_eq!(divi_si32(1, 1), 1); + assert_eq!(divi_si32(2, 2), 1); + assert_eq!(divi_si32(3, 2), 1); + assert_eq!(divi_si32(3, 3), 1); + assert_eq!(divi_si32(4, 3), 1); + assert_eq!(divi_si32(4, 4), 1); + assert_eq!(divi_si32(2147483646, 2147483646), 1); + assert_eq!(divi_si32(2147483647, 2147483646), 1); + assert_eq!(divi_si32(2147483647, 2147483647), 1); + assert_eq!(divi_si32(-2147483648, -1035405763), 2); + assert_eq!(divi_si32(-2147483647, -1035405763), 2); + assert_eq!(divi_si32(2, 1), 2); + assert_eq!(divi_si32(4, 2), 2); + assert_eq!(divi_si32(3, 1), 3); + assert_eq!(divi_si32(4, 1), 4); + assert_eq!(divi_si32(2147483646, 4), 536870911); + assert_eq!(divi_si32(2147483647, 4), 536870911); + assert_eq!(divi_si32(2147483646, 3), 715827882); + assert_eq!(divi_si32(2147483647, 3), 715827882); + assert_eq!(divi_si32(2147483646, 2), 1073741823); + assert_eq!(divi_si32(2147483647, 2), 1073741823); + assert_eq!(divi_si32(2147483646, 1), 2147483646); + assert_eq!(divi_si32(2147483647, 1), 2147483647); + assert_eq!(divi_si64(-9223372036854775808, 1), -9223372036854775808); + assert_eq!(divi_si64(-9223372036854775807, 1), -9223372036854775807); + assert_eq!(divi_si64(-9223372036854775808, 2), -4611686018427387904); + assert_eq!(divi_si64(-9223372036854775807, 2), -4611686018427387903); + assert_eq!(divi_si64(-9223372036854775808, 3), -3074457345618258602); + assert_eq!(divi_si64(-9223372036854775807, 3), -3074457345618258602); + assert_eq!(divi_si64(-9223372036854775808, 4), -2305843009213693952); + assert_eq!(divi_si64(-9223372036854775807, 4), -2305843009213693951); + assert_eq!(divi_si64(-1741927215160008704, 1), -1741927215160008704); + assert_eq!(divi_si64(-1328271339354574848, 1), -1328271339354574848); + assert_eq!(divi_si64(-1741927215160008704, 2), -870963607580004352); + assert_eq!(divi_si64(-1328271339354574848, 2), -664135669677287424); + assert_eq!(divi_si64(-1741927215160008704, 3), -580642405053336234); + assert_eq!(divi_si64(-1328271339354574848, 3), -442757113118191616); + assert_eq!(divi_si64(-1741927215160008704, 4), -435481803790002176); + assert_eq!(divi_si64(-1328271339354574848, 4), -332067834838643712); + assert_eq!(divi_si64(9223372036854775806, -1328271339354574848), -6); + assert_eq!(divi_si64(9223372036854775807, -1328271339354574848), -6); + assert_eq!(divi_si64(9223372036854775806, -1741927215160008704), -5); + assert_eq!(divi_si64(9223372036854775807, -1741927215160008704), -5); + assert_eq!(divi_si64(5577148965131116544, -1328271339354574848), -4); + assert_eq!(divi_si64(5577148965131116544, -1741927215160008704), -3); + assert_eq!(divi_si64(-9223372036854775808, 5577148965131116544), -1); + assert_eq!(divi_si64(-9223372036854775808, 9223372036854775806), -1); + assert_eq!(divi_si64(-9223372036854775808, 9223372036854775807), -1); + assert_eq!(divi_si64(-9223372036854775807, 5577148965131116544), -1); + assert_eq!(divi_si64(-9223372036854775807, 9223372036854775806), -1); + assert_eq!(divi_si64(-9223372036854775807, 9223372036854775807), -1); + assert_eq!(divi_si64(9223372036854775807, -9223372036854775807), -1); + assert_eq!(divi_si64(-9223372036854775807, -9223372036854775808), 0); + assert_eq!(divi_si64(-1741927215160008704, -9223372036854775808), 0); + assert_eq!(divi_si64(-1741927215160008704, -9223372036854775807), 0); + assert_eq!(divi_si64(-1741927215160008704, 5577148965131116544), 0); + assert_eq!(divi_si64(-1741927215160008704, 9223372036854775806), 0); + assert_eq!(divi_si64(-1741927215160008704, 9223372036854775807), 0); + assert_eq!(divi_si64(-1328271339354574848, -9223372036854775808), 0); + assert_eq!(divi_si64(-1328271339354574848, -9223372036854775807), 0); + assert_eq!(divi_si64(-1328271339354574848, -1741927215160008704), 0); + assert_eq!(divi_si64(-1328271339354574848, 5577148965131116544), 0); + assert_eq!(divi_si64(-1328271339354574848, 9223372036854775806), 0); + assert_eq!(divi_si64(-1328271339354574848, 9223372036854775807), 0); + assert_eq!(divi_si64(0, -9223372036854775808), 0); + assert_eq!(divi_si64(0, -9223372036854775807), 0); + assert_eq!(divi_si64(0, -1741927215160008704), 0); + assert_eq!(divi_si64(0, -1328271339354574848), 0); + assert_eq!(divi_si64(0, 1), 0); + assert_eq!(divi_si64(0, 2), 0); + assert_eq!(divi_si64(0, 3), 0); + assert_eq!(divi_si64(0, 4), 0); + assert_eq!(divi_si64(0, 5577148965131116544), 0); + assert_eq!(divi_si64(0, 9223372036854775806), 0); + assert_eq!(divi_si64(0, 9223372036854775807), 0); + assert_eq!(divi_si64(1, -9223372036854775808), 0); + assert_eq!(divi_si64(1, -9223372036854775807), 0); + assert_eq!(divi_si64(1, -1741927215160008704), 0); + assert_eq!(divi_si64(1, -1328271339354574848), 0); + assert_eq!(divi_si64(1, 2), 0); + assert_eq!(divi_si64(1, 3), 0); + assert_eq!(divi_si64(1, 4), 0); + assert_eq!(divi_si64(1, 5577148965131116544), 0); + assert_eq!(divi_si64(1, 9223372036854775806), 0); + assert_eq!(divi_si64(1, 9223372036854775807), 0); + assert_eq!(divi_si64(2, -9223372036854775808), 0); + assert_eq!(divi_si64(2, -9223372036854775807), 0); + assert_eq!(divi_si64(2, -1741927215160008704), 0); + assert_eq!(divi_si64(2, -1328271339354574848), 0); + assert_eq!(divi_si64(2, 3), 0); + assert_eq!(divi_si64(2, 4), 0); + assert_eq!(divi_si64(2, 5577148965131116544), 0); + assert_eq!(divi_si64(2, 9223372036854775806), 0); + assert_eq!(divi_si64(2, 9223372036854775807), 0); + assert_eq!(divi_si64(3, -9223372036854775808), 0); + assert_eq!(divi_si64(3, -9223372036854775807), 0); + assert_eq!(divi_si64(3, -1741927215160008704), 0); + assert_eq!(divi_si64(3, -1328271339354574848), 0); + assert_eq!(divi_si64(3, 4), 0); + assert_eq!(divi_si64(3, 5577148965131116544), 0); + assert_eq!(divi_si64(3, 9223372036854775806), 0); + assert_eq!(divi_si64(3, 9223372036854775807), 0); + assert_eq!(divi_si64(4, -9223372036854775808), 0); + assert_eq!(divi_si64(4, -9223372036854775807), 0); + assert_eq!(divi_si64(4, -1741927215160008704), 0); + assert_eq!(divi_si64(4, -1328271339354574848), 0); + assert_eq!(divi_si64(4, 5577148965131116544), 0); + assert_eq!(divi_si64(4, 9223372036854775806), 0); + assert_eq!(divi_si64(4, 9223372036854775807), 0); + assert_eq!(divi_si64(5577148965131116544, -9223372036854775808), 0); + assert_eq!(divi_si64(5577148965131116544, -9223372036854775807), 0); + assert_eq!(divi_si64(5577148965131116544, 9223372036854775806), 0); + assert_eq!(divi_si64(5577148965131116544, 9223372036854775807), 0); + assert_eq!(divi_si64(9223372036854775806, -9223372036854775808), 0); + assert_eq!(divi_si64(9223372036854775806, -9223372036854775807), 0); + assert_eq!(divi_si64(9223372036854775806, 9223372036854775807), 0); + assert_eq!(divi_si64(9223372036854775807, -9223372036854775808), 0); + assert_eq!(divi_si64(-9223372036854775808, -9223372036854775808), 1); + assert_eq!(divi_si64(-9223372036854775808, -9223372036854775807), 1); + assert_eq!(divi_si64(-9223372036854775807, -9223372036854775807), 1); + assert_eq!(divi_si64(-1741927215160008704, -1741927215160008704), 1); + assert_eq!(divi_si64(-1741927215160008704, -1328271339354574848), 1); + assert_eq!(divi_si64(-1328271339354574848, -1328271339354574848), 1); + assert_eq!(divi_si64(1, 1), 1); + assert_eq!(divi_si64(2, 2), 1); + assert_eq!(divi_si64(3, 2), 1); + assert_eq!(divi_si64(3, 3), 1); + assert_eq!(divi_si64(4, 3), 1); + assert_eq!(divi_si64(4, 4), 1); + assert_eq!(divi_si64(5577148965131116544, 5577148965131116544), 1); + assert_eq!(divi_si64(9223372036854775806, 5577148965131116544), 1); + assert_eq!(divi_si64(9223372036854775806, 9223372036854775806), 1); + assert_eq!(divi_si64(9223372036854775807, 5577148965131116544), 1); + assert_eq!(divi_si64(9223372036854775807, 9223372036854775806), 1); + assert_eq!(divi_si64(9223372036854775807, 9223372036854775807), 1); + assert_eq!(divi_si64(2, 1), 2); + assert_eq!(divi_si64(4, 2), 2); + assert_eq!(divi_si64(3, 1), 3); + assert_eq!(divi_si64(4, 1), 4); + assert_eq!(divi_si64(-9223372036854775808, -1741927215160008704), 5); + assert_eq!(divi_si64(-9223372036854775807, -1741927215160008704), 5); + assert_eq!(divi_si64(-9223372036854775808, -1328271339354574848), 6); + assert_eq!(divi_si64(-9223372036854775807, -1328271339354574848), 6); + assert_eq!(divi_si64(5577148965131116544, 4), 1394287241282779136); + assert_eq!(divi_si64(5577148965131116544, 3), 1859049655043705514); + assert_eq!(divi_si64(9223372036854775806, 4), 2305843009213693951); + assert_eq!(divi_si64(9223372036854775807, 4), 2305843009213693951); + assert_eq!(divi_si64(5577148965131116544, 2), 2788574482565558272); + assert_eq!(divi_si64(9223372036854775806, 3), 3074457345618258602); + assert_eq!(divi_si64(9223372036854775807, 3), 3074457345618258602); + assert_eq!(divi_si64(9223372036854775806, 2), 4611686018427387903); + assert_eq!(divi_si64(9223372036854775807, 2), 4611686018427387903); + assert_eq!(divi_si64(5577148965131116544, 1), 5577148965131116544); + assert_eq!(divi_si64(9223372036854775806, 1), 9223372036854775806); + assert_eq!(divi_si64(9223372036854775807, 1), 9223372036854775807); + assert_eq!(divi_si8(-128, 1), -128); + assert_eq!(divi_si8(-127, 1), -127); + assert_eq!(divi_si8(-128, 2), -64); + assert_eq!(divi_si8(-127, 2), -63); + assert_eq!(divi_si8(-128, 3), -42); + assert_eq!(divi_si8(-127, 3), -42); + assert_eq!(divi_si8(-128, 4), -32); + assert_eq!(divi_si8(-127, 4), -31); + assert_eq!(divi_si8(-128, 16), -8); + assert_eq!(divi_si8(-127, 16), -7); + assert_eq!(divi_si8(-128, 126), -1); + assert_eq!(divi_si8(-128, 127), -1); + assert_eq!(divi_si8(-127, 126), -1); + assert_eq!(divi_si8(-127, 127), -1); + assert_eq!(divi_si8(127, -127), -1); + assert_eq!(divi_si8(-127, -128), 0); + assert_eq!(divi_si8(0, -128), 0); + assert_eq!(divi_si8(0, -127), 0); + assert_eq!(divi_si8(0, 1), 0); + assert_eq!(divi_si8(0, 2), 0); + assert_eq!(divi_si8(0, 3), 0); + assert_eq!(divi_si8(0, 4), 0); + assert_eq!(divi_si8(0, 16), 0); + assert_eq!(divi_si8(0, 126), 0); + assert_eq!(divi_si8(0, 127), 0); + assert_eq!(divi_si8(1, -128), 0); + assert_eq!(divi_si8(1, -127), 0); + assert_eq!(divi_si8(1, 2), 0); + assert_eq!(divi_si8(1, 3), 0); + assert_eq!(divi_si8(1, 4), 0); + assert_eq!(divi_si8(1, 16), 0); + assert_eq!(divi_si8(1, 126), 0); + assert_eq!(divi_si8(1, 127), 0); + assert_eq!(divi_si8(2, -128), 0); + assert_eq!(divi_si8(2, -127), 0); + assert_eq!(divi_si8(2, 3), 0); + assert_eq!(divi_si8(2, 4), 0); + assert_eq!(divi_si8(2, 16), 0); + assert_eq!(divi_si8(2, 126), 0); + assert_eq!(divi_si8(2, 127), 0); + assert_eq!(divi_si8(3, -128), 0); + assert_eq!(divi_si8(3, -127), 0); + assert_eq!(divi_si8(3, 4), 0); + assert_eq!(divi_si8(3, 16), 0); + assert_eq!(divi_si8(3, 126), 0); + assert_eq!(divi_si8(3, 127), 0); + assert_eq!(divi_si8(4, -128), 0); + assert_eq!(divi_si8(4, -127), 0); + assert_eq!(divi_si8(4, 16), 0); + assert_eq!(divi_si8(4, 126), 0); + assert_eq!(divi_si8(4, 127), 0); + assert_eq!(divi_si8(16, -128), 0); + assert_eq!(divi_si8(16, -127), 0); + assert_eq!(divi_si8(16, 126), 0); + assert_eq!(divi_si8(16, 127), 0); + assert_eq!(divi_si8(126, -128), 0); + assert_eq!(divi_si8(126, -127), 0); + assert_eq!(divi_si8(126, 127), 0); + assert_eq!(divi_si8(127, -128), 0); + assert_eq!(divi_si8(-128, -128), 1); + assert_eq!(divi_si8(-128, -127), 1); + assert_eq!(divi_si8(-127, -127), 1); + assert_eq!(divi_si8(1, 1), 1); + assert_eq!(divi_si8(2, 2), 1); + assert_eq!(divi_si8(3, 2), 1); + assert_eq!(divi_si8(3, 3), 1); + assert_eq!(divi_si8(4, 3), 1); + assert_eq!(divi_si8(4, 4), 1); + assert_eq!(divi_si8(16, 16), 1); + assert_eq!(divi_si8(126, 126), 1); + assert_eq!(divi_si8(127, 126), 1); + assert_eq!(divi_si8(127, 127), 1); + assert_eq!(divi_si8(2, 1), 2); + assert_eq!(divi_si8(4, 2), 2); + assert_eq!(divi_si8(3, 1), 3); + assert_eq!(divi_si8(4, 1), 4); + assert_eq!(divi_si8(16, 4), 4); + assert_eq!(divi_si8(16, 3), 5); + assert_eq!(divi_si8(126, 16), 7); + assert_eq!(divi_si8(127, 16), 7); + assert_eq!(divi_si8(16, 2), 8); + assert_eq!(divi_si8(16, 1), 16); + assert_eq!(divi_si8(126, 4), 31); + assert_eq!(divi_si8(127, 4), 31); + assert_eq!(divi_si8(126, 3), 42); + assert_eq!(divi_si8(127, 3), 42); + assert_eq!(divi_si8(126, 2), 63); + assert_eq!(divi_si8(127, 2), 63); + assert_eq!(divi_si8(126, 1), 126); + assert_eq!(divi_si8(127, 1), 127); + assert_eq!(divi_ui16(0, 1), 0); + assert_eq!(divi_ui16(0, 2), 0); + assert_eq!(divi_ui16(0, 3), 0); + assert_eq!(divi_ui16(0, 4), 0); + assert_eq!(divi_ui16(0, 1717), 0); + assert_eq!(divi_ui16(0, 17988), 0); + assert_eq!(divi_ui16(0, 65096), 0); + assert_eq!(divi_ui16(0, 65534), 0); + assert_eq!(divi_ui16(0, 65535), 0); + assert_eq!(divi_ui16(1, 2), 0); + assert_eq!(divi_ui16(1, 3), 0); + assert_eq!(divi_ui16(1, 4), 0); + assert_eq!(divi_ui16(1, 1717), 0); + assert_eq!(divi_ui16(1, 17988), 0); + assert_eq!(divi_ui16(1, 65096), 0); + assert_eq!(divi_ui16(1, 65534), 0); + assert_eq!(divi_ui16(1, 65535), 0); + assert_eq!(divi_ui16(2, 3), 0); + assert_eq!(divi_ui16(2, 4), 0); + assert_eq!(divi_ui16(2, 1717), 0); + assert_eq!(divi_ui16(2, 17988), 0); + assert_eq!(divi_ui16(2, 65096), 0); + assert_eq!(divi_ui16(2, 65534), 0); + assert_eq!(divi_ui16(2, 65535), 0); + assert_eq!(divi_ui16(3, 4), 0); + assert_eq!(divi_ui16(3, 1717), 0); + assert_eq!(divi_ui16(3, 17988), 0); + assert_eq!(divi_ui16(3, 65096), 0); + assert_eq!(divi_ui16(3, 65534), 0); + assert_eq!(divi_ui16(3, 65535), 0); + assert_eq!(divi_ui16(4, 1717), 0); + assert_eq!(divi_ui16(4, 17988), 0); + assert_eq!(divi_ui16(4, 65096), 0); + assert_eq!(divi_ui16(4, 65534), 0); + assert_eq!(divi_ui16(4, 65535), 0); + assert_eq!(divi_ui16(1717, 17988), 0); + assert_eq!(divi_ui16(1717, 65096), 0); + assert_eq!(divi_ui16(1717, 65534), 0); + assert_eq!(divi_ui16(1717, 65535), 0); + assert_eq!(divi_ui16(17988, 65096), 0); + assert_eq!(divi_ui16(17988, 65534), 0); + assert_eq!(divi_ui16(17988, 65535), 0); + assert_eq!(divi_ui16(65096, 65534), 0); + assert_eq!(divi_ui16(65096, 65535), 0); + assert_eq!(divi_ui16(65534, 65535), 0); + assert_eq!(divi_ui16(1, 1), 1); + assert_eq!(divi_ui16(2, 2), 1); + assert_eq!(divi_ui16(3, 2), 1); + assert_eq!(divi_ui16(3, 3), 1); + assert_eq!(divi_ui16(4, 3), 1); + assert_eq!(divi_ui16(4, 4), 1); + assert_eq!(divi_ui16(1717, 1717), 1); + assert_eq!(divi_ui16(17988, 17988), 1); + assert_eq!(divi_ui16(65096, 65096), 1); + assert_eq!(divi_ui16(65534, 65096), 1); + assert_eq!(divi_ui16(65534, 65534), 1); + assert_eq!(divi_ui16(65535, 65096), 1); + assert_eq!(divi_ui16(65535, 65534), 1); + assert_eq!(divi_ui16(65535, 65535), 1); + assert_eq!(divi_ui16(2, 1), 2); + assert_eq!(divi_ui16(4, 2), 2); + assert_eq!(divi_ui16(3, 1), 3); + assert_eq!(divi_ui16(65096, 17988), 3); + assert_eq!(divi_ui16(65534, 17988), 3); + assert_eq!(divi_ui16(65535, 17988), 3); + assert_eq!(divi_ui16(4, 1), 4); + assert_eq!(divi_ui16(17988, 1717), 10); + assert_eq!(divi_ui16(65096, 1717), 37); + assert_eq!(divi_ui16(65534, 1717), 38); + assert_eq!(divi_ui16(65535, 1717), 38); + assert_eq!(divi_ui16(1717, 4), 429); + assert_eq!(divi_ui16(1717, 3), 572); + assert_eq!(divi_ui16(1717, 2), 858); + assert_eq!(divi_ui16(1717, 1), 1717); + assert_eq!(divi_ui16(17988, 4), 4497); + assert_eq!(divi_ui16(17988, 3), 5996); + assert_eq!(divi_ui16(17988, 2), 8994); + assert_eq!(divi_ui16(65096, 4), 16274); + assert_eq!(divi_ui16(65534, 4), 16383); + assert_eq!(divi_ui16(65535, 4), 16383); + assert_eq!(divi_ui16(17988, 1), 17988); + assert_eq!(divi_ui16(65096, 3), 21698); + assert_eq!(divi_ui16(65534, 3), 21844); + assert_eq!(divi_ui16(65535, 3), 21845); + assert_eq!(divi_ui16(65096, 2), 32548); + assert_eq!(divi_ui16(65534, 2), 32767); + assert_eq!(divi_ui16(65535, 2), 32767); + assert_eq!(divi_ui16(65096, 1), 65096); + assert_eq!(divi_ui16(65534, 1), 65534); + assert_eq!(divi_ui16(65535, 1), 65535); + assert_eq!(divi_ui32(0, 1), 0); + assert_eq!(divi_ui32(0, 2), 0); + assert_eq!(divi_ui32(0, 3), 0); + assert_eq!(divi_ui32(0, 4), 0); + assert_eq!(divi_ui32(0, 2119154652), 0); + assert_eq!(divi_ui32(0, 3002788344), 0); + assert_eq!(divi_ui32(0, 3482297128), 0); + assert_eq!(divi_ui32(0, 4294967294), 0); + assert_eq!(divi_ui32(0, 4294967295), 0); + assert_eq!(divi_ui32(1, 2), 0); + assert_eq!(divi_ui32(1, 3), 0); + assert_eq!(divi_ui32(1, 4), 0); + assert_eq!(divi_ui32(1, 2119154652), 0); + assert_eq!(divi_ui32(1, 3002788344), 0); + assert_eq!(divi_ui32(1, 3482297128), 0); + assert_eq!(divi_ui32(1, 4294967294), 0); + assert_eq!(divi_ui32(1, 4294967295), 0); + assert_eq!(divi_ui32(2, 3), 0); + assert_eq!(divi_ui32(2, 4), 0); + assert_eq!(divi_ui32(2, 2119154652), 0); + assert_eq!(divi_ui32(2, 3002788344), 0); + assert_eq!(divi_ui32(2, 3482297128), 0); + assert_eq!(divi_ui32(2, 4294967294), 0); + assert_eq!(divi_ui32(2, 4294967295), 0); + assert_eq!(divi_ui32(3, 4), 0); + assert_eq!(divi_ui32(3, 2119154652), 0); + assert_eq!(divi_ui32(3, 3002788344), 0); + assert_eq!(divi_ui32(3, 3482297128), 0); + assert_eq!(divi_ui32(3, 4294967294), 0); + assert_eq!(divi_ui32(3, 4294967295), 0); + assert_eq!(divi_ui32(4, 2119154652), 0); + assert_eq!(divi_ui32(4, 3002788344), 0); + assert_eq!(divi_ui32(4, 3482297128), 0); + assert_eq!(divi_ui32(4, 4294967294), 0); + assert_eq!(divi_ui32(4, 4294967295), 0); + assert_eq!(divi_ui32(2119154652, 3002788344), 0); + assert_eq!(divi_ui32(2119154652, 3482297128), 0); + assert_eq!(divi_ui32(2119154652, 4294967294), 0); + assert_eq!(divi_ui32(2119154652, 4294967295), 0); + assert_eq!(divi_ui32(3002788344, 3482297128), 0); + assert_eq!(divi_ui32(3002788344, 4294967294), 0); + assert_eq!(divi_ui32(3002788344, 4294967295), 0); + assert_eq!(divi_ui32(3482297128, 4294967294), 0); + assert_eq!(divi_ui32(3482297128, 4294967295), 0); + assert_eq!(divi_ui32(4294967294, 4294967295), 0); + assert_eq!(divi_ui32(1, 1), 1); + assert_eq!(divi_ui32(2, 2), 1); + assert_eq!(divi_ui32(3, 2), 1); + assert_eq!(divi_ui32(3, 3), 1); + assert_eq!(divi_ui32(4, 3), 1); + assert_eq!(divi_ui32(4, 4), 1); + assert_eq!(divi_ui32(2119154652, 2119154652), 1); + assert_eq!(divi_ui32(3002788344, 2119154652), 1); + assert_eq!(divi_ui32(3002788344, 3002788344), 1); + assert_eq!(divi_ui32(3482297128, 2119154652), 1); + assert_eq!(divi_ui32(3482297128, 3002788344), 1); + assert_eq!(divi_ui32(3482297128, 3482297128), 1); + assert_eq!(divi_ui32(4294967294, 3002788344), 1); + assert_eq!(divi_ui32(4294967294, 3482297128), 1); + assert_eq!(divi_ui32(4294967294, 4294967294), 1); + assert_eq!(divi_ui32(4294967295, 3002788344), 1); + assert_eq!(divi_ui32(4294967295, 3482297128), 1); + assert_eq!(divi_ui32(4294967295, 4294967294), 1); + assert_eq!(divi_ui32(4294967295, 4294967295), 1); + assert_eq!(divi_ui32(2, 1), 2); + assert_eq!(divi_ui32(4, 2), 2); + assert_eq!(divi_ui32(4294967294, 2119154652), 2); + assert_eq!(divi_ui32(4294967295, 2119154652), 2); + assert_eq!(divi_ui32(3, 1), 3); + assert_eq!(divi_ui32(4, 1), 4); + assert_eq!(divi_ui32(2119154652, 4), 529788663); + assert_eq!(divi_ui32(2119154652, 3), 706384884); + assert_eq!(divi_ui32(3002788344, 4), 750697086); + assert_eq!(divi_ui32(3482297128, 4), 870574282); + assert_eq!(divi_ui32(3002788344, 3), 1000929448); + assert_eq!(divi_ui32(2119154652, 2), 1059577326); + assert_eq!(divi_ui32(4294967294, 4), 1073741823); + assert_eq!(divi_ui32(4294967295, 4), 1073741823); + assert_eq!(divi_ui32(3482297128, 3), 1160765709); + assert_eq!(divi_ui32(4294967294, 3), 1431655764); + assert_eq!(divi_ui32(4294967295, 3), 1431655765); + assert_eq!(divi_ui32(3002788344, 2), 1501394172); + assert_eq!(divi_ui32(3482297128, 2), 1741148564); + assert_eq!(divi_ui32(2119154652, 1), 2119154652); + assert_eq!(divi_ui32(4294967294, 2), 2147483647); + assert_eq!(divi_ui32(4294967295, 2), 2147483647); + assert_eq!(divi_ui32(3002788344, 1), 3002788344); + assert_eq!(divi_ui32(3482297128, 1), 3482297128); + assert_eq!(divi_ui32(4294967294, 1), 4294967294); + assert_eq!(divi_ui32(4294967295, 1), 4294967295); + assert_eq!(divi_ui64(0, 1), 0); + assert_eq!(divi_ui64(0, 2), 0); + assert_eq!(divi_ui64(0, 3), 0); + assert_eq!(divi_ui64(0, 4), 0); + assert_eq!(divi_ui64(0, 191084152064409600), 0); + assert_eq!(divi_ui64(0, 11015955194427482112), 0); + assert_eq!(divi_ui64(0, 16990600415051759616), 0); + assert_eq!(divi_ui64(0, 18446744073709551614), 0); + assert_eq!(divi_ui64(0, 18446744073709551615), 0); + assert_eq!(divi_ui64(1, 2), 0); + assert_eq!(divi_ui64(1, 3), 0); + assert_eq!(divi_ui64(1, 4), 0); + assert_eq!(divi_ui64(1, 191084152064409600), 0); + assert_eq!(divi_ui64(1, 11015955194427482112), 0); + assert_eq!(divi_ui64(1, 16990600415051759616), 0); + assert_eq!(divi_ui64(1, 18446744073709551614), 0); + assert_eq!(divi_ui64(1, 18446744073709551615), 0); + assert_eq!(divi_ui64(2, 3), 0); + assert_eq!(divi_ui64(2, 4), 0); + assert_eq!(divi_ui64(2, 191084152064409600), 0); + assert_eq!(divi_ui64(2, 11015955194427482112), 0); + assert_eq!(divi_ui64(2, 16990600415051759616), 0); + assert_eq!(divi_ui64(2, 18446744073709551614), 0); + assert_eq!(divi_ui64(2, 18446744073709551615), 0); + assert_eq!(divi_ui64(3, 4), 0); + assert_eq!(divi_ui64(3, 191084152064409600), 0); + assert_eq!(divi_ui64(3, 11015955194427482112), 0); + assert_eq!(divi_ui64(3, 16990600415051759616), 0); + assert_eq!(divi_ui64(3, 18446744073709551614), 0); + assert_eq!(divi_ui64(3, 18446744073709551615), 0); + assert_eq!(divi_ui64(4, 191084152064409600), 0); + assert_eq!(divi_ui64(4, 11015955194427482112), 0); + assert_eq!(divi_ui64(4, 16990600415051759616), 0); + assert_eq!(divi_ui64(4, 18446744073709551614), 0); + assert_eq!(divi_ui64(4, 18446744073709551615), 0); + assert_eq!(divi_ui64(191084152064409600, 11015955194427482112), 0); + assert_eq!(divi_ui64(191084152064409600, 16990600415051759616), 0); + assert_eq!(divi_ui64(191084152064409600, 18446744073709551614), 0); + assert_eq!(divi_ui64(191084152064409600, 18446744073709551615), 0); + assert_eq!(divi_ui64(11015955194427482112, 16990600415051759616), 0); + assert_eq!(divi_ui64(11015955194427482112, 18446744073709551614), 0); + assert_eq!(divi_ui64(11015955194427482112, 18446744073709551615), 0); + assert_eq!(divi_ui64(16990600415051759616, 18446744073709551614), 0); + assert_eq!(divi_ui64(16990600415051759616, 18446744073709551615), 0); + assert_eq!(divi_ui64(18446744073709551614, 18446744073709551615), 0); + assert_eq!(divi_ui64(1, 1), 1); + assert_eq!(divi_ui64(2, 2), 1); + assert_eq!(divi_ui64(3, 2), 1); + assert_eq!(divi_ui64(3, 3), 1); + assert_eq!(divi_ui64(4, 3), 1); + assert_eq!(divi_ui64(4, 4), 1); + assert_eq!(divi_ui64(191084152064409600, 191084152064409600), 1); + assert_eq!(divi_ui64(11015955194427482112, 11015955194427482112), 1); + assert_eq!(divi_ui64(16990600415051759616, 11015955194427482112), 1); + assert_eq!(divi_ui64(16990600415051759616, 16990600415051759616), 1); + assert_eq!(divi_ui64(18446744073709551614, 11015955194427482112), 1); + assert_eq!(divi_ui64(18446744073709551614, 16990600415051759616), 1); + assert_eq!(divi_ui64(18446744073709551614, 18446744073709551614), 1); + assert_eq!(divi_ui64(18446744073709551615, 11015955194427482112), 1); + assert_eq!(divi_ui64(18446744073709551615, 16990600415051759616), 1); + assert_eq!(divi_ui64(18446744073709551615, 18446744073709551614), 1); + assert_eq!(divi_ui64(18446744073709551615, 18446744073709551615), 1); + assert_eq!(divi_ui64(2, 1), 2); + assert_eq!(divi_ui64(4, 2), 2); + assert_eq!(divi_ui64(3, 1), 3); + assert_eq!(divi_ui64(4, 1), 4); + assert_eq!(divi_ui64(11015955194427482112, 191084152064409600), 57); + assert_eq!(divi_ui64(16990600415051759616, 191084152064409600), 88); + assert_eq!(divi_ui64(18446744073709551614, 191084152064409600), 96); + assert_eq!(divi_ui64(18446744073709551615, 191084152064409600), 96); + assert_eq!(divi_ui64(191084152064409600, 4), 47771038016102400); + assert_eq!(divi_ui64(191084152064409600, 3), 63694717354803200); + assert_eq!(divi_ui64(191084152064409600, 2), 95542076032204800); + assert_eq!(divi_ui64(191084152064409600, 1), 191084152064409600); + assert_eq!(divi_ui64(11015955194427482112, 4), 2753988798606870528); + assert_eq!(divi_ui64(11015955194427482112, 3), 3671985064809160704); + assert_eq!(divi_ui64(16990600415051759616, 4), 4247650103762939904); + assert_eq!(divi_ui64(18446744073709551614, 4), 4611686018427387903); + assert_eq!(divi_ui64(18446744073709551615, 4), 4611686018427387903); + assert_eq!(divi_ui64(11015955194427482112, 2), 5507977597213741056); + assert_eq!(divi_ui64(16990600415051759616, 3), 5663533471683919872); + assert_eq!(divi_ui64(18446744073709551614, 3), 6148914691236517204); + assert_eq!(divi_ui64(18446744073709551615, 3), 6148914691236517205); + assert_eq!(divi_ui64(16990600415051759616, 2), 8495300207525879808); + assert_eq!(divi_ui64(18446744073709551614, 2), 9223372036854775807); + assert_eq!(divi_ui64(18446744073709551615, 2), 9223372036854775807); + assert_eq!(divi_ui64(11015955194427482112, 1), 11015955194427482112); + assert_eq!(divi_ui64(16990600415051759616, 1), 16990600415051759616); + assert_eq!(divi_ui64(18446744073709551614, 1), 18446744073709551614); + assert_eq!(divi_ui64(18446744073709551615, 1), 18446744073709551615); + assert_eq!(divi_ui8(0, 1), 0); + assert_eq!(divi_ui8(0, 2), 0); + assert_eq!(divi_ui8(0, 3), 0); + assert_eq!(divi_ui8(0, 4), 0); + assert_eq!(divi_ui8(0, 72), 0); + assert_eq!(divi_ui8(0, 100), 0); + assert_eq!(divi_ui8(0, 162), 0); + assert_eq!(divi_ui8(0, 254), 0); + assert_eq!(divi_ui8(0, 255), 0); + assert_eq!(divi_ui8(1, 2), 0); + assert_eq!(divi_ui8(1, 3), 0); + assert_eq!(divi_ui8(1, 4), 0); + assert_eq!(divi_ui8(1, 72), 0); + assert_eq!(divi_ui8(1, 100), 0); + assert_eq!(divi_ui8(1, 162), 0); + assert_eq!(divi_ui8(1, 254), 0); + assert_eq!(divi_ui8(1, 255), 0); + assert_eq!(divi_ui8(2, 3), 0); + assert_eq!(divi_ui8(2, 4), 0); + assert_eq!(divi_ui8(2, 72), 0); + assert_eq!(divi_ui8(2, 100), 0); + assert_eq!(divi_ui8(2, 162), 0); + assert_eq!(divi_ui8(2, 254), 0); + assert_eq!(divi_ui8(2, 255), 0); + assert_eq!(divi_ui8(3, 4), 0); + assert_eq!(divi_ui8(3, 72), 0); + assert_eq!(divi_ui8(3, 100), 0); + assert_eq!(divi_ui8(3, 162), 0); + assert_eq!(divi_ui8(3, 254), 0); + assert_eq!(divi_ui8(3, 255), 0); + assert_eq!(divi_ui8(4, 72), 0); + assert_eq!(divi_ui8(4, 100), 0); + assert_eq!(divi_ui8(4, 162), 0); + assert_eq!(divi_ui8(4, 254), 0); + assert_eq!(divi_ui8(4, 255), 0); + assert_eq!(divi_ui8(72, 100), 0); + assert_eq!(divi_ui8(72, 162), 0); + assert_eq!(divi_ui8(72, 254), 0); + assert_eq!(divi_ui8(72, 255), 0); + assert_eq!(divi_ui8(100, 162), 0); + assert_eq!(divi_ui8(100, 254), 0); + assert_eq!(divi_ui8(100, 255), 0); + assert_eq!(divi_ui8(162, 254), 0); + assert_eq!(divi_ui8(162, 255), 0); + assert_eq!(divi_ui8(254, 255), 0); + assert_eq!(divi_ui8(1, 1), 1); + assert_eq!(divi_ui8(2, 2), 1); + assert_eq!(divi_ui8(3, 2), 1); + assert_eq!(divi_ui8(3, 3), 1); + assert_eq!(divi_ui8(4, 3), 1); + assert_eq!(divi_ui8(4, 4), 1); + assert_eq!(divi_ui8(72, 72), 1); + assert_eq!(divi_ui8(100, 72), 1); + assert_eq!(divi_ui8(100, 100), 1); + assert_eq!(divi_ui8(162, 100), 1); + assert_eq!(divi_ui8(162, 162), 1); + assert_eq!(divi_ui8(254, 162), 1); + assert_eq!(divi_ui8(254, 254), 1); + assert_eq!(divi_ui8(255, 162), 1); + assert_eq!(divi_ui8(255, 254), 1); + assert_eq!(divi_ui8(255, 255), 1); + assert_eq!(divi_ui8(2, 1), 2); + assert_eq!(divi_ui8(4, 2), 2); + assert_eq!(divi_ui8(162, 72), 2); + assert_eq!(divi_ui8(254, 100), 2); + assert_eq!(divi_ui8(255, 100), 2); + assert_eq!(divi_ui8(3, 1), 3); + assert_eq!(divi_ui8(254, 72), 3); + assert_eq!(divi_ui8(255, 72), 3); + assert_eq!(divi_ui8(4, 1), 4); + assert_eq!(divi_ui8(72, 4), 18); + assert_eq!(divi_ui8(72, 3), 24); + assert_eq!(divi_ui8(100, 4), 25); + assert_eq!(divi_ui8(100, 3), 33); + assert_eq!(divi_ui8(72, 2), 36); + assert_eq!(divi_ui8(162, 4), 40); + assert_eq!(divi_ui8(100, 2), 50); + assert_eq!(divi_ui8(162, 3), 54); + assert_eq!(divi_ui8(254, 4), 63); + assert_eq!(divi_ui8(255, 4), 63); + assert_eq!(divi_ui8(72, 1), 72); + assert_eq!(divi_ui8(162, 2), 81); + assert_eq!(divi_ui8(254, 3), 84); + assert_eq!(divi_ui8(255, 3), 85); + assert_eq!(divi_ui8(100, 1), 100); + assert_eq!(divi_ui8(254, 2), 127); + assert_eq!(divi_ui8(255, 2), 127); + assert_eq!(divi_ui8(162, 1), 162); + assert_eq!(divi_ui8(254, 1), 254); + assert_eq!(divi_ui8(255, 1), 255); + assert_eq!(muli_si16(-32768, 1), -32768); + assert_eq!(muli_si16(1, -32768), -32768); + assert_eq!(muli_si16(-32767, 1), -32767); + assert_eq!(muli_si16(1, -32767), -32767); + assert_eq!(muli_si16(-32547, 1), -32547); + assert_eq!(muli_si16(1, -32547), -32547); + assert_eq!(muli_si16(-32768, 0), 0); + assert_eq!(muli_si16(-32767, 0), 0); + assert_eq!(muli_si16(-32547, 0), 0); + assert_eq!(muli_si16(0, -32768), 0); + assert_eq!(muli_si16(0, -32767), 0); + assert_eq!(muli_si16(0, -32547), 0); + assert_eq!(muli_si16(0, 0), 0); + assert_eq!(muli_si16(0, 1), 0); + assert_eq!(muli_si16(0, 2), 0); + assert_eq!(muli_si16(0, 3), 0); + assert_eq!(muli_si16(0, 4), 0); + assert_eq!(muli_si16(0, 10486), 0); + assert_eq!(muli_si16(0, 16514), 0); + assert_eq!(muli_si16(0, 32766), 0); + assert_eq!(muli_si16(0, 32767), 0); + assert_eq!(muli_si16(1, 0), 0); + assert_eq!(muli_si16(2, 0), 0); + assert_eq!(muli_si16(3, 0), 0); + assert_eq!(muli_si16(4, 0), 0); + assert_eq!(muli_si16(10486, 0), 0); + assert_eq!(muli_si16(16514, 0), 0); + assert_eq!(muli_si16(32766, 0), 0); + assert_eq!(muli_si16(32767, 0), 0); + assert_eq!(muli_si16(1, 1), 1); + assert_eq!(muli_si16(1, 2), 2); + assert_eq!(muli_si16(2, 1), 2); + assert_eq!(muli_si16(1, 3), 3); + assert_eq!(muli_si16(3, 1), 3); + assert_eq!(muli_si16(1, 4), 4); + assert_eq!(muli_si16(2, 2), 4); + assert_eq!(muli_si16(4, 1), 4); + assert_eq!(muli_si16(2, 3), 6); + assert_eq!(muli_si16(3, 2), 6); + assert_eq!(muli_si16(2, 4), 8); + assert_eq!(muli_si16(4, 2), 8); + assert_eq!(muli_si16(3, 3), 9); + assert_eq!(muli_si16(3, 4), 12); + assert_eq!(muli_si16(4, 3), 12); + assert_eq!(muli_si16(4, 4), 16); + assert_eq!(muli_si16(1, 10486), 10486); + assert_eq!(muli_si16(10486, 1), 10486); + assert_eq!(muli_si16(1, 16514), 16514); + assert_eq!(muli_si16(16514, 1), 16514); + assert_eq!(muli_si16(2, 10486), 20972); + assert_eq!(muli_si16(10486, 2), 20972); + assert_eq!(muli_si16(3, 10486), 31458); + assert_eq!(muli_si16(10486, 3), 31458); + assert_eq!(muli_si16(1, 32766), 32766); + assert_eq!(muli_si16(32766, 1), 32766); + assert_eq!(muli_si16(1, 32767), 32767); + assert_eq!(muli_si16(32767, 1), 32767); + assert_eq!(muli_si32(-2147483648, 1), -2147483648); + assert_eq!(muli_si32(1, -2147483648), -2147483648); + assert_eq!(muli_si32(-2147483647, 1), -2147483647); + assert_eq!(muli_si32(1, -2147483647), -2147483647); + assert_eq!(muli_si32(-1035405763, 2), -2070811526); + assert_eq!(muli_si32(2, -1035405763), -2070811526); + assert_eq!(muli_si32(-1713183800, 1), -1713183800); + assert_eq!(muli_si32(1, -1713183800), -1713183800); + assert_eq!(muli_si32(-1252582164, 1), -1252582164); + assert_eq!(muli_si32(1, -1252582164), -1252582164); + assert_eq!(muli_si32(-1035405763, 1), -1035405763); + assert_eq!(muli_si32(1, -1035405763), -1035405763); + assert_eq!(muli_si32(-2147483648, 0), 0); + assert_eq!(muli_si32(-2147483647, 0), 0); + assert_eq!(muli_si32(-1713183800, 0), 0); + assert_eq!(muli_si32(-1252582164, 0), 0); + assert_eq!(muli_si32(-1035405763, 0), 0); + assert_eq!(muli_si32(0, -2147483648), 0); + assert_eq!(muli_si32(0, -2147483647), 0); + assert_eq!(muli_si32(0, -1713183800), 0); + assert_eq!(muli_si32(0, -1252582164), 0); + assert_eq!(muli_si32(0, -1035405763), 0); + assert_eq!(muli_si32(0, 0), 0); + assert_eq!(muli_si32(0, 1), 0); + assert_eq!(muli_si32(0, 2), 0); + assert_eq!(muli_si32(0, 3), 0); + assert_eq!(muli_si32(0, 4), 0); + assert_eq!(muli_si32(0, 2147483646), 0); + assert_eq!(muli_si32(0, 2147483647), 0); + assert_eq!(muli_si32(1, 0), 0); + assert_eq!(muli_si32(2, 0), 0); + assert_eq!(muli_si32(3, 0), 0); + assert_eq!(muli_si32(4, 0), 0); + assert_eq!(muli_si32(2147483646, 0), 0); + assert_eq!(muli_si32(2147483647, 0), 0); + assert_eq!(muli_si32(1, 1), 1); + assert_eq!(muli_si32(1, 2), 2); + assert_eq!(muli_si32(2, 1), 2); + assert_eq!(muli_si32(1, 3), 3); + assert_eq!(muli_si32(3, 1), 3); + assert_eq!(muli_si32(1, 4), 4); + assert_eq!(muli_si32(2, 2), 4); + assert_eq!(muli_si32(4, 1), 4); + assert_eq!(muli_si32(2, 3), 6); + assert_eq!(muli_si32(3, 2), 6); + assert_eq!(muli_si32(2, 4), 8); + assert_eq!(muli_si32(4, 2), 8); + assert_eq!(muli_si32(3, 3), 9); + assert_eq!(muli_si32(3, 4), 12); + assert_eq!(muli_si32(4, 3), 12); + assert_eq!(muli_si32(4, 4), 16); + assert_eq!(muli_si32(1, 2147483646), 2147483646); + assert_eq!(muli_si32(2147483646, 1), 2147483646); + assert_eq!(muli_si32(1, 2147483647), 2147483647); + assert_eq!(muli_si32(2147483647, 1), 2147483647); + assert_eq!(muli_si64(-9223372036854775808, 1), -9223372036854775808); + assert_eq!(muli_si64(1, -9223372036854775808), -9223372036854775808); + assert_eq!(muli_si64(-9223372036854775807, 1), -9223372036854775807); + assert_eq!(muli_si64(1, -9223372036854775807), -9223372036854775807); + assert_eq!(muli_si64(-1741927215160008704, 4), -6967708860640034816); + assert_eq!(muli_si64(4, -1741927215160008704), -6967708860640034816); + assert_eq!(muli_si64(-1328271339354574848, 4), -5313085357418299392); + assert_eq!(muli_si64(4, -1328271339354574848), -5313085357418299392); + assert_eq!(muli_si64(-1741927215160008704, 3), -5225781645480026112); + assert_eq!(muli_si64(3, -1741927215160008704), -5225781645480026112); + assert_eq!(muli_si64(-1328271339354574848, 3), -3984814018063724544); + assert_eq!(muli_si64(3, -1328271339354574848), -3984814018063724544); + assert_eq!(muli_si64(-1741927215160008704, 2), -3483854430320017408); + assert_eq!(muli_si64(2, -1741927215160008704), -3483854430320017408); + assert_eq!(muli_si64(-1328271339354574848, 2), -2656542678709149696); + assert_eq!(muli_si64(2, -1328271339354574848), -2656542678709149696); + assert_eq!(muli_si64(-1741927215160008704, 1), -1741927215160008704); + assert_eq!(muli_si64(1, -1741927215160008704), -1741927215160008704); + assert_eq!(muli_si64(-1328271339354574848, 1), -1328271339354574848); + assert_eq!(muli_si64(1, -1328271339354574848), -1328271339354574848); + assert_eq!(muli_si64(-9223372036854775808, 0), 0); + assert_eq!(muli_si64(-9223372036854775807, 0), 0); + assert_eq!(muli_si64(-1741927215160008704, 0), 0); + assert_eq!(muli_si64(-1328271339354574848, 0), 0); + assert_eq!(muli_si64(0, -9223372036854775808), 0); + assert_eq!(muli_si64(0, -9223372036854775807), 0); + assert_eq!(muli_si64(0, -1741927215160008704), 0); + assert_eq!(muli_si64(0, -1328271339354574848), 0); + assert_eq!(muli_si64(0, 0), 0); + assert_eq!(muli_si64(0, 1), 0); + assert_eq!(muli_si64(0, 2), 0); + assert_eq!(muli_si64(0, 3), 0); + assert_eq!(muli_si64(0, 4), 0); + assert_eq!(muli_si64(0, 5577148965131116544), 0); + assert_eq!(muli_si64(0, 9223372036854775806), 0); + assert_eq!(muli_si64(0, 9223372036854775807), 0); + assert_eq!(muli_si64(1, 0), 0); + assert_eq!(muli_si64(2, 0), 0); + assert_eq!(muli_si64(3, 0), 0); + assert_eq!(muli_si64(4, 0), 0); + assert_eq!(muli_si64(5577148965131116544, 0), 0); + assert_eq!(muli_si64(9223372036854775806, 0), 0); + assert_eq!(muli_si64(9223372036854775807, 0), 0); + assert_eq!(muli_si64(1, 1), 1); + assert_eq!(muli_si64(1, 2), 2); + assert_eq!(muli_si64(2, 1), 2); + assert_eq!(muli_si64(1, 3), 3); + assert_eq!(muli_si64(3, 1), 3); + assert_eq!(muli_si64(1, 4), 4); + assert_eq!(muli_si64(2, 2), 4); + assert_eq!(muli_si64(4, 1), 4); + assert_eq!(muli_si64(2, 3), 6); + assert_eq!(muli_si64(3, 2), 6); + assert_eq!(muli_si64(2, 4), 8); + assert_eq!(muli_si64(4, 2), 8); + assert_eq!(muli_si64(3, 3), 9); + assert_eq!(muli_si64(3, 4), 12); + assert_eq!(muli_si64(4, 3), 12); + assert_eq!(muli_si64(4, 4), 16); + assert_eq!(muli_si64(1, 5577148965131116544), 5577148965131116544); + assert_eq!(muli_si64(5577148965131116544, 1), 5577148965131116544); + assert_eq!(muli_si64(1, 9223372036854775806), 9223372036854775806); + assert_eq!(muli_si64(9223372036854775806, 1), 9223372036854775806); + assert_eq!(muli_si64(1, 9223372036854775807), 9223372036854775807); + assert_eq!(muli_si64(9223372036854775807, 1), 9223372036854775807); + assert_eq!(muli_si8(-128, 1), -128); + assert_eq!(muli_si8(1, -128), -128); + assert_eq!(muli_si8(-127, 1), -127); + assert_eq!(muli_si8(1, -127), -127); + assert_eq!(muli_si8(-128, 0), 0); + assert_eq!(muli_si8(-127, 0), 0); + assert_eq!(muli_si8(0, -128), 0); + assert_eq!(muli_si8(0, -127), 0); + assert_eq!(muli_si8(0, 0), 0); + assert_eq!(muli_si8(0, 1), 0); + assert_eq!(muli_si8(0, 2), 0); + assert_eq!(muli_si8(0, 3), 0); + assert_eq!(muli_si8(0, 4), 0); + assert_eq!(muli_si8(0, 16), 0); + assert_eq!(muli_si8(0, 126), 0); + assert_eq!(muli_si8(0, 127), 0); + assert_eq!(muli_si8(1, 0), 0); + assert_eq!(muli_si8(2, 0), 0); + assert_eq!(muli_si8(3, 0), 0); + assert_eq!(muli_si8(4, 0), 0); + assert_eq!(muli_si8(16, 0), 0); + assert_eq!(muli_si8(126, 0), 0); + assert_eq!(muli_si8(127, 0), 0); + assert_eq!(muli_si8(1, 1), 1); + assert_eq!(muli_si8(1, 2), 2); + assert_eq!(muli_si8(2, 1), 2); + assert_eq!(muli_si8(1, 3), 3); + assert_eq!(muli_si8(3, 1), 3); + assert_eq!(muli_si8(1, 4), 4); + assert_eq!(muli_si8(2, 2), 4); + assert_eq!(muli_si8(4, 1), 4); + assert_eq!(muli_si8(2, 3), 6); + assert_eq!(muli_si8(3, 2), 6); + assert_eq!(muli_si8(2, 4), 8); + assert_eq!(muli_si8(4, 2), 8); + assert_eq!(muli_si8(3, 3), 9); + assert_eq!(muli_si8(3, 4), 12); + assert_eq!(muli_si8(4, 3), 12); + assert_eq!(muli_si8(1, 16), 16); + assert_eq!(muli_si8(4, 4), 16); + assert_eq!(muli_si8(16, 1), 16); + assert_eq!(muli_si8(2, 16), 32); + assert_eq!(muli_si8(16, 2), 32); + assert_eq!(muli_si8(3, 16), 48); + assert_eq!(muli_si8(16, 3), 48); + assert_eq!(muli_si8(4, 16), 64); + assert_eq!(muli_si8(16, 4), 64); + assert_eq!(muli_si8(1, 126), 126); + assert_eq!(muli_si8(126, 1), 126); + assert_eq!(muli_si8(1, 127), 127); + assert_eq!(muli_si8(127, 1), 127); + assert_eq!(muli_ui16(0, 0), 0); + assert_eq!(muli_ui16(0, 1), 0); + assert_eq!(muli_ui16(0, 2), 0); + assert_eq!(muli_ui16(0, 3), 0); + assert_eq!(muli_ui16(0, 4), 0); + assert_eq!(muli_ui16(0, 1717), 0); + assert_eq!(muli_ui16(0, 17988), 0); + assert_eq!(muli_ui16(0, 65096), 0); + assert_eq!(muli_ui16(0, 65534), 0); + assert_eq!(muli_ui16(0, 65535), 0); + assert_eq!(muli_ui16(1, 0), 0); + assert_eq!(muli_ui16(2, 0), 0); + assert_eq!(muli_ui16(3, 0), 0); + assert_eq!(muli_ui16(4, 0), 0); + assert_eq!(muli_ui16(1717, 0), 0); + assert_eq!(muli_ui16(17988, 0), 0); + assert_eq!(muli_ui16(65096, 0), 0); + assert_eq!(muli_ui16(65534, 0), 0); + assert_eq!(muli_ui16(65535, 0), 0); + assert_eq!(muli_ui16(1, 1), 1); + assert_eq!(muli_ui16(1, 2), 2); + assert_eq!(muli_ui16(2, 1), 2); + assert_eq!(muli_ui16(1, 3), 3); + assert_eq!(muli_ui16(3, 1), 3); + assert_eq!(muli_ui16(1, 4), 4); + assert_eq!(muli_ui16(2, 2), 4); + assert_eq!(muli_ui16(4, 1), 4); + assert_eq!(muli_ui16(2, 3), 6); + assert_eq!(muli_ui16(3, 2), 6); + assert_eq!(muli_ui16(2, 4), 8); + assert_eq!(muli_ui16(4, 2), 8); + assert_eq!(muli_ui16(3, 3), 9); + assert_eq!(muli_ui16(3, 4), 12); + assert_eq!(muli_ui16(4, 3), 12); + assert_eq!(muli_ui16(4, 4), 16); + assert_eq!(muli_ui16(1, 1717), 1717); + assert_eq!(muli_ui16(1717, 1), 1717); + assert_eq!(muli_ui16(2, 1717), 3434); + assert_eq!(muli_ui16(1717, 2), 3434); + assert_eq!(muli_ui16(3, 1717), 5151); + assert_eq!(muli_ui16(1717, 3), 5151); + assert_eq!(muli_ui16(4, 1717), 6868); + assert_eq!(muli_ui16(1717, 4), 6868); + assert_eq!(muli_ui16(1, 17988), 17988); + assert_eq!(muli_ui16(17988, 1), 17988); + assert_eq!(muli_ui16(2, 17988), 35976); + assert_eq!(muli_ui16(17988, 2), 35976); + assert_eq!(muli_ui16(3, 17988), 53964); + assert_eq!(muli_ui16(17988, 3), 53964); + assert_eq!(muli_ui16(1, 65096), 65096); + assert_eq!(muli_ui16(65096, 1), 65096); + assert_eq!(muli_ui16(1, 65534), 65534); + assert_eq!(muli_ui16(65534, 1), 65534); + assert_eq!(muli_ui16(1, 65535), 65535); + assert_eq!(muli_ui16(65535, 1), 65535); + assert_eq!(muli_ui32(0, 0), 0); + assert_eq!(muli_ui32(0, 1), 0); + assert_eq!(muli_ui32(0, 2), 0); + assert_eq!(muli_ui32(0, 3), 0); + assert_eq!(muli_ui32(0, 4), 0); + assert_eq!(muli_ui32(0, 2119154652), 0); + assert_eq!(muli_ui32(0, 3002788344), 0); + assert_eq!(muli_ui32(0, 3482297128), 0); + assert_eq!(muli_ui32(0, 4294967294), 0); + assert_eq!(muli_ui32(0, 4294967295), 0); + assert_eq!(muli_ui32(1, 0), 0); + assert_eq!(muli_ui32(2, 0), 0); + assert_eq!(muli_ui32(3, 0), 0); + assert_eq!(muli_ui32(4, 0), 0); + assert_eq!(muli_ui32(2119154652, 0), 0); + assert_eq!(muli_ui32(3002788344, 0), 0); + assert_eq!(muli_ui32(3482297128, 0), 0); + assert_eq!(muli_ui32(4294967294, 0), 0); + assert_eq!(muli_ui32(4294967295, 0), 0); + assert_eq!(muli_ui32(1, 1), 1); + assert_eq!(muli_ui32(1, 2), 2); + assert_eq!(muli_ui32(2, 1), 2); + assert_eq!(muli_ui32(1, 3), 3); + assert_eq!(muli_ui32(3, 1), 3); + assert_eq!(muli_ui32(1, 4), 4); + assert_eq!(muli_ui32(2, 2), 4); + assert_eq!(muli_ui32(4, 1), 4); + assert_eq!(muli_ui32(2, 3), 6); + assert_eq!(muli_ui32(3, 2), 6); + assert_eq!(muli_ui32(2, 4), 8); + assert_eq!(muli_ui32(4, 2), 8); + assert_eq!(muli_ui32(3, 3), 9); + assert_eq!(muli_ui32(3, 4), 12); + assert_eq!(muli_ui32(4, 3), 12); + assert_eq!(muli_ui32(4, 4), 16); + assert_eq!(muli_ui32(1, 2119154652), 2119154652); + assert_eq!(muli_ui32(2119154652, 1), 2119154652); + assert_eq!(muli_ui32(1, 3002788344), 3002788344); + assert_eq!(muli_ui32(3002788344, 1), 3002788344); + assert_eq!(muli_ui32(1, 3482297128), 3482297128); + assert_eq!(muli_ui32(3482297128, 1), 3482297128); + assert_eq!(muli_ui32(2, 2119154652), 4238309304); + assert_eq!(muli_ui32(2119154652, 2), 4238309304); + assert_eq!(muli_ui32(1, 4294967294), 4294967294); + assert_eq!(muli_ui32(4294967294, 1), 4294967294); + assert_eq!(muli_ui32(1, 4294967295), 4294967295); + assert_eq!(muli_ui32(4294967295, 1), 4294967295); + assert_eq!(muli_ui64(0, 0), 0); + assert_eq!(muli_ui64(0, 1), 0); + assert_eq!(muli_ui64(0, 2), 0); + assert_eq!(muli_ui64(0, 3), 0); + assert_eq!(muli_ui64(0, 4), 0); + assert_eq!(muli_ui64(0, 191084152064409600), 0); + assert_eq!(muli_ui64(0, 11015955194427482112), 0); + assert_eq!(muli_ui64(0, 16990600415051759616), 0); + assert_eq!(muli_ui64(0, 18446744073709551614), 0); + assert_eq!(muli_ui64(0, 18446744073709551615), 0); + assert_eq!(muli_ui64(1, 0), 0); + assert_eq!(muli_ui64(2, 0), 0); + assert_eq!(muli_ui64(3, 0), 0); + assert_eq!(muli_ui64(4, 0), 0); + assert_eq!(muli_ui64(191084152064409600, 0), 0); + assert_eq!(muli_ui64(11015955194427482112, 0), 0); + assert_eq!(muli_ui64(16990600415051759616, 0), 0); + assert_eq!(muli_ui64(18446744073709551614, 0), 0); + assert_eq!(muli_ui64(18446744073709551615, 0), 0); + assert_eq!(muli_ui64(1, 1), 1); + assert_eq!(muli_ui64(1, 2), 2); + assert_eq!(muli_ui64(2, 1), 2); + assert_eq!(muli_ui64(1, 3), 3); + assert_eq!(muli_ui64(3, 1), 3); + assert_eq!(muli_ui64(1, 4), 4); + assert_eq!(muli_ui64(2, 2), 4); + assert_eq!(muli_ui64(4, 1), 4); + assert_eq!(muli_ui64(2, 3), 6); + assert_eq!(muli_ui64(3, 2), 6); + assert_eq!(muli_ui64(2, 4), 8); + assert_eq!(muli_ui64(4, 2), 8); + assert_eq!(muli_ui64(3, 3), 9); + assert_eq!(muli_ui64(3, 4), 12); + assert_eq!(muli_ui64(4, 3), 12); + assert_eq!(muli_ui64(4, 4), 16); + assert_eq!(muli_ui64(1, 191084152064409600), 191084152064409600); + assert_eq!(muli_ui64(191084152064409600, 1), 191084152064409600); + assert_eq!(muli_ui64(2, 191084152064409600), 382168304128819200); + assert_eq!(muli_ui64(191084152064409600, 2), 382168304128819200); + assert_eq!(muli_ui64(3, 191084152064409600), 573252456193228800); + assert_eq!(muli_ui64(191084152064409600, 3), 573252456193228800); + assert_eq!(muli_ui64(4, 191084152064409600), 764336608257638400); + assert_eq!(muli_ui64(191084152064409600, 4), 764336608257638400); + assert_eq!(muli_ui64(1, 11015955194427482112), 11015955194427482112); + assert_eq!(muli_ui64(11015955194427482112, 1), 11015955194427482112); + assert_eq!(muli_ui64(1, 16990600415051759616), 16990600415051759616); + assert_eq!(muli_ui64(16990600415051759616, 1), 16990600415051759616); + assert_eq!(muli_ui64(1, 18446744073709551614), 18446744073709551614); + assert_eq!(muli_ui64(18446744073709551614, 1), 18446744073709551614); + assert_eq!(muli_ui64(1, 18446744073709551615), 18446744073709551615); + assert_eq!(muli_ui64(18446744073709551615, 1), 18446744073709551615); + assert_eq!(muli_ui8(0, 0), 0); + assert_eq!(muli_ui8(0, 1), 0); + assert_eq!(muli_ui8(0, 2), 0); + assert_eq!(muli_ui8(0, 3), 0); + assert_eq!(muli_ui8(0, 4), 0); + assert_eq!(muli_ui8(0, 72), 0); + assert_eq!(muli_ui8(0, 100), 0); + assert_eq!(muli_ui8(0, 162), 0); + assert_eq!(muli_ui8(0, 254), 0); + assert_eq!(muli_ui8(0, 255), 0); + assert_eq!(muli_ui8(1, 0), 0); + assert_eq!(muli_ui8(2, 0), 0); + assert_eq!(muli_ui8(3, 0), 0); + assert_eq!(muli_ui8(4, 0), 0); + assert_eq!(muli_ui8(72, 0), 0); + assert_eq!(muli_ui8(100, 0), 0); + assert_eq!(muli_ui8(162, 0), 0); + assert_eq!(muli_ui8(254, 0), 0); + assert_eq!(muli_ui8(255, 0), 0); + assert_eq!(muli_ui8(1, 1), 1); + assert_eq!(muli_ui8(1, 2), 2); + assert_eq!(muli_ui8(2, 1), 2); + assert_eq!(muli_ui8(1, 3), 3); + assert_eq!(muli_ui8(3, 1), 3); + assert_eq!(muli_ui8(1, 4), 4); + assert_eq!(muli_ui8(2, 2), 4); + assert_eq!(muli_ui8(4, 1), 4); + assert_eq!(muli_ui8(2, 3), 6); + assert_eq!(muli_ui8(3, 2), 6); + assert_eq!(muli_ui8(2, 4), 8); + assert_eq!(muli_ui8(4, 2), 8); + assert_eq!(muli_ui8(3, 3), 9); + assert_eq!(muli_ui8(3, 4), 12); + assert_eq!(muli_ui8(4, 3), 12); + assert_eq!(muli_ui8(4, 4), 16); + assert_eq!(muli_ui8(1, 72), 72); + assert_eq!(muli_ui8(72, 1), 72); + assert_eq!(muli_ui8(1, 100), 100); + assert_eq!(muli_ui8(100, 1), 100); + assert_eq!(muli_ui8(2, 72), 144); + assert_eq!(muli_ui8(72, 2), 144); + assert_eq!(muli_ui8(1, 162), 162); + assert_eq!(muli_ui8(162, 1), 162); + assert_eq!(muli_ui8(2, 100), 200); + assert_eq!(muli_ui8(100, 2), 200); + assert_eq!(muli_ui8(3, 72), 216); + assert_eq!(muli_ui8(72, 3), 216); + assert_eq!(muli_ui8(1, 254), 254); + assert_eq!(muli_ui8(254, 1), 254); + assert_eq!(muli_ui8(1, 255), 255); + assert_eq!(muli_ui8(255, 1), 255); + assert_eq!(remi_si16(-32767, -32768), -32767); + assert_eq!(remi_si16(-32547, -32768), -32547); + assert_eq!(remi_si16(-32547, -32767), -32547); + assert_eq!(remi_si16(-32547, 32766), -32547); + assert_eq!(remi_si16(-32547, 32767), -32547); + assert_eq!(remi_si16(-32768, 16514), -16254); + assert_eq!(remi_si16(-32767, 16514), -16253); + assert_eq!(remi_si16(-32547, 16514), -16033); + assert_eq!(remi_si16(-32768, 10486), -1310); + assert_eq!(remi_si16(-32767, 10486), -1309); + assert_eq!(remi_si16(-32547, 10486), -1089); + assert_eq!(remi_si16(-32768, -32547), -221); + assert_eq!(remi_si16(-32767, -32547), -220); + assert_eq!(remi_si16(-32767, 4), -3); + assert_eq!(remi_si16(-32547, 4), -3); + assert_eq!(remi_si16(-32768, 3), -2); + assert_eq!(remi_si16(-32768, 32766), -2); + assert_eq!(remi_si16(-32768, -32767), -1); + assert_eq!(remi_si16(-32768, 32767), -1); + assert_eq!(remi_si16(-32767, 2), -1); + assert_eq!(remi_si16(-32767, 3), -1); + assert_eq!(remi_si16(-32767, 32766), -1); + assert_eq!(remi_si16(-32547, 2), -1); + assert_eq!(remi_si16(-32768, -32768), 0); + assert_eq!(remi_si16(-32768, 1), 0); + assert_eq!(remi_si16(-32768, 2), 0); + assert_eq!(remi_si16(-32768, 4), 0); + assert_eq!(remi_si16(-32767, -32767), 0); + assert_eq!(remi_si16(-32767, 1), 0); + assert_eq!(remi_si16(-32767, 32767), 0); + assert_eq!(remi_si16(-32547, -32547), 0); + assert_eq!(remi_si16(-32547, 1), 0); + assert_eq!(remi_si16(-32547, 3), 0); + assert_eq!(remi_si16(0, -32768), 0); + assert_eq!(remi_si16(0, -32767), 0); + assert_eq!(remi_si16(0, -32547), 0); + assert_eq!(remi_si16(0, 1), 0); + assert_eq!(remi_si16(0, 2), 0); + assert_eq!(remi_si16(0, 3), 0); + assert_eq!(remi_si16(0, 4), 0); + assert_eq!(remi_si16(0, 10486), 0); + assert_eq!(remi_si16(0, 16514), 0); + assert_eq!(remi_si16(0, 32766), 0); + assert_eq!(remi_si16(0, 32767), 0); + assert_eq!(remi_si16(1, 1), 0); + assert_eq!(remi_si16(2, 1), 0); + assert_eq!(remi_si16(2, 2), 0); + assert_eq!(remi_si16(3, 1), 0); + assert_eq!(remi_si16(3, 3), 0); + assert_eq!(remi_si16(4, 1), 0); + assert_eq!(remi_si16(4, 2), 0); + assert_eq!(remi_si16(4, 4), 0); + assert_eq!(remi_si16(10486, 1), 0); + assert_eq!(remi_si16(10486, 2), 0); + assert_eq!(remi_si16(10486, 10486), 0); + assert_eq!(remi_si16(16514, 1), 0); + assert_eq!(remi_si16(16514, 2), 0); + assert_eq!(remi_si16(16514, 16514), 0); + assert_eq!(remi_si16(32766, 1), 0); + assert_eq!(remi_si16(32766, 2), 0); + assert_eq!(remi_si16(32766, 3), 0); + assert_eq!(remi_si16(32766, 32766), 0); + assert_eq!(remi_si16(32767, -32767), 0); + assert_eq!(remi_si16(32767, 1), 0); + assert_eq!(remi_si16(32767, 32767), 0); + assert_eq!(remi_si16(1, -32768), 1); + assert_eq!(remi_si16(1, -32767), 1); + assert_eq!(remi_si16(1, -32547), 1); + assert_eq!(remi_si16(1, 2), 1); + assert_eq!(remi_si16(1, 3), 1); + assert_eq!(remi_si16(1, 4), 1); + assert_eq!(remi_si16(1, 10486), 1); + assert_eq!(remi_si16(1, 16514), 1); + assert_eq!(remi_si16(1, 32766), 1); + assert_eq!(remi_si16(1, 32767), 1); + assert_eq!(remi_si16(3, 2), 1); + assert_eq!(remi_si16(4, 3), 1); + assert_eq!(remi_si16(10486, 3), 1); + assert_eq!(remi_si16(32767, 2), 1); + assert_eq!(remi_si16(32767, 3), 1); + assert_eq!(remi_si16(32767, 32766), 1); + assert_eq!(remi_si16(2, -32768), 2); + assert_eq!(remi_si16(2, -32767), 2); + assert_eq!(remi_si16(2, -32547), 2); + assert_eq!(remi_si16(2, 3), 2); + assert_eq!(remi_si16(2, 4), 2); + assert_eq!(remi_si16(2, 10486), 2); + assert_eq!(remi_si16(2, 16514), 2); + assert_eq!(remi_si16(2, 32766), 2); + assert_eq!(remi_si16(2, 32767), 2); + assert_eq!(remi_si16(10486, 4), 2); + assert_eq!(remi_si16(16514, 3), 2); + assert_eq!(remi_si16(16514, 4), 2); + assert_eq!(remi_si16(32766, 4), 2); + assert_eq!(remi_si16(3, -32768), 3); + assert_eq!(remi_si16(3, -32767), 3); + assert_eq!(remi_si16(3, -32547), 3); + assert_eq!(remi_si16(3, 4), 3); + assert_eq!(remi_si16(3, 10486), 3); + assert_eq!(remi_si16(3, 16514), 3); + assert_eq!(remi_si16(3, 32766), 3); + assert_eq!(remi_si16(3, 32767), 3); + assert_eq!(remi_si16(32767, 4), 3); + assert_eq!(remi_si16(4, -32768), 4); + assert_eq!(remi_si16(4, -32767), 4); + assert_eq!(remi_si16(4, -32547), 4); + assert_eq!(remi_si16(4, 10486), 4); + assert_eq!(remi_si16(4, 16514), 4); + assert_eq!(remi_si16(4, 32766), 4); + assert_eq!(remi_si16(4, 32767), 4); + assert_eq!(remi_si16(32766, -32547), 219); + assert_eq!(remi_si16(32767, -32547), 220); + assert_eq!(remi_si16(32766, 10486), 1308); + assert_eq!(remi_si16(32767, 10486), 1309); + assert_eq!(remi_si16(16514, 10486), 6028); + assert_eq!(remi_si16(10486, -32768), 10486); + assert_eq!(remi_si16(10486, -32767), 10486); + assert_eq!(remi_si16(10486, -32547), 10486); + assert_eq!(remi_si16(10486, 16514), 10486); + assert_eq!(remi_si16(10486, 32766), 10486); + assert_eq!(remi_si16(10486, 32767), 10486); + assert_eq!(remi_si16(32766, 16514), 16252); + assert_eq!(remi_si16(32767, 16514), 16253); + assert_eq!(remi_si16(16514, -32768), 16514); + assert_eq!(remi_si16(16514, -32767), 16514); + assert_eq!(remi_si16(16514, -32547), 16514); + assert_eq!(remi_si16(16514, 32766), 16514); + assert_eq!(remi_si16(16514, 32767), 16514); + assert_eq!(remi_si16(32766, -32768), 32766); + assert_eq!(remi_si16(32766, -32767), 32766); + assert_eq!(remi_si16(32766, 32767), 32766); + assert_eq!(remi_si16(32767, -32768), 32767); + assert_eq!(remi_si32(-2147483647, -2147483648), -2147483647); + assert_eq!(remi_si32(-1713183800, -2147483648), -1713183800); + assert_eq!(remi_si32(-1713183800, -2147483647), -1713183800); + assert_eq!(remi_si32(-1713183800, 2147483646), -1713183800); + assert_eq!(remi_si32(-1713183800, 2147483647), -1713183800); + assert_eq!(remi_si32(-1252582164, -2147483648), -1252582164); + assert_eq!(remi_si32(-1252582164, -2147483647), -1252582164); + assert_eq!(remi_si32(-1252582164, -1713183800), -1252582164); + assert_eq!(remi_si32(-1252582164, 2147483646), -1252582164); + assert_eq!(remi_si32(-1252582164, 2147483647), -1252582164); + assert_eq!(remi_si32(-1035405763, -2147483648), -1035405763); + assert_eq!(remi_si32(-1035405763, -2147483647), -1035405763); + assert_eq!(remi_si32(-1035405763, -1713183800), -1035405763); + assert_eq!(remi_si32(-1035405763, -1252582164), -1035405763); + assert_eq!(remi_si32(-1035405763, 2147483646), -1035405763); + assert_eq!(remi_si32(-1035405763, 2147483647), -1035405763); + assert_eq!(remi_si32(-2147483648, -1252582164), -894901484); + assert_eq!(remi_si32(-2147483647, -1252582164), -894901483); + assert_eq!(remi_si32(-1713183800, -1035405763), -677778037); + assert_eq!(remi_si32(-1713183800, -1252582164), -460601636); + assert_eq!(remi_si32(-2147483648, -1713183800), -434299848); + assert_eq!(remi_si32(-2147483647, -1713183800), -434299847); + assert_eq!(remi_si32(-1252582164, -1035405763), -217176401); + assert_eq!(remi_si32(-2147483648, -1035405763), -76672122); + assert_eq!(remi_si32(-2147483647, -1035405763), -76672121); + assert_eq!(remi_si32(-2147483647, 4), -3); + assert_eq!(remi_si32(-1035405763, 4), -3); + assert_eq!(remi_si32(-2147483648, 3), -2); + assert_eq!(remi_si32(-2147483648, 2147483646), -2); + assert_eq!(remi_si32(-1713183800, 3), -2); + assert_eq!(remi_si32(-2147483648, -2147483647), -1); + assert_eq!(remi_si32(-2147483648, 2147483647), -1); + assert_eq!(remi_si32(-2147483647, 2), -1); + assert_eq!(remi_si32(-2147483647, 3), -1); + assert_eq!(remi_si32(-2147483647, 2147483646), -1); + assert_eq!(remi_si32(-1035405763, 2), -1); + assert_eq!(remi_si32(-1035405763, 3), -1); + assert_eq!(remi_si32(-2147483648, -2147483648), 0); + assert_eq!(remi_si32(-2147483648, 1), 0); + assert_eq!(remi_si32(-2147483648, 2), 0); + assert_eq!(remi_si32(-2147483648, 4), 0); + assert_eq!(remi_si32(-2147483647, -2147483647), 0); + assert_eq!(remi_si32(-2147483647, 1), 0); + assert_eq!(remi_si32(-2147483647, 2147483647), 0); + assert_eq!(remi_si32(-1713183800, -1713183800), 0); + assert_eq!(remi_si32(-1713183800, 1), 0); + assert_eq!(remi_si32(-1713183800, 2), 0); + assert_eq!(remi_si32(-1713183800, 4), 0); + assert_eq!(remi_si32(-1252582164, -1252582164), 0); + assert_eq!(remi_si32(-1252582164, 1), 0); + assert_eq!(remi_si32(-1252582164, 2), 0); + assert_eq!(remi_si32(-1252582164, 3), 0); + assert_eq!(remi_si32(-1252582164, 4), 0); + assert_eq!(remi_si32(-1035405763, -1035405763), 0); + assert_eq!(remi_si32(-1035405763, 1), 0); + assert_eq!(remi_si32(0, -2147483648), 0); + assert_eq!(remi_si32(0, -2147483647), 0); + assert_eq!(remi_si32(0, -1713183800), 0); + assert_eq!(remi_si32(0, -1252582164), 0); + assert_eq!(remi_si32(0, -1035405763), 0); + assert_eq!(remi_si32(0, 1), 0); + assert_eq!(remi_si32(0, 2), 0); + assert_eq!(remi_si32(0, 3), 0); + assert_eq!(remi_si32(0, 4), 0); + assert_eq!(remi_si32(0, 2147483646), 0); + assert_eq!(remi_si32(0, 2147483647), 0); + assert_eq!(remi_si32(1, 1), 0); + assert_eq!(remi_si32(2, 1), 0); + assert_eq!(remi_si32(2, 2), 0); + assert_eq!(remi_si32(3, 1), 0); + assert_eq!(remi_si32(3, 3), 0); + assert_eq!(remi_si32(4, 1), 0); + assert_eq!(remi_si32(4, 2), 0); + assert_eq!(remi_si32(4, 4), 0); + assert_eq!(remi_si32(2147483646, 1), 0); + assert_eq!(remi_si32(2147483646, 2), 0); + assert_eq!(remi_si32(2147483646, 3), 0); + assert_eq!(remi_si32(2147483646, 2147483646), 0); + assert_eq!(remi_si32(2147483647, -2147483647), 0); + assert_eq!(remi_si32(2147483647, 1), 0); + assert_eq!(remi_si32(2147483647, 2147483647), 0); + assert_eq!(remi_si32(1, -2147483648), 1); + assert_eq!(remi_si32(1, -2147483647), 1); + assert_eq!(remi_si32(1, -1713183800), 1); + assert_eq!(remi_si32(1, -1252582164), 1); + assert_eq!(remi_si32(1, -1035405763), 1); + assert_eq!(remi_si32(1, 2), 1); + assert_eq!(remi_si32(1, 3), 1); + assert_eq!(remi_si32(1, 4), 1); + assert_eq!(remi_si32(1, 2147483646), 1); + assert_eq!(remi_si32(1, 2147483647), 1); + assert_eq!(remi_si32(3, 2), 1); + assert_eq!(remi_si32(4, 3), 1); + assert_eq!(remi_si32(2147483647, 2), 1); + assert_eq!(remi_si32(2147483647, 3), 1); + assert_eq!(remi_si32(2147483647, 2147483646), 1); + assert_eq!(remi_si32(2, -2147483648), 2); + assert_eq!(remi_si32(2, -2147483647), 2); + assert_eq!(remi_si32(2, -1713183800), 2); + assert_eq!(remi_si32(2, -1252582164), 2); + assert_eq!(remi_si32(2, -1035405763), 2); + assert_eq!(remi_si32(2, 3), 2); + assert_eq!(remi_si32(2, 4), 2); + assert_eq!(remi_si32(2, 2147483646), 2); + assert_eq!(remi_si32(2, 2147483647), 2); + assert_eq!(remi_si32(2147483646, 4), 2); + assert_eq!(remi_si32(3, -2147483648), 3); + assert_eq!(remi_si32(3, -2147483647), 3); + assert_eq!(remi_si32(3, -1713183800), 3); + assert_eq!(remi_si32(3, -1252582164), 3); + assert_eq!(remi_si32(3, -1035405763), 3); + assert_eq!(remi_si32(3, 4), 3); + assert_eq!(remi_si32(3, 2147483646), 3); + assert_eq!(remi_si32(3, 2147483647), 3); + assert_eq!(remi_si32(2147483647, 4), 3); + assert_eq!(remi_si32(4, -2147483648), 4); + assert_eq!(remi_si32(4, -2147483647), 4); + assert_eq!(remi_si32(4, -1713183800), 4); + assert_eq!(remi_si32(4, -1252582164), 4); + assert_eq!(remi_si32(4, -1035405763), 4); + assert_eq!(remi_si32(4, 2147483646), 4); + assert_eq!(remi_si32(4, 2147483647), 4); + assert_eq!(remi_si32(2147483646, -1035405763), 76672120); + assert_eq!(remi_si32(2147483647, -1035405763), 76672121); + assert_eq!(remi_si32(2147483646, -1713183800), 434299846); + assert_eq!(remi_si32(2147483647, -1713183800), 434299847); + assert_eq!(remi_si32(2147483646, -1252582164), 894901482); + assert_eq!(remi_si32(2147483647, -1252582164), 894901483); + assert_eq!(remi_si32(2147483646, -2147483648), 2147483646); + assert_eq!(remi_si32(2147483646, -2147483647), 2147483646); + assert_eq!(remi_si32(2147483646, 2147483647), 2147483646); + assert_eq!(remi_si32(2147483647, -2147483648), 2147483647); + assert_eq!( + remi_si64(-9223372036854775807, -9223372036854775808), + -9223372036854775807 + ); + assert_eq!( + remi_si64(-9223372036854775808, 5577148965131116544), + -3646223071723659264 + ); + assert_eq!( + remi_si64(-9223372036854775807, 5577148965131116544), + -3646223071723659263 + ); + assert_eq!( + remi_si64(-1741927215160008704, -9223372036854775808), + -1741927215160008704 + ); + assert_eq!( + remi_si64(-1741927215160008704, -9223372036854775807), + -1741927215160008704 + ); + assert_eq!( + remi_si64(-1741927215160008704, 5577148965131116544), + -1741927215160008704 + ); + assert_eq!( + remi_si64(-1741927215160008704, 9223372036854775806), + -1741927215160008704 + ); + assert_eq!( + remi_si64(-1741927215160008704, 9223372036854775807), + -1741927215160008704 + ); + assert_eq!( + remi_si64(-1328271339354574848, -9223372036854775808), + -1328271339354574848 + ); + assert_eq!( + remi_si64(-1328271339354574848, -9223372036854775807), + -1328271339354574848 + ); + assert_eq!( + remi_si64(-1328271339354574848, -1741927215160008704), + -1328271339354574848 + ); + assert_eq!( + remi_si64(-1328271339354574848, 5577148965131116544), + -1328271339354574848 + ); + assert_eq!( + remi_si64(-1328271339354574848, 9223372036854775806), + -1328271339354574848 + ); + assert_eq!( + remi_si64(-1328271339354574848, 9223372036854775807), + -1328271339354574848 + ); + assert_eq!( + remi_si64(-9223372036854775808, -1328271339354574848), + -1253744000727326720 + ); + assert_eq!( + remi_si64(-9223372036854775807, -1328271339354574848), + -1253744000727326719 + ); + assert_eq!( + remi_si64(-9223372036854775808, -1741927215160008704), + -513735961054732288 + ); + assert_eq!( + remi_si64(-9223372036854775807, -1741927215160008704), + -513735961054732287 + ); + assert_eq!( + remi_si64(-1741927215160008704, -1328271339354574848), + -413655875805433856 + ); + assert_eq!(remi_si64(-9223372036854775807, 4), -3); + assert_eq!(remi_si64(-9223372036854775808, 3), -2); + assert_eq!(remi_si64(-9223372036854775808, 9223372036854775806), -2); + assert_eq!(remi_si64(-1741927215160008704, 3), -2); + assert_eq!(remi_si64(-9223372036854775808, -9223372036854775807), -1); + assert_eq!(remi_si64(-9223372036854775808, 9223372036854775807), -1); + assert_eq!(remi_si64(-9223372036854775807, 2), -1); + assert_eq!(remi_si64(-9223372036854775807, 3), -1); + assert_eq!(remi_si64(-9223372036854775807, 9223372036854775806), -1); + assert_eq!(remi_si64(-9223372036854775808, -9223372036854775808), 0); + assert_eq!(remi_si64(-9223372036854775808, 1), 0); + assert_eq!(remi_si64(-9223372036854775808, 2), 0); + assert_eq!(remi_si64(-9223372036854775808, 4), 0); + assert_eq!(remi_si64(-9223372036854775807, -9223372036854775807), 0); + assert_eq!(remi_si64(-9223372036854775807, 1), 0); + assert_eq!(remi_si64(-9223372036854775807, 9223372036854775807), 0); + assert_eq!(remi_si64(-1741927215160008704, -1741927215160008704), 0); + assert_eq!(remi_si64(-1741927215160008704, 1), 0); + assert_eq!(remi_si64(-1741927215160008704, 2), 0); + assert_eq!(remi_si64(-1741927215160008704, 4), 0); + assert_eq!(remi_si64(-1328271339354574848, -1328271339354574848), 0); + assert_eq!(remi_si64(-1328271339354574848, 1), 0); + assert_eq!(remi_si64(-1328271339354574848, 2), 0); + assert_eq!(remi_si64(-1328271339354574848, 3), 0); + assert_eq!(remi_si64(-1328271339354574848, 4), 0); + assert_eq!(remi_si64(0, -9223372036854775808), 0); + assert_eq!(remi_si64(0, -9223372036854775807), 0); + assert_eq!(remi_si64(0, -1741927215160008704), 0); + assert_eq!(remi_si64(0, -1328271339354574848), 0); + assert_eq!(remi_si64(0, 1), 0); + assert_eq!(remi_si64(0, 2), 0); + assert_eq!(remi_si64(0, 3), 0); + assert_eq!(remi_si64(0, 4), 0); + assert_eq!(remi_si64(0, 5577148965131116544), 0); + assert_eq!(remi_si64(0, 9223372036854775806), 0); + assert_eq!(remi_si64(0, 9223372036854775807), 0); + assert_eq!(remi_si64(1, 1), 0); + assert_eq!(remi_si64(2, 1), 0); + assert_eq!(remi_si64(2, 2), 0); + assert_eq!(remi_si64(3, 1), 0); + assert_eq!(remi_si64(3, 3), 0); + assert_eq!(remi_si64(4, 1), 0); + assert_eq!(remi_si64(4, 2), 0); + assert_eq!(remi_si64(4, 4), 0); + assert_eq!(remi_si64(5577148965131116544, 1), 0); + assert_eq!(remi_si64(5577148965131116544, 2), 0); + assert_eq!(remi_si64(5577148965131116544, 4), 0); + assert_eq!(remi_si64(5577148965131116544, 5577148965131116544), 0); + assert_eq!(remi_si64(9223372036854775806, 1), 0); + assert_eq!(remi_si64(9223372036854775806, 2), 0); + assert_eq!(remi_si64(9223372036854775806, 3), 0); + assert_eq!(remi_si64(9223372036854775806, 9223372036854775806), 0); + assert_eq!(remi_si64(9223372036854775807, -9223372036854775807), 0); + assert_eq!(remi_si64(9223372036854775807, 1), 0); + assert_eq!(remi_si64(9223372036854775807, 9223372036854775807), 0); + assert_eq!(remi_si64(1, -9223372036854775808), 1); + assert_eq!(remi_si64(1, -9223372036854775807), 1); + assert_eq!(remi_si64(1, -1741927215160008704), 1); + assert_eq!(remi_si64(1, -1328271339354574848), 1); + assert_eq!(remi_si64(1, 2), 1); + assert_eq!(remi_si64(1, 3), 1); + assert_eq!(remi_si64(1, 4), 1); + assert_eq!(remi_si64(1, 5577148965131116544), 1); + assert_eq!(remi_si64(1, 9223372036854775806), 1); + assert_eq!(remi_si64(1, 9223372036854775807), 1); + assert_eq!(remi_si64(3, 2), 1); + assert_eq!(remi_si64(4, 3), 1); + assert_eq!(remi_si64(9223372036854775807, 2), 1); + assert_eq!(remi_si64(9223372036854775807, 3), 1); + assert_eq!(remi_si64(9223372036854775807, 9223372036854775806), 1); + assert_eq!(remi_si64(2, -9223372036854775808), 2); + assert_eq!(remi_si64(2, -9223372036854775807), 2); + assert_eq!(remi_si64(2, -1741927215160008704), 2); + assert_eq!(remi_si64(2, -1328271339354574848), 2); + assert_eq!(remi_si64(2, 3), 2); + assert_eq!(remi_si64(2, 4), 2); + assert_eq!(remi_si64(2, 5577148965131116544), 2); + assert_eq!(remi_si64(2, 9223372036854775806), 2); + assert_eq!(remi_si64(2, 9223372036854775807), 2); + assert_eq!(remi_si64(5577148965131116544, 3), 2); + assert_eq!(remi_si64(9223372036854775806, 4), 2); + assert_eq!(remi_si64(3, -9223372036854775808), 3); + assert_eq!(remi_si64(3, -9223372036854775807), 3); + assert_eq!(remi_si64(3, -1741927215160008704), 3); + assert_eq!(remi_si64(3, -1328271339354574848), 3); + assert_eq!(remi_si64(3, 4), 3); + assert_eq!(remi_si64(3, 5577148965131116544), 3); + assert_eq!(remi_si64(3, 9223372036854775806), 3); + assert_eq!(remi_si64(3, 9223372036854775807), 3); + assert_eq!(remi_si64(9223372036854775807, 4), 3); + assert_eq!(remi_si64(4, -9223372036854775808), 4); + assert_eq!(remi_si64(4, -9223372036854775807), 4); + assert_eq!(remi_si64(4, -1741927215160008704), 4); + assert_eq!(remi_si64(4, -1328271339354574848), 4); + assert_eq!(remi_si64(4, 5577148965131116544), 4); + assert_eq!(remi_si64(4, 9223372036854775806), 4); + assert_eq!(remi_si64(4, 9223372036854775807), 4); + assert_eq!( + remi_si64(5577148965131116544, -1328271339354574848), + 264063607712817152 + ); + assert_eq!( + remi_si64(5577148965131116544, -1741927215160008704), + 351367319651090432 + ); + assert_eq!( + remi_si64(9223372036854775806, -1741927215160008704), + 513735961054732286 + ); + assert_eq!( + remi_si64(9223372036854775807, -1741927215160008704), + 513735961054732287 + ); + assert_eq!( + remi_si64(9223372036854775806, -1328271339354574848), + 1253744000727326718 + ); + assert_eq!( + remi_si64(9223372036854775807, -1328271339354574848), + 1253744000727326719 + ); + assert_eq!( + remi_si64(9223372036854775806, 5577148965131116544), + 3646223071723659262 + ); + assert_eq!( + remi_si64(9223372036854775807, 5577148965131116544), + 3646223071723659263 + ); + assert_eq!( + remi_si64(5577148965131116544, -9223372036854775808), + 5577148965131116544 + ); + assert_eq!( + remi_si64(5577148965131116544, -9223372036854775807), + 5577148965131116544 + ); + assert_eq!( + remi_si64(5577148965131116544, 9223372036854775806), + 5577148965131116544 + ); + assert_eq!( + remi_si64(5577148965131116544, 9223372036854775807), + 5577148965131116544 + ); + assert_eq!( + remi_si64(9223372036854775806, -9223372036854775808), + 9223372036854775806 + ); + assert_eq!( + remi_si64(9223372036854775806, -9223372036854775807), + 9223372036854775806 + ); + assert_eq!( + remi_si64(9223372036854775806, 9223372036854775807), + 9223372036854775806 + ); + assert_eq!( + remi_si64(9223372036854775807, -9223372036854775808), + 9223372036854775807 + ); + assert_eq!(remi_si8(-127, -128), -127); + assert_eq!(remi_si8(-127, 16), -15); + assert_eq!(remi_si8(-127, 4), -3); + assert_eq!(remi_si8(-128, 3), -2); + assert_eq!(remi_si8(-128, 126), -2); + assert_eq!(remi_si8(-128, -127), -1); + assert_eq!(remi_si8(-128, 127), -1); + assert_eq!(remi_si8(-127, 2), -1); + assert_eq!(remi_si8(-127, 3), -1); + assert_eq!(remi_si8(-127, 126), -1); + assert_eq!(remi_si8(-128, -128), 0); + assert_eq!(remi_si8(-128, 1), 0); + assert_eq!(remi_si8(-128, 2), 0); + assert_eq!(remi_si8(-128, 4), 0); + assert_eq!(remi_si8(-128, 16), 0); + assert_eq!(remi_si8(-127, -127), 0); + assert_eq!(remi_si8(-127, 1), 0); + assert_eq!(remi_si8(-127, 127), 0); + assert_eq!(remi_si8(0, -128), 0); + assert_eq!(remi_si8(0, -127), 0); + assert_eq!(remi_si8(0, 1), 0); + assert_eq!(remi_si8(0, 2), 0); + assert_eq!(remi_si8(0, 3), 0); + assert_eq!(remi_si8(0, 4), 0); + assert_eq!(remi_si8(0, 16), 0); + assert_eq!(remi_si8(0, 126), 0); + assert_eq!(remi_si8(0, 127), 0); + assert_eq!(remi_si8(1, 1), 0); + assert_eq!(remi_si8(2, 1), 0); + assert_eq!(remi_si8(2, 2), 0); + assert_eq!(remi_si8(3, 1), 0); + assert_eq!(remi_si8(3, 3), 0); + assert_eq!(remi_si8(4, 1), 0); + assert_eq!(remi_si8(4, 2), 0); + assert_eq!(remi_si8(4, 4), 0); + assert_eq!(remi_si8(16, 1), 0); + assert_eq!(remi_si8(16, 2), 0); + assert_eq!(remi_si8(16, 4), 0); + assert_eq!(remi_si8(16, 16), 0); + assert_eq!(remi_si8(126, 1), 0); + assert_eq!(remi_si8(126, 2), 0); + assert_eq!(remi_si8(126, 3), 0); + assert_eq!(remi_si8(126, 126), 0); + assert_eq!(remi_si8(127, -127), 0); + assert_eq!(remi_si8(127, 1), 0); + assert_eq!(remi_si8(127, 127), 0); + assert_eq!(remi_si8(1, -128), 1); + assert_eq!(remi_si8(1, -127), 1); + assert_eq!(remi_si8(1, 2), 1); + assert_eq!(remi_si8(1, 3), 1); + assert_eq!(remi_si8(1, 4), 1); + assert_eq!(remi_si8(1, 16), 1); + assert_eq!(remi_si8(1, 126), 1); + assert_eq!(remi_si8(1, 127), 1); + assert_eq!(remi_si8(3, 2), 1); + assert_eq!(remi_si8(4, 3), 1); + assert_eq!(remi_si8(16, 3), 1); + assert_eq!(remi_si8(127, 2), 1); + assert_eq!(remi_si8(127, 3), 1); + assert_eq!(remi_si8(127, 126), 1); + assert_eq!(remi_si8(2, -128), 2); + assert_eq!(remi_si8(2, -127), 2); + assert_eq!(remi_si8(2, 3), 2); + assert_eq!(remi_si8(2, 4), 2); + assert_eq!(remi_si8(2, 16), 2); + assert_eq!(remi_si8(2, 126), 2); + assert_eq!(remi_si8(2, 127), 2); + assert_eq!(remi_si8(126, 4), 2); + assert_eq!(remi_si8(3, -128), 3); + assert_eq!(remi_si8(3, -127), 3); + assert_eq!(remi_si8(3, 4), 3); + assert_eq!(remi_si8(3, 16), 3); + assert_eq!(remi_si8(3, 126), 3); + assert_eq!(remi_si8(3, 127), 3); + assert_eq!(remi_si8(127, 4), 3); + assert_eq!(remi_si8(4, -128), 4); + assert_eq!(remi_si8(4, -127), 4); + assert_eq!(remi_si8(4, 16), 4); + assert_eq!(remi_si8(4, 126), 4); + assert_eq!(remi_si8(4, 127), 4); + assert_eq!(remi_si8(126, 16), 14); + assert_eq!(remi_si8(127, 16), 15); + assert_eq!(remi_si8(16, -128), 16); + assert_eq!(remi_si8(16, -127), 16); + assert_eq!(remi_si8(16, 126), 16); + assert_eq!(remi_si8(16, 127), 16); + assert_eq!(remi_si8(126, -128), 126); + assert_eq!(remi_si8(126, -127), 126); + assert_eq!(remi_si8(126, 127), 126); + assert_eq!(remi_si8(127, -128), 127); + assert_eq!(remi_ui16(0, 1), 0); + assert_eq!(remi_ui16(0, 2), 0); + assert_eq!(remi_ui16(0, 3), 0); + assert_eq!(remi_ui16(0, 4), 0); + assert_eq!(remi_ui16(0, 1717), 0); + assert_eq!(remi_ui16(0, 17988), 0); + assert_eq!(remi_ui16(0, 65096), 0); + assert_eq!(remi_ui16(0, 65534), 0); + assert_eq!(remi_ui16(0, 65535), 0); + assert_eq!(remi_ui16(1, 1), 0); + assert_eq!(remi_ui16(2, 1), 0); + assert_eq!(remi_ui16(2, 2), 0); + assert_eq!(remi_ui16(3, 1), 0); + assert_eq!(remi_ui16(3, 3), 0); + assert_eq!(remi_ui16(4, 1), 0); + assert_eq!(remi_ui16(4, 2), 0); + assert_eq!(remi_ui16(4, 4), 0); + assert_eq!(remi_ui16(1717, 1), 0); + assert_eq!(remi_ui16(1717, 1717), 0); + assert_eq!(remi_ui16(17988, 1), 0); + assert_eq!(remi_ui16(17988, 2), 0); + assert_eq!(remi_ui16(17988, 3), 0); + assert_eq!(remi_ui16(17988, 4), 0); + assert_eq!(remi_ui16(17988, 17988), 0); + assert_eq!(remi_ui16(65096, 1), 0); + assert_eq!(remi_ui16(65096, 2), 0); + assert_eq!(remi_ui16(65096, 4), 0); + assert_eq!(remi_ui16(65096, 65096), 0); + assert_eq!(remi_ui16(65534, 1), 0); + assert_eq!(remi_ui16(65534, 2), 0); + assert_eq!(remi_ui16(65534, 65534), 0); + assert_eq!(remi_ui16(65535, 1), 0); + assert_eq!(remi_ui16(65535, 3), 0); + assert_eq!(remi_ui16(65535, 65535), 0); + assert_eq!(remi_ui16(1, 2), 1); + assert_eq!(remi_ui16(1, 3), 1); + assert_eq!(remi_ui16(1, 4), 1); + assert_eq!(remi_ui16(1, 1717), 1); + assert_eq!(remi_ui16(1, 17988), 1); + assert_eq!(remi_ui16(1, 65096), 1); + assert_eq!(remi_ui16(1, 65534), 1); + assert_eq!(remi_ui16(1, 65535), 1); + assert_eq!(remi_ui16(3, 2), 1); + assert_eq!(remi_ui16(4, 3), 1); + assert_eq!(remi_ui16(1717, 2), 1); + assert_eq!(remi_ui16(1717, 3), 1); + assert_eq!(remi_ui16(1717, 4), 1); + assert_eq!(remi_ui16(65535, 2), 1); + assert_eq!(remi_ui16(65535, 65534), 1); + assert_eq!(remi_ui16(2, 3), 2); + assert_eq!(remi_ui16(2, 4), 2); + assert_eq!(remi_ui16(2, 1717), 2); + assert_eq!(remi_ui16(2, 17988), 2); + assert_eq!(remi_ui16(2, 65096), 2); + assert_eq!(remi_ui16(2, 65534), 2); + assert_eq!(remi_ui16(2, 65535), 2); + assert_eq!(remi_ui16(65096, 3), 2); + assert_eq!(remi_ui16(65534, 3), 2); + assert_eq!(remi_ui16(65534, 4), 2); + assert_eq!(remi_ui16(3, 4), 3); + assert_eq!(remi_ui16(3, 1717), 3); + assert_eq!(remi_ui16(3, 17988), 3); + assert_eq!(remi_ui16(3, 65096), 3); + assert_eq!(remi_ui16(3, 65534), 3); + assert_eq!(remi_ui16(3, 65535), 3); + assert_eq!(remi_ui16(65535, 4), 3); + assert_eq!(remi_ui16(4, 1717), 4); + assert_eq!(remi_ui16(4, 17988), 4); + assert_eq!(remi_ui16(4, 65096), 4); + assert_eq!(remi_ui16(4, 65534), 4); + assert_eq!(remi_ui16(4, 65535), 4); + assert_eq!(remi_ui16(65534, 1717), 288); + assert_eq!(remi_ui16(65535, 1717), 289); + assert_eq!(remi_ui16(65534, 65096), 438); + assert_eq!(remi_ui16(65535, 65096), 439); + assert_eq!(remi_ui16(17988, 1717), 818); + assert_eq!(remi_ui16(65096, 1717), 1567); + assert_eq!(remi_ui16(1717, 17988), 1717); + assert_eq!(remi_ui16(1717, 65096), 1717); + assert_eq!(remi_ui16(1717, 65534), 1717); + assert_eq!(remi_ui16(1717, 65535), 1717); + assert_eq!(remi_ui16(65096, 17988), 11132); + assert_eq!(remi_ui16(65534, 17988), 11570); + assert_eq!(remi_ui16(65535, 17988), 11571); + assert_eq!(remi_ui16(17988, 65096), 17988); + assert_eq!(remi_ui16(17988, 65534), 17988); + assert_eq!(remi_ui16(17988, 65535), 17988); + assert_eq!(remi_ui16(65096, 65534), 65096); + assert_eq!(remi_ui16(65096, 65535), 65096); + assert_eq!(remi_ui16(65534, 65535), 65534); + assert_eq!(remi_ui32(0, 1), 0); + assert_eq!(remi_ui32(0, 2), 0); + assert_eq!(remi_ui32(0, 3), 0); + assert_eq!(remi_ui32(0, 4), 0); + assert_eq!(remi_ui32(0, 2119154652), 0); + assert_eq!(remi_ui32(0, 3002788344), 0); + assert_eq!(remi_ui32(0, 3482297128), 0); + assert_eq!(remi_ui32(0, 4294967294), 0); + assert_eq!(remi_ui32(0, 4294967295), 0); + assert_eq!(remi_ui32(1, 1), 0); + assert_eq!(remi_ui32(2, 1), 0); + assert_eq!(remi_ui32(2, 2), 0); + assert_eq!(remi_ui32(3, 1), 0); + assert_eq!(remi_ui32(3, 3), 0); + assert_eq!(remi_ui32(4, 1), 0); + assert_eq!(remi_ui32(4, 2), 0); + assert_eq!(remi_ui32(4, 4), 0); + assert_eq!(remi_ui32(2119154652, 1), 0); + assert_eq!(remi_ui32(2119154652, 2), 0); + assert_eq!(remi_ui32(2119154652, 3), 0); + assert_eq!(remi_ui32(2119154652, 4), 0); + assert_eq!(remi_ui32(2119154652, 2119154652), 0); + assert_eq!(remi_ui32(3002788344, 1), 0); + assert_eq!(remi_ui32(3002788344, 2), 0); + assert_eq!(remi_ui32(3002788344, 3), 0); + assert_eq!(remi_ui32(3002788344, 4), 0); + assert_eq!(remi_ui32(3002788344, 3002788344), 0); + assert_eq!(remi_ui32(3482297128, 1), 0); + assert_eq!(remi_ui32(3482297128, 2), 0); + assert_eq!(remi_ui32(3482297128, 4), 0); + assert_eq!(remi_ui32(3482297128, 3482297128), 0); + assert_eq!(remi_ui32(4294967294, 1), 0); + assert_eq!(remi_ui32(4294967294, 2), 0); + assert_eq!(remi_ui32(4294967294, 4294967294), 0); + assert_eq!(remi_ui32(4294967295, 1), 0); + assert_eq!(remi_ui32(4294967295, 3), 0); + assert_eq!(remi_ui32(4294967295, 4294967295), 0); + assert_eq!(remi_ui32(1, 2), 1); + assert_eq!(remi_ui32(1, 3), 1); + assert_eq!(remi_ui32(1, 4), 1); + assert_eq!(remi_ui32(1, 2119154652), 1); + assert_eq!(remi_ui32(1, 3002788344), 1); + assert_eq!(remi_ui32(1, 3482297128), 1); + assert_eq!(remi_ui32(1, 4294967294), 1); + assert_eq!(remi_ui32(1, 4294967295), 1); + assert_eq!(remi_ui32(3, 2), 1); + assert_eq!(remi_ui32(4, 3), 1); + assert_eq!(remi_ui32(3482297128, 3), 1); + assert_eq!(remi_ui32(4294967295, 2), 1); + assert_eq!(remi_ui32(4294967295, 4294967294), 1); + assert_eq!(remi_ui32(2, 3), 2); + assert_eq!(remi_ui32(2, 4), 2); + assert_eq!(remi_ui32(2, 2119154652), 2); + assert_eq!(remi_ui32(2, 3002788344), 2); + assert_eq!(remi_ui32(2, 3482297128), 2); + assert_eq!(remi_ui32(2, 4294967294), 2); + assert_eq!(remi_ui32(2, 4294967295), 2); + assert_eq!(remi_ui32(4294967294, 3), 2); + assert_eq!(remi_ui32(4294967294, 4), 2); + assert_eq!(remi_ui32(3, 4), 3); + assert_eq!(remi_ui32(3, 2119154652), 3); + assert_eq!(remi_ui32(3, 3002788344), 3); + assert_eq!(remi_ui32(3, 3482297128), 3); + assert_eq!(remi_ui32(3, 4294967294), 3); + assert_eq!(remi_ui32(3, 4294967295), 3); + assert_eq!(remi_ui32(4294967295, 4), 3); + assert_eq!(remi_ui32(4, 2119154652), 4); + assert_eq!(remi_ui32(4, 3002788344), 4); + assert_eq!(remi_ui32(4, 3482297128), 4); + assert_eq!(remi_ui32(4, 4294967294), 4); + assert_eq!(remi_ui32(4, 4294967295), 4); + assert_eq!(remi_ui32(4294967294, 2119154652), 56657990); + assert_eq!(remi_ui32(4294967295, 2119154652), 56657991); + assert_eq!(remi_ui32(3482297128, 3002788344), 479508784); + assert_eq!(remi_ui32(4294967294, 3482297128), 812670166); + assert_eq!(remi_ui32(4294967295, 3482297128), 812670167); + assert_eq!(remi_ui32(3002788344, 2119154652), 883633692); + assert_eq!(remi_ui32(4294967294, 3002788344), 1292178950); + assert_eq!(remi_ui32(4294967295, 3002788344), 1292178951); + assert_eq!(remi_ui32(3482297128, 2119154652), 1363142476); + assert_eq!(remi_ui32(2119154652, 3002788344), 2119154652); + assert_eq!(remi_ui32(2119154652, 3482297128), 2119154652); + assert_eq!(remi_ui32(2119154652, 4294967294), 2119154652); + assert_eq!(remi_ui32(2119154652, 4294967295), 2119154652); + assert_eq!(remi_ui32(3002788344, 3482297128), 3002788344); + assert_eq!(remi_ui32(3002788344, 4294967294), 3002788344); + assert_eq!(remi_ui32(3002788344, 4294967295), 3002788344); + assert_eq!(remi_ui32(3482297128, 4294967294), 3482297128); + assert_eq!(remi_ui32(3482297128, 4294967295), 3482297128); + assert_eq!(remi_ui32(4294967294, 4294967295), 4294967294); + assert_eq!(remi_ui64(0, 1), 0); + assert_eq!(remi_ui64(0, 2), 0); + assert_eq!(remi_ui64(0, 3), 0); + assert_eq!(remi_ui64(0, 4), 0); + assert_eq!(remi_ui64(0, 191084152064409600), 0); + assert_eq!(remi_ui64(0, 11015955194427482112), 0); + assert_eq!(remi_ui64(0, 16990600415051759616), 0); + assert_eq!(remi_ui64(0, 18446744073709551614), 0); + assert_eq!(remi_ui64(0, 18446744073709551615), 0); + assert_eq!(remi_ui64(1, 1), 0); + assert_eq!(remi_ui64(2, 1), 0); + assert_eq!(remi_ui64(2, 2), 0); + assert_eq!(remi_ui64(3, 1), 0); + assert_eq!(remi_ui64(3, 3), 0); + assert_eq!(remi_ui64(4, 1), 0); + assert_eq!(remi_ui64(4, 2), 0); + assert_eq!(remi_ui64(4, 4), 0); + assert_eq!(remi_ui64(191084152064409600, 1), 0); + assert_eq!(remi_ui64(191084152064409600, 2), 0); + assert_eq!(remi_ui64(191084152064409600, 3), 0); + assert_eq!(remi_ui64(191084152064409600, 4), 0); + assert_eq!(remi_ui64(191084152064409600, 191084152064409600), 0); + assert_eq!(remi_ui64(11015955194427482112, 1), 0); + assert_eq!(remi_ui64(11015955194427482112, 2), 0); + assert_eq!(remi_ui64(11015955194427482112, 3), 0); + assert_eq!(remi_ui64(11015955194427482112, 4), 0); + assert_eq!(remi_ui64(11015955194427482112, 11015955194427482112), 0); + assert_eq!(remi_ui64(16990600415051759616, 1), 0); + assert_eq!(remi_ui64(16990600415051759616, 2), 0); + assert_eq!(remi_ui64(16990600415051759616, 3), 0); + assert_eq!(remi_ui64(16990600415051759616, 4), 0); + assert_eq!(remi_ui64(16990600415051759616, 16990600415051759616), 0); + assert_eq!(remi_ui64(18446744073709551614, 1), 0); + assert_eq!(remi_ui64(18446744073709551614, 2), 0); + assert_eq!(remi_ui64(18446744073709551614, 18446744073709551614), 0); + assert_eq!(remi_ui64(18446744073709551615, 1), 0); + assert_eq!(remi_ui64(18446744073709551615, 3), 0); + assert_eq!(remi_ui64(18446744073709551615, 18446744073709551615), 0); + assert_eq!(remi_ui64(1, 2), 1); + assert_eq!(remi_ui64(1, 3), 1); + assert_eq!(remi_ui64(1, 4), 1); + assert_eq!(remi_ui64(1, 191084152064409600), 1); + assert_eq!(remi_ui64(1, 11015955194427482112), 1); + assert_eq!(remi_ui64(1, 16990600415051759616), 1); + assert_eq!(remi_ui64(1, 18446744073709551614), 1); + assert_eq!(remi_ui64(1, 18446744073709551615), 1); + assert_eq!(remi_ui64(3, 2), 1); + assert_eq!(remi_ui64(4, 3), 1); + assert_eq!(remi_ui64(18446744073709551615, 2), 1); + assert_eq!(remi_ui64(18446744073709551615, 18446744073709551614), 1); + assert_eq!(remi_ui64(2, 3), 2); + assert_eq!(remi_ui64(2, 4), 2); + assert_eq!(remi_ui64(2, 191084152064409600), 2); + assert_eq!(remi_ui64(2, 11015955194427482112), 2); + assert_eq!(remi_ui64(2, 16990600415051759616), 2); + assert_eq!(remi_ui64(2, 18446744073709551614), 2); + assert_eq!(remi_ui64(2, 18446744073709551615), 2); + assert_eq!(remi_ui64(18446744073709551614, 3), 2); + assert_eq!(remi_ui64(18446744073709551614, 4), 2); + assert_eq!(remi_ui64(3, 4), 3); + assert_eq!(remi_ui64(3, 191084152064409600), 3); + assert_eq!(remi_ui64(3, 11015955194427482112), 3); + assert_eq!(remi_ui64(3, 16990600415051759616), 3); + assert_eq!(remi_ui64(3, 18446744073709551614), 3); + assert_eq!(remi_ui64(3, 18446744073709551615), 3); + assert_eq!(remi_ui64(18446744073709551615, 4), 3); + assert_eq!(remi_ui64(4, 191084152064409600), 4); + assert_eq!(remi_ui64(4, 11015955194427482112), 4); + assert_eq!(remi_ui64(4, 16990600415051759616), 4); + assert_eq!(remi_ui64(4, 18446744073709551614), 4); + assert_eq!(remi_ui64(4, 18446744073709551615), 4); + assert_eq!( + remi_ui64(18446744073709551614, 191084152064409600), + 102665475526230014 + ); + assert_eq!( + remi_ui64(18446744073709551615, 191084152064409600), + 102665475526230015 + ); + assert_eq!( + remi_ui64(11015955194427482112, 191084152064409600), + 124158526756134912 + ); + assert_eq!( + remi_ui64(16990600415051759616, 191084152064409600), + 175195033383714816 + ); + assert_eq!( + remi_ui64(191084152064409600, 11015955194427482112), + 191084152064409600 + ); + assert_eq!( + remi_ui64(191084152064409600, 16990600415051759616), + 191084152064409600 + ); + assert_eq!( + remi_ui64(191084152064409600, 18446744073709551614), + 191084152064409600 + ); + assert_eq!( + remi_ui64(191084152064409600, 18446744073709551615), + 191084152064409600 + ); + assert_eq!( + remi_ui64(18446744073709551614, 16990600415051759616), + 1456143658657791998 + ); + assert_eq!( + remi_ui64(18446744073709551615, 16990600415051759616), + 1456143658657791999 + ); + assert_eq!( + remi_ui64(16990600415051759616, 11015955194427482112), + 5974645220624277504 + ); + assert_eq!( + remi_ui64(18446744073709551614, 11015955194427482112), + 7430788879282069502 + ); + assert_eq!( + remi_ui64(18446744073709551615, 11015955194427482112), + 7430788879282069503 + ); + assert_eq!( + remi_ui64(11015955194427482112, 16990600415051759616), + 11015955194427482112 + ); + assert_eq!( + remi_ui64(11015955194427482112, 18446744073709551614), + 11015955194427482112 + ); + assert_eq!( + remi_ui64(11015955194427482112, 18446744073709551615), + 11015955194427482112 + ); + assert_eq!( + remi_ui64(16990600415051759616, 18446744073709551614), + 16990600415051759616 + ); + assert_eq!( + remi_ui64(16990600415051759616, 18446744073709551615), + 16990600415051759616 + ); + assert_eq!( + remi_ui64(18446744073709551614, 18446744073709551615), + 18446744073709551614 + ); + assert_eq!(remi_ui8(0, 1), 0); + assert_eq!(remi_ui8(0, 2), 0); + assert_eq!(remi_ui8(0, 3), 0); + assert_eq!(remi_ui8(0, 4), 0); + assert_eq!(remi_ui8(0, 72), 0); + assert_eq!(remi_ui8(0, 100), 0); + assert_eq!(remi_ui8(0, 162), 0); + assert_eq!(remi_ui8(0, 254), 0); + assert_eq!(remi_ui8(0, 255), 0); + assert_eq!(remi_ui8(1, 1), 0); + assert_eq!(remi_ui8(2, 1), 0); + assert_eq!(remi_ui8(2, 2), 0); + assert_eq!(remi_ui8(3, 1), 0); + assert_eq!(remi_ui8(3, 3), 0); + assert_eq!(remi_ui8(4, 1), 0); + assert_eq!(remi_ui8(4, 2), 0); + assert_eq!(remi_ui8(4, 4), 0); + assert_eq!(remi_ui8(72, 1), 0); + assert_eq!(remi_ui8(72, 2), 0); + assert_eq!(remi_ui8(72, 3), 0); + assert_eq!(remi_ui8(72, 4), 0); + assert_eq!(remi_ui8(72, 72), 0); + assert_eq!(remi_ui8(100, 1), 0); + assert_eq!(remi_ui8(100, 2), 0); + assert_eq!(remi_ui8(100, 4), 0); + assert_eq!(remi_ui8(100, 100), 0); + assert_eq!(remi_ui8(162, 1), 0); + assert_eq!(remi_ui8(162, 2), 0); + assert_eq!(remi_ui8(162, 3), 0); + assert_eq!(remi_ui8(162, 162), 0); + assert_eq!(remi_ui8(254, 1), 0); + assert_eq!(remi_ui8(254, 2), 0); + assert_eq!(remi_ui8(254, 254), 0); + assert_eq!(remi_ui8(255, 1), 0); + assert_eq!(remi_ui8(255, 3), 0); + assert_eq!(remi_ui8(255, 255), 0); + assert_eq!(remi_ui8(1, 2), 1); + assert_eq!(remi_ui8(1, 3), 1); + assert_eq!(remi_ui8(1, 4), 1); + assert_eq!(remi_ui8(1, 72), 1); + assert_eq!(remi_ui8(1, 100), 1); + assert_eq!(remi_ui8(1, 162), 1); + assert_eq!(remi_ui8(1, 254), 1); + assert_eq!(remi_ui8(1, 255), 1); + assert_eq!(remi_ui8(3, 2), 1); + assert_eq!(remi_ui8(4, 3), 1); + assert_eq!(remi_ui8(100, 3), 1); + assert_eq!(remi_ui8(255, 2), 1); + assert_eq!(remi_ui8(255, 254), 1); + assert_eq!(remi_ui8(2, 3), 2); + assert_eq!(remi_ui8(2, 4), 2); + assert_eq!(remi_ui8(2, 72), 2); + assert_eq!(remi_ui8(2, 100), 2); + assert_eq!(remi_ui8(2, 162), 2); + assert_eq!(remi_ui8(2, 254), 2); + assert_eq!(remi_ui8(2, 255), 2); + assert_eq!(remi_ui8(162, 4), 2); + assert_eq!(remi_ui8(254, 3), 2); + assert_eq!(remi_ui8(254, 4), 2); + assert_eq!(remi_ui8(3, 4), 3); + assert_eq!(remi_ui8(3, 72), 3); + assert_eq!(remi_ui8(3, 100), 3); + assert_eq!(remi_ui8(3, 162), 3); + assert_eq!(remi_ui8(3, 254), 3); + assert_eq!(remi_ui8(3, 255), 3); + assert_eq!(remi_ui8(255, 4), 3); + assert_eq!(remi_ui8(4, 72), 4); + assert_eq!(remi_ui8(4, 100), 4); + assert_eq!(remi_ui8(4, 162), 4); + assert_eq!(remi_ui8(4, 254), 4); + assert_eq!(remi_ui8(4, 255), 4); + assert_eq!(remi_ui8(162, 72), 18); + assert_eq!(remi_ui8(100, 72), 28); + assert_eq!(remi_ui8(254, 72), 38); + assert_eq!(remi_ui8(255, 72), 39); + assert_eq!(remi_ui8(254, 100), 54); + assert_eq!(remi_ui8(255, 100), 55); + assert_eq!(remi_ui8(162, 100), 62); + assert_eq!(remi_ui8(72, 100), 72); + assert_eq!(remi_ui8(72, 162), 72); + assert_eq!(remi_ui8(72, 254), 72); + assert_eq!(remi_ui8(72, 255), 72); + assert_eq!(remi_ui8(254, 162), 92); + assert_eq!(remi_ui8(255, 162), 93); + assert_eq!(remi_ui8(100, 162), 100); + assert_eq!(remi_ui8(100, 254), 100); + assert_eq!(remi_ui8(100, 255), 100); + assert_eq!(remi_ui8(162, 254), 162); + assert_eq!(remi_ui8(162, 255), 162); + assert_eq!(remi_ui8(254, 255), 254); + assert_eq!(subi_si16(-32768, 0), -32768); + assert_eq!(subi_si16(-32767, 1), -32768); + assert_eq!(subi_si16(-32767, 0), -32767); + assert_eq!(subi_si16(0, 32767), -32767); + assert_eq!(subi_si16(0, 32766), -32766); + assert_eq!(subi_si16(1, 32767), -32766); + assert_eq!(subi_si16(1, 32766), -32765); + assert_eq!(subi_si16(2, 32767), -32765); + assert_eq!(subi_si16(2, 32766), -32764); + assert_eq!(subi_si16(3, 32767), -32764); + assert_eq!(subi_si16(3, 32766), -32763); + assert_eq!(subi_si16(4, 32767), -32763); + assert_eq!(subi_si16(4, 32766), -32762); + assert_eq!(subi_si16(-32547, 4), -32551); + assert_eq!(subi_si16(-32547, 3), -32550); + assert_eq!(subi_si16(-32547, 2), -32549); + assert_eq!(subi_si16(-32547, 1), -32548); + assert_eq!(subi_si16(-32547, 0), -32547); + assert_eq!(subi_si16(10486, 32767), -22281); + assert_eq!(subi_si16(10486, 32766), -22280); + assert_eq!(subi_si16(0, 16514), -16514); + assert_eq!(subi_si16(1, 16514), -16513); + assert_eq!(subi_si16(2, 16514), -16512); + assert_eq!(subi_si16(3, 16514), -16511); + assert_eq!(subi_si16(4, 16514), -16510); + assert_eq!(subi_si16(16514, 32767), -16253); + assert_eq!(subi_si16(16514, 32766), -16252); + assert_eq!(subi_si16(0, 10486), -10486); + assert_eq!(subi_si16(1, 10486), -10485); + assert_eq!(subi_si16(2, 10486), -10484); + assert_eq!(subi_si16(3, 10486), -10483); + assert_eq!(subi_si16(4, 10486), -10482); + assert_eq!(subi_si16(10486, 16514), -6028); + assert_eq!(subi_si16(-32768, -32547), -221); + assert_eq!(subi_si16(-32767, -32547), -220); + assert_eq!(subi_si16(0, 4), -4); + assert_eq!(subi_si16(0, 3), -3); + assert_eq!(subi_si16(1, 4), -3); + assert_eq!(subi_si16(0, 2), -2); + assert_eq!(subi_si16(1, 3), -2); + assert_eq!(subi_si16(2, 4), -2); + assert_eq!(subi_si16(-32768, -32767), -1); + assert_eq!(subi_si16(0, 1), -1); + assert_eq!(subi_si16(1, 2), -1); + assert_eq!(subi_si16(2, 3), -1); + assert_eq!(subi_si16(3, 4), -1); + assert_eq!(subi_si16(32766, 32767), -1); + assert_eq!(subi_si16(-32768, -32768), 0); + assert_eq!(subi_si16(-32767, -32767), 0); + assert_eq!(subi_si16(-32547, -32547), 0); + assert_eq!(subi_si16(0, 0), 0); + assert_eq!(subi_si16(1, 1), 0); + assert_eq!(subi_si16(2, 2), 0); + assert_eq!(subi_si16(3, 3), 0); + assert_eq!(subi_si16(4, 4), 0); + assert_eq!(subi_si16(10486, 10486), 0); + assert_eq!(subi_si16(16514, 16514), 0); + assert_eq!(subi_si16(32766, 32766), 0); + assert_eq!(subi_si16(32767, 32767), 0); + assert_eq!(subi_si16(-32767, -32768), 1); + assert_eq!(subi_si16(1, 0), 1); + assert_eq!(subi_si16(2, 1), 1); + assert_eq!(subi_si16(3, 2), 1); + assert_eq!(subi_si16(4, 3), 1); + assert_eq!(subi_si16(32767, 32766), 1); + assert_eq!(subi_si16(2, 0), 2); + assert_eq!(subi_si16(3, 1), 2); + assert_eq!(subi_si16(4, 2), 2); + assert_eq!(subi_si16(3, 0), 3); + assert_eq!(subi_si16(4, 1), 3); + assert_eq!(subi_si16(4, 0), 4); + assert_eq!(subi_si16(-32547, -32767), 220); + assert_eq!(subi_si16(-32547, -32768), 221); + assert_eq!(subi_si16(16514, 10486), 6028); + assert_eq!(subi_si16(10486, 4), 10482); + assert_eq!(subi_si16(10486, 3), 10483); + assert_eq!(subi_si16(10486, 2), 10484); + assert_eq!(subi_si16(10486, 1), 10485); + assert_eq!(subi_si16(10486, 0), 10486); + assert_eq!(subi_si16(32766, 16514), 16252); + assert_eq!(subi_si16(32767, 16514), 16253); + assert_eq!(subi_si16(16514, 4), 16510); + assert_eq!(subi_si16(16514, 3), 16511); + assert_eq!(subi_si16(16514, 2), 16512); + assert_eq!(subi_si16(16514, 1), 16513); + assert_eq!(subi_si16(16514, 0), 16514); + assert_eq!(subi_si16(32766, 10486), 22280); + assert_eq!(subi_si16(32767, 10486), 22281); + assert_eq!(subi_si16(0, -32547), 32547); + assert_eq!(subi_si16(1, -32547), 32548); + assert_eq!(subi_si16(2, -32547), 32549); + assert_eq!(subi_si16(3, -32547), 32550); + assert_eq!(subi_si16(4, -32547), 32551); + assert_eq!(subi_si16(32766, 4), 32762); + assert_eq!(subi_si16(32766, 3), 32763); + assert_eq!(subi_si16(32767, 4), 32763); + assert_eq!(subi_si16(32766, 2), 32764); + assert_eq!(subi_si16(32767, 3), 32764); + assert_eq!(subi_si16(32766, 1), 32765); + assert_eq!(subi_si16(32767, 2), 32765); + assert_eq!(subi_si16(32766, 0), 32766); + assert_eq!(subi_si16(32767, 1), 32766); + assert_eq!(subi_si16(0, -32767), 32767); + assert_eq!(subi_si16(32767, 0), 32767); + assert_eq!(subi_si32(-2147483648, 0), -2147483648); + assert_eq!(subi_si32(-2147483647, 1), -2147483648); + assert_eq!(subi_si32(-2147483647, 0), -2147483647); + assert_eq!(subi_si32(0, 2147483647), -2147483647); + assert_eq!(subi_si32(0, 2147483646), -2147483646); + assert_eq!(subi_si32(1, 2147483647), -2147483646); + assert_eq!(subi_si32(1, 2147483646), -2147483645); + assert_eq!(subi_si32(2, 2147483647), -2147483645); + assert_eq!(subi_si32(2, 2147483646), -2147483644); + assert_eq!(subi_si32(3, 2147483647), -2147483644); + assert_eq!(subi_si32(3, 2147483646), -2147483643); + assert_eq!(subi_si32(4, 2147483647), -2147483643); + assert_eq!(subi_si32(4, 2147483646), -2147483642); + assert_eq!(subi_si32(-1713183800, 4), -1713183804); + assert_eq!(subi_si32(-1713183800, 3), -1713183803); + assert_eq!(subi_si32(-1713183800, 2), -1713183802); + assert_eq!(subi_si32(-1713183800, 1), -1713183801); + assert_eq!(subi_si32(-1713183800, 0), -1713183800); + assert_eq!(subi_si32(-1252582164, 4), -1252582168); + assert_eq!(subi_si32(-1252582164, 3), -1252582167); + assert_eq!(subi_si32(-1252582164, 2), -1252582166); + assert_eq!(subi_si32(-1252582164, 1), -1252582165); + assert_eq!(subi_si32(-1252582164, 0), -1252582164); + assert_eq!(subi_si32(-2147483648, -1035405763), -1112077885); + assert_eq!(subi_si32(-2147483647, -1035405763), -1112077884); + assert_eq!(subi_si32(-1035405763, 4), -1035405767); + assert_eq!(subi_si32(-1035405763, 3), -1035405766); + assert_eq!(subi_si32(-1035405763, 2), -1035405765); + assert_eq!(subi_si32(-1035405763, 1), -1035405764); + assert_eq!(subi_si32(-1035405763, 0), -1035405763); + assert_eq!(subi_si32(-2147483648, -1252582164), -894901484); + assert_eq!(subi_si32(-2147483647, -1252582164), -894901483); + assert_eq!(subi_si32(-1713183800, -1035405763), -677778037); + assert_eq!(subi_si32(-1713183800, -1252582164), -460601636); + assert_eq!(subi_si32(-2147483648, -1713183800), -434299848); + assert_eq!(subi_si32(-2147483647, -1713183800), -434299847); + assert_eq!(subi_si32(-1252582164, -1035405763), -217176401); + assert_eq!(subi_si32(0, 4), -4); + assert_eq!(subi_si32(0, 3), -3); + assert_eq!(subi_si32(1, 4), -3); + assert_eq!(subi_si32(0, 2), -2); + assert_eq!(subi_si32(1, 3), -2); + assert_eq!(subi_si32(2, 4), -2); + assert_eq!(subi_si32(-2147483648, -2147483647), -1); + assert_eq!(subi_si32(0, 1), -1); + assert_eq!(subi_si32(1, 2), -1); + assert_eq!(subi_si32(2, 3), -1); + assert_eq!(subi_si32(3, 4), -1); + assert_eq!(subi_si32(2147483646, 2147483647), -1); + assert_eq!(subi_si32(-2147483648, -2147483648), 0); + assert_eq!(subi_si32(-2147483647, -2147483647), 0); + assert_eq!(subi_si32(-1713183800, -1713183800), 0); + assert_eq!(subi_si32(-1252582164, -1252582164), 0); + assert_eq!(subi_si32(-1035405763, -1035405763), 0); + assert_eq!(subi_si32(0, 0), 0); + assert_eq!(subi_si32(1, 1), 0); + assert_eq!(subi_si32(2, 2), 0); + assert_eq!(subi_si32(3, 3), 0); + assert_eq!(subi_si32(4, 4), 0); + assert_eq!(subi_si32(2147483646, 2147483646), 0); + assert_eq!(subi_si32(2147483647, 2147483647), 0); + assert_eq!(subi_si32(-2147483647, -2147483648), 1); + assert_eq!(subi_si32(1, 0), 1); + assert_eq!(subi_si32(2, 1), 1); + assert_eq!(subi_si32(3, 2), 1); + assert_eq!(subi_si32(4, 3), 1); + assert_eq!(subi_si32(2147483647, 2147483646), 1); + assert_eq!(subi_si32(2, 0), 2); + assert_eq!(subi_si32(3, 1), 2); + assert_eq!(subi_si32(4, 2), 2); + assert_eq!(subi_si32(3, 0), 3); + assert_eq!(subi_si32(4, 1), 3); + assert_eq!(subi_si32(4, 0), 4); + assert_eq!(subi_si32(-1035405763, -1252582164), 217176401); + assert_eq!(subi_si32(-1713183800, -2147483647), 434299847); + assert_eq!(subi_si32(-1713183800, -2147483648), 434299848); + assert_eq!(subi_si32(-1252582164, -1713183800), 460601636); + assert_eq!(subi_si32(-1035405763, -1713183800), 677778037); + assert_eq!(subi_si32(-1252582164, -2147483647), 894901483); + assert_eq!(subi_si32(-1252582164, -2147483648), 894901484); + assert_eq!(subi_si32(0, -1035405763), 1035405763); + assert_eq!(subi_si32(1, -1035405763), 1035405764); + assert_eq!(subi_si32(2, -1035405763), 1035405765); + assert_eq!(subi_si32(3, -1035405763), 1035405766); + assert_eq!(subi_si32(4, -1035405763), 1035405767); + assert_eq!(subi_si32(-1035405763, -2147483647), 1112077884); + assert_eq!(subi_si32(-1035405763, -2147483648), 1112077885); + assert_eq!(subi_si32(0, -1252582164), 1252582164); + assert_eq!(subi_si32(1, -1252582164), 1252582165); + assert_eq!(subi_si32(2, -1252582164), 1252582166); + assert_eq!(subi_si32(3, -1252582164), 1252582167); + assert_eq!(subi_si32(4, -1252582164), 1252582168); + assert_eq!(subi_si32(0, -1713183800), 1713183800); + assert_eq!(subi_si32(1, -1713183800), 1713183801); + assert_eq!(subi_si32(2, -1713183800), 1713183802); + assert_eq!(subi_si32(3, -1713183800), 1713183803); + assert_eq!(subi_si32(4, -1713183800), 1713183804); + assert_eq!(subi_si32(2147483646, 4), 2147483642); + assert_eq!(subi_si32(2147483646, 3), 2147483643); + assert_eq!(subi_si32(2147483647, 4), 2147483643); + assert_eq!(subi_si32(2147483646, 2), 2147483644); + assert_eq!(subi_si32(2147483647, 3), 2147483644); + assert_eq!(subi_si32(2147483646, 1), 2147483645); + assert_eq!(subi_si32(2147483647, 2), 2147483645); + assert_eq!(subi_si32(2147483646, 0), 2147483646); + assert_eq!(subi_si32(2147483647, 1), 2147483646); + assert_eq!(subi_si32(0, -2147483647), 2147483647); + assert_eq!(subi_si32(2147483647, 0), 2147483647); + assert_eq!(subi_si64(-9223372036854775808, 0), -9223372036854775808); + assert_eq!(subi_si64(-9223372036854775807, 1), -9223372036854775808); + assert_eq!(subi_si64(-9223372036854775807, 0), -9223372036854775807); + assert_eq!(subi_si64(0, 9223372036854775807), -9223372036854775807); + assert_eq!(subi_si64(0, 9223372036854775806), -9223372036854775806); + assert_eq!(subi_si64(1, 9223372036854775807), -9223372036854775806); + assert_eq!(subi_si64(1, 9223372036854775806), -9223372036854775805); + assert_eq!(subi_si64(2, 9223372036854775807), -9223372036854775805); + assert_eq!(subi_si64(2, 9223372036854775806), -9223372036854775804); + assert_eq!(subi_si64(3, 9223372036854775807), -9223372036854775804); + assert_eq!(subi_si64(3, 9223372036854775806), -9223372036854775803); + assert_eq!(subi_si64(4, 9223372036854775807), -9223372036854775803); + assert_eq!(subi_si64(4, 9223372036854775806), -9223372036854775802); + assert_eq!( + subi_si64(-9223372036854775808, -1328271339354574848), + -7895100697500200960 + ); + assert_eq!( + subi_si64(-9223372036854775807, -1328271339354574848), + -7895100697500200959 + ); + assert_eq!( + subi_si64(-9223372036854775808, -1741927215160008704), + -7481444821694767104 + ); + assert_eq!( + subi_si64(-9223372036854775807, -1741927215160008704), + -7481444821694767103 + ); + assert_eq!( + subi_si64(-1741927215160008704, 5577148965131116544), + -7319076180291125248 + ); + assert_eq!( + subi_si64(-1328271339354574848, 5577148965131116544), + -6905420304485691392 + ); + assert_eq!(subi_si64(0, 5577148965131116544), -5577148965131116544); + assert_eq!(subi_si64(1, 5577148965131116544), -5577148965131116543); + assert_eq!(subi_si64(2, 5577148965131116544), -5577148965131116542); + assert_eq!(subi_si64(3, 5577148965131116544), -5577148965131116541); + assert_eq!(subi_si64(4, 5577148965131116544), -5577148965131116540); + assert_eq!( + subi_si64(5577148965131116544, 9223372036854775807), + -3646223071723659263 + ); + assert_eq!( + subi_si64(5577148965131116544, 9223372036854775806), + -3646223071723659262 + ); + assert_eq!(subi_si64(-1741927215160008704, 4), -1741927215160008708); + assert_eq!(subi_si64(-1741927215160008704, 3), -1741927215160008707); + assert_eq!(subi_si64(-1741927215160008704, 2), -1741927215160008706); + assert_eq!(subi_si64(-1741927215160008704, 1), -1741927215160008705); + assert_eq!(subi_si64(-1741927215160008704, 0), -1741927215160008704); + assert_eq!(subi_si64(-1328271339354574848, 4), -1328271339354574852); + assert_eq!(subi_si64(-1328271339354574848, 3), -1328271339354574851); + assert_eq!(subi_si64(-1328271339354574848, 2), -1328271339354574850); + assert_eq!(subi_si64(-1328271339354574848, 1), -1328271339354574849); + assert_eq!(subi_si64(-1328271339354574848, 0), -1328271339354574848); + assert_eq!( + subi_si64(-1741927215160008704, -1328271339354574848), + -413655875805433856 + ); + assert_eq!(subi_si64(0, 4), -4); + assert_eq!(subi_si64(0, 3), -3); + assert_eq!(subi_si64(1, 4), -3); + assert_eq!(subi_si64(0, 2), -2); + assert_eq!(subi_si64(1, 3), -2); + assert_eq!(subi_si64(2, 4), -2); + assert_eq!(subi_si64(-9223372036854775808, -9223372036854775807), -1); + assert_eq!(subi_si64(0, 1), -1); + assert_eq!(subi_si64(1, 2), -1); + assert_eq!(subi_si64(2, 3), -1); + assert_eq!(subi_si64(3, 4), -1); + assert_eq!(subi_si64(9223372036854775806, 9223372036854775807), -1); + assert_eq!(subi_si64(-9223372036854775808, -9223372036854775808), 0); + assert_eq!(subi_si64(-9223372036854775807, -9223372036854775807), 0); + assert_eq!(subi_si64(-1741927215160008704, -1741927215160008704), 0); + assert_eq!(subi_si64(-1328271339354574848, -1328271339354574848), 0); + assert_eq!(subi_si64(0, 0), 0); + assert_eq!(subi_si64(1, 1), 0); + assert_eq!(subi_si64(2, 2), 0); + assert_eq!(subi_si64(3, 3), 0); + assert_eq!(subi_si64(4, 4), 0); + assert_eq!(subi_si64(5577148965131116544, 5577148965131116544), 0); + assert_eq!(subi_si64(9223372036854775806, 9223372036854775806), 0); + assert_eq!(subi_si64(9223372036854775807, 9223372036854775807), 0); + assert_eq!(subi_si64(-9223372036854775807, -9223372036854775808), 1); + assert_eq!(subi_si64(1, 0), 1); + assert_eq!(subi_si64(2, 1), 1); + assert_eq!(subi_si64(3, 2), 1); + assert_eq!(subi_si64(4, 3), 1); + assert_eq!(subi_si64(9223372036854775807, 9223372036854775806), 1); + assert_eq!(subi_si64(2, 0), 2); + assert_eq!(subi_si64(3, 1), 2); + assert_eq!(subi_si64(4, 2), 2); + assert_eq!(subi_si64(3, 0), 3); + assert_eq!(subi_si64(4, 1), 3); + assert_eq!(subi_si64(4, 0), 4); + assert_eq!( + subi_si64(-1328271339354574848, -1741927215160008704), + 413655875805433856 + ); + assert_eq!(subi_si64(0, -1328271339354574848), 1328271339354574848); + assert_eq!(subi_si64(1, -1328271339354574848), 1328271339354574849); + assert_eq!(subi_si64(2, -1328271339354574848), 1328271339354574850); + assert_eq!(subi_si64(3, -1328271339354574848), 1328271339354574851); + assert_eq!(subi_si64(4, -1328271339354574848), 1328271339354574852); + assert_eq!(subi_si64(0, -1741927215160008704), 1741927215160008704); + assert_eq!(subi_si64(1, -1741927215160008704), 1741927215160008705); + assert_eq!(subi_si64(2, -1741927215160008704), 1741927215160008706); + assert_eq!(subi_si64(3, -1741927215160008704), 1741927215160008707); + assert_eq!(subi_si64(4, -1741927215160008704), 1741927215160008708); + assert_eq!( + subi_si64(9223372036854775806, 5577148965131116544), + 3646223071723659262 + ); + assert_eq!( + subi_si64(9223372036854775807, 5577148965131116544), + 3646223071723659263 + ); + assert_eq!(subi_si64(5577148965131116544, 4), 5577148965131116540); + assert_eq!(subi_si64(5577148965131116544, 3), 5577148965131116541); + assert_eq!(subi_si64(5577148965131116544, 2), 5577148965131116542); + assert_eq!(subi_si64(5577148965131116544, 1), 5577148965131116543); + assert_eq!(subi_si64(5577148965131116544, 0), 5577148965131116544); + assert_eq!( + subi_si64(5577148965131116544, -1328271339354574848), + 6905420304485691392 + ); + assert_eq!( + subi_si64(5577148965131116544, -1741927215160008704), + 7319076180291125248 + ); + assert_eq!( + subi_si64(-1741927215160008704, -9223372036854775807), + 7481444821694767103 + ); + assert_eq!( + subi_si64(-1741927215160008704, -9223372036854775808), + 7481444821694767104 + ); + assert_eq!( + subi_si64(-1328271339354574848, -9223372036854775807), + 7895100697500200959 + ); + assert_eq!( + subi_si64(-1328271339354574848, -9223372036854775808), + 7895100697500200960 + ); + assert_eq!(subi_si64(9223372036854775806, 4), 9223372036854775802); + assert_eq!(subi_si64(9223372036854775806, 3), 9223372036854775803); + assert_eq!(subi_si64(9223372036854775807, 4), 9223372036854775803); + assert_eq!(subi_si64(9223372036854775806, 2), 9223372036854775804); + assert_eq!(subi_si64(9223372036854775807, 3), 9223372036854775804); + assert_eq!(subi_si64(9223372036854775806, 1), 9223372036854775805); + assert_eq!(subi_si64(9223372036854775807, 2), 9223372036854775805); + assert_eq!(subi_si64(9223372036854775806, 0), 9223372036854775806); + assert_eq!(subi_si64(9223372036854775807, 1), 9223372036854775806); + assert_eq!(subi_si64(0, -9223372036854775807), 9223372036854775807); + assert_eq!(subi_si64(9223372036854775807, 0), 9223372036854775807); + assert_eq!(subi_si8(-128, 0), -128); + assert_eq!(subi_si8(-127, 1), -128); + assert_eq!(subi_si8(-127, 0), -127); + assert_eq!(subi_si8(0, 127), -127); + assert_eq!(subi_si8(0, 126), -126); + assert_eq!(subi_si8(1, 127), -126); + assert_eq!(subi_si8(1, 126), -125); + assert_eq!(subi_si8(2, 127), -125); + assert_eq!(subi_si8(2, 126), -124); + assert_eq!(subi_si8(3, 127), -124); + assert_eq!(subi_si8(3, 126), -123); + assert_eq!(subi_si8(4, 127), -123); + assert_eq!(subi_si8(4, 126), -122); + assert_eq!(subi_si8(16, 127), -111); + assert_eq!(subi_si8(16, 126), -110); + assert_eq!(subi_si8(0, 16), -16); + assert_eq!(subi_si8(1, 16), -15); + assert_eq!(subi_si8(2, 16), -14); + assert_eq!(subi_si8(3, 16), -13); + assert_eq!(subi_si8(4, 16), -12); + assert_eq!(subi_si8(0, 4), -4); + assert_eq!(subi_si8(0, 3), -3); + assert_eq!(subi_si8(1, 4), -3); + assert_eq!(subi_si8(0, 2), -2); + assert_eq!(subi_si8(1, 3), -2); + assert_eq!(subi_si8(2, 4), -2); + assert_eq!(subi_si8(-128, -127), -1); + assert_eq!(subi_si8(0, 1), -1); + assert_eq!(subi_si8(1, 2), -1); + assert_eq!(subi_si8(2, 3), -1); + assert_eq!(subi_si8(3, 4), -1); + assert_eq!(subi_si8(126, 127), -1); + assert_eq!(subi_si8(-128, -128), 0); + assert_eq!(subi_si8(-127, -127), 0); + assert_eq!(subi_si8(0, 0), 0); + assert_eq!(subi_si8(1, 1), 0); + assert_eq!(subi_si8(2, 2), 0); + assert_eq!(subi_si8(3, 3), 0); + assert_eq!(subi_si8(4, 4), 0); + assert_eq!(subi_si8(16, 16), 0); + assert_eq!(subi_si8(126, 126), 0); + assert_eq!(subi_si8(127, 127), 0); + assert_eq!(subi_si8(-127, -128), 1); + assert_eq!(subi_si8(1, 0), 1); + assert_eq!(subi_si8(2, 1), 1); + assert_eq!(subi_si8(3, 2), 1); + assert_eq!(subi_si8(4, 3), 1); + assert_eq!(subi_si8(127, 126), 1); + assert_eq!(subi_si8(2, 0), 2); + assert_eq!(subi_si8(3, 1), 2); + assert_eq!(subi_si8(4, 2), 2); + assert_eq!(subi_si8(3, 0), 3); + assert_eq!(subi_si8(4, 1), 3); + assert_eq!(subi_si8(4, 0), 4); + assert_eq!(subi_si8(16, 4), 12); + assert_eq!(subi_si8(16, 3), 13); + assert_eq!(subi_si8(16, 2), 14); + assert_eq!(subi_si8(16, 1), 15); + assert_eq!(subi_si8(16, 0), 16); + assert_eq!(subi_si8(126, 16), 110); + assert_eq!(subi_si8(127, 16), 111); + assert_eq!(subi_si8(126, 4), 122); + assert_eq!(subi_si8(126, 3), 123); + assert_eq!(subi_si8(127, 4), 123); + assert_eq!(subi_si8(126, 2), 124); + assert_eq!(subi_si8(127, 3), 124); + assert_eq!(subi_si8(126, 1), 125); + assert_eq!(subi_si8(127, 2), 125); + assert_eq!(subi_si8(126, 0), 126); + assert_eq!(subi_si8(127, 1), 126); + assert_eq!(subi_si8(0, -127), 127); + assert_eq!(subi_si8(127, 0), 127); + assert_eq!(subi_ui16(0, 0), 0); + assert_eq!(subi_ui16(1, 1), 0); + assert_eq!(subi_ui16(2, 2), 0); + assert_eq!(subi_ui16(3, 3), 0); + assert_eq!(subi_ui16(4, 4), 0); + assert_eq!(subi_ui16(1717, 1717), 0); + assert_eq!(subi_ui16(17988, 17988), 0); + assert_eq!(subi_ui16(65096, 65096), 0); + assert_eq!(subi_ui16(65534, 65534), 0); + assert_eq!(subi_ui16(65535, 65535), 0); + assert_eq!(subi_ui16(1, 0), 1); + assert_eq!(subi_ui16(2, 1), 1); + assert_eq!(subi_ui16(3, 2), 1); + assert_eq!(subi_ui16(4, 3), 1); + assert_eq!(subi_ui16(65535, 65534), 1); + assert_eq!(subi_ui16(2, 0), 2); + assert_eq!(subi_ui16(3, 1), 2); + assert_eq!(subi_ui16(4, 2), 2); + assert_eq!(subi_ui16(3, 0), 3); + assert_eq!(subi_ui16(4, 1), 3); + assert_eq!(subi_ui16(4, 0), 4); + assert_eq!(subi_ui16(65534, 65096), 438); + assert_eq!(subi_ui16(65535, 65096), 439); + assert_eq!(subi_ui16(1717, 4), 1713); + assert_eq!(subi_ui16(1717, 3), 1714); + assert_eq!(subi_ui16(1717, 2), 1715); + assert_eq!(subi_ui16(1717, 1), 1716); + assert_eq!(subi_ui16(1717, 0), 1717); + assert_eq!(subi_ui16(17988, 1717), 16271); + assert_eq!(subi_ui16(17988, 4), 17984); + assert_eq!(subi_ui16(17988, 3), 17985); + assert_eq!(subi_ui16(17988, 2), 17986); + assert_eq!(subi_ui16(17988, 1), 17987); + assert_eq!(subi_ui16(17988, 0), 17988); + assert_eq!(subi_ui16(65096, 17988), 47108); + assert_eq!(subi_ui16(65534, 17988), 47546); + assert_eq!(subi_ui16(65535, 17988), 47547); + assert_eq!(subi_ui16(65096, 1717), 63379); + assert_eq!(subi_ui16(65534, 1717), 63817); + assert_eq!(subi_ui16(65535, 1717), 63818); + assert_eq!(subi_ui16(65096, 4), 65092); + assert_eq!(subi_ui16(65096, 3), 65093); + assert_eq!(subi_ui16(65096, 2), 65094); + assert_eq!(subi_ui16(65096, 1), 65095); + assert_eq!(subi_ui16(65096, 0), 65096); + assert_eq!(subi_ui16(65534, 4), 65530); + assert_eq!(subi_ui16(65534, 3), 65531); + assert_eq!(subi_ui16(65535, 4), 65531); + assert_eq!(subi_ui16(65534, 2), 65532); + assert_eq!(subi_ui16(65535, 3), 65532); + assert_eq!(subi_ui16(65534, 1), 65533); + assert_eq!(subi_ui16(65535, 2), 65533); + assert_eq!(subi_ui16(65534, 0), 65534); + assert_eq!(subi_ui16(65535, 1), 65534); + assert_eq!(subi_ui16(65535, 0), 65535); + assert_eq!(subi_ui32(0, 0), 0); + assert_eq!(subi_ui32(1, 1), 0); + assert_eq!(subi_ui32(2, 2), 0); + assert_eq!(subi_ui32(3, 3), 0); + assert_eq!(subi_ui32(4, 4), 0); + assert_eq!(subi_ui32(2119154652, 2119154652), 0); + assert_eq!(subi_ui32(3002788344, 3002788344), 0); + assert_eq!(subi_ui32(3482297128, 3482297128), 0); + assert_eq!(subi_ui32(4294967294, 4294967294), 0); + assert_eq!(subi_ui32(4294967295, 4294967295), 0); + assert_eq!(subi_ui32(1, 0), 1); + assert_eq!(subi_ui32(2, 1), 1); + assert_eq!(subi_ui32(3, 2), 1); + assert_eq!(subi_ui32(4, 3), 1); + assert_eq!(subi_ui32(4294967295, 4294967294), 1); + assert_eq!(subi_ui32(2, 0), 2); + assert_eq!(subi_ui32(3, 1), 2); + assert_eq!(subi_ui32(4, 2), 2); + assert_eq!(subi_ui32(3, 0), 3); + assert_eq!(subi_ui32(4, 1), 3); + assert_eq!(subi_ui32(4, 0), 4); + assert_eq!(subi_ui32(3482297128, 3002788344), 479508784); + assert_eq!(subi_ui32(4294967294, 3482297128), 812670166); + assert_eq!(subi_ui32(4294967295, 3482297128), 812670167); + assert_eq!(subi_ui32(3002788344, 2119154652), 883633692); + assert_eq!(subi_ui32(4294967294, 3002788344), 1292178950); + assert_eq!(subi_ui32(4294967295, 3002788344), 1292178951); + assert_eq!(subi_ui32(3482297128, 2119154652), 1363142476); + assert_eq!(subi_ui32(2119154652, 4), 2119154648); + assert_eq!(subi_ui32(2119154652, 3), 2119154649); + assert_eq!(subi_ui32(2119154652, 2), 2119154650); + assert_eq!(subi_ui32(2119154652, 1), 2119154651); + assert_eq!(subi_ui32(2119154652, 0), 2119154652); + assert_eq!(subi_ui32(4294967294, 2119154652), 2175812642); + assert_eq!(subi_ui32(4294967295, 2119154652), 2175812643); + assert_eq!(subi_ui32(3002788344, 4), 3002788340); + assert_eq!(subi_ui32(3002788344, 3), 3002788341); + assert_eq!(subi_ui32(3002788344, 2), 3002788342); + assert_eq!(subi_ui32(3002788344, 1), 3002788343); + assert_eq!(subi_ui32(3002788344, 0), 3002788344); + assert_eq!(subi_ui32(3482297128, 4), 3482297124); + assert_eq!(subi_ui32(3482297128, 3), 3482297125); + assert_eq!(subi_ui32(3482297128, 2), 3482297126); + assert_eq!(subi_ui32(3482297128, 1), 3482297127); + assert_eq!(subi_ui32(3482297128, 0), 3482297128); + assert_eq!(subi_ui32(4294967294, 4), 4294967290); + assert_eq!(subi_ui32(4294967294, 3), 4294967291); + assert_eq!(subi_ui32(4294967295, 4), 4294967291); + assert_eq!(subi_ui32(4294967294, 2), 4294967292); + assert_eq!(subi_ui32(4294967295, 3), 4294967292); + assert_eq!(subi_ui32(4294967294, 1), 4294967293); + assert_eq!(subi_ui32(4294967295, 2), 4294967293); + assert_eq!(subi_ui32(4294967294, 0), 4294967294); + assert_eq!(subi_ui32(4294967295, 1), 4294967294); + assert_eq!(subi_ui32(4294967295, 0), 4294967295); + assert_eq!(subi_ui64(0, 0), 0); + assert_eq!(subi_ui64(1, 1), 0); + assert_eq!(subi_ui64(2, 2), 0); + assert_eq!(subi_ui64(3, 3), 0); + assert_eq!(subi_ui64(4, 4), 0); + assert_eq!(subi_ui64(191084152064409600, 191084152064409600), 0); + assert_eq!(subi_ui64(11015955194427482112, 11015955194427482112), 0); + assert_eq!(subi_ui64(16990600415051759616, 16990600415051759616), 0); + assert_eq!(subi_ui64(18446744073709551614, 18446744073709551614), 0); + assert_eq!(subi_ui64(18446744073709551615, 18446744073709551615), 0); + assert_eq!(subi_ui64(1, 0), 1); + assert_eq!(subi_ui64(2, 1), 1); + assert_eq!(subi_ui64(3, 2), 1); + assert_eq!(subi_ui64(4, 3), 1); + assert_eq!(subi_ui64(18446744073709551615, 18446744073709551614), 1); + assert_eq!(subi_ui64(2, 0), 2); + assert_eq!(subi_ui64(3, 1), 2); + assert_eq!(subi_ui64(4, 2), 2); + assert_eq!(subi_ui64(3, 0), 3); + assert_eq!(subi_ui64(4, 1), 3); + assert_eq!(subi_ui64(4, 0), 4); + assert_eq!(subi_ui64(191084152064409600, 4), 191084152064409596); + assert_eq!(subi_ui64(191084152064409600, 3), 191084152064409597); + assert_eq!(subi_ui64(191084152064409600, 2), 191084152064409598); + assert_eq!(subi_ui64(191084152064409600, 1), 191084152064409599); + assert_eq!(subi_ui64(191084152064409600, 0), 191084152064409600); + assert_eq!( + subi_ui64(18446744073709551614, 16990600415051759616), + 1456143658657791998 + ); + assert_eq!( + subi_ui64(18446744073709551615, 16990600415051759616), + 1456143658657791999 + ); + assert_eq!( + subi_ui64(16990600415051759616, 11015955194427482112), + 5974645220624277504 + ); + assert_eq!( + subi_ui64(18446744073709551614, 11015955194427482112), + 7430788879282069502 + ); + assert_eq!( + subi_ui64(18446744073709551615, 11015955194427482112), + 7430788879282069503 + ); + assert_eq!( + subi_ui64(11015955194427482112, 191084152064409600), + 10824871042363072512 + ); + assert_eq!(subi_ui64(11015955194427482112, 4), 11015955194427482108); + assert_eq!(subi_ui64(11015955194427482112, 3), 11015955194427482109); + assert_eq!(subi_ui64(11015955194427482112, 2), 11015955194427482110); + assert_eq!(subi_ui64(11015955194427482112, 1), 11015955194427482111); + assert_eq!(subi_ui64(11015955194427482112, 0), 11015955194427482112); + assert_eq!( + subi_ui64(16990600415051759616, 191084152064409600), + 16799516262987350016 + ); + assert_eq!(subi_ui64(16990600415051759616, 4), 16990600415051759612); + assert_eq!(subi_ui64(16990600415051759616, 3), 16990600415051759613); + assert_eq!(subi_ui64(16990600415051759616, 2), 16990600415051759614); + assert_eq!(subi_ui64(16990600415051759616, 1), 16990600415051759615); + assert_eq!(subi_ui64(16990600415051759616, 0), 16990600415051759616); + assert_eq!( + subi_ui64(18446744073709551614, 191084152064409600), + 18255659921645142014 + ); + assert_eq!( + subi_ui64(18446744073709551615, 191084152064409600), + 18255659921645142015 + ); + assert_eq!(subi_ui64(18446744073709551614, 4), 18446744073709551610); + assert_eq!(subi_ui64(18446744073709551614, 3), 18446744073709551611); + assert_eq!(subi_ui64(18446744073709551615, 4), 18446744073709551611); + assert_eq!(subi_ui64(18446744073709551614, 2), 18446744073709551612); + assert_eq!(subi_ui64(18446744073709551615, 3), 18446744073709551612); + assert_eq!(subi_ui64(18446744073709551614, 1), 18446744073709551613); + assert_eq!(subi_ui64(18446744073709551615, 2), 18446744073709551613); + assert_eq!(subi_ui64(18446744073709551614, 0), 18446744073709551614); + assert_eq!(subi_ui64(18446744073709551615, 1), 18446744073709551614); + assert_eq!(subi_ui64(18446744073709551615, 0), 18446744073709551615); + assert_eq!(subi_ui8(0, 0), 0); + assert_eq!(subi_ui8(1, 1), 0); + assert_eq!(subi_ui8(2, 2), 0); + assert_eq!(subi_ui8(3, 3), 0); + assert_eq!(subi_ui8(4, 4), 0); + assert_eq!(subi_ui8(72, 72), 0); + assert_eq!(subi_ui8(100, 100), 0); + assert_eq!(subi_ui8(162, 162), 0); + assert_eq!(subi_ui8(254, 254), 0); + assert_eq!(subi_ui8(255, 255), 0); + assert_eq!(subi_ui8(1, 0), 1); + assert_eq!(subi_ui8(2, 1), 1); + assert_eq!(subi_ui8(3, 2), 1); + assert_eq!(subi_ui8(4, 3), 1); + assert_eq!(subi_ui8(255, 254), 1); + assert_eq!(subi_ui8(2, 0), 2); + assert_eq!(subi_ui8(3, 1), 2); + assert_eq!(subi_ui8(4, 2), 2); + assert_eq!(subi_ui8(3, 0), 3); + assert_eq!(subi_ui8(4, 1), 3); + assert_eq!(subi_ui8(4, 0), 4); + assert_eq!(subi_ui8(100, 72), 28); + assert_eq!(subi_ui8(162, 100), 62); + assert_eq!(subi_ui8(72, 4), 68); + assert_eq!(subi_ui8(72, 3), 69); + assert_eq!(subi_ui8(72, 2), 70); + assert_eq!(subi_ui8(72, 1), 71); + assert_eq!(subi_ui8(72, 0), 72); + assert_eq!(subi_ui8(162, 72), 90); + assert_eq!(subi_ui8(254, 162), 92); + assert_eq!(subi_ui8(255, 162), 93); + assert_eq!(subi_ui8(100, 4), 96); + assert_eq!(subi_ui8(100, 3), 97); + assert_eq!(subi_ui8(100, 2), 98); + assert_eq!(subi_ui8(100, 1), 99); + assert_eq!(subi_ui8(100, 0), 100); + assert_eq!(subi_ui8(254, 100), 154); + assert_eq!(subi_ui8(255, 100), 155); + assert_eq!(subi_ui8(162, 4), 158); + assert_eq!(subi_ui8(162, 3), 159); + assert_eq!(subi_ui8(162, 2), 160); + assert_eq!(subi_ui8(162, 1), 161); + assert_eq!(subi_ui8(162, 0), 162); + assert_eq!(subi_ui8(254, 72), 182); + assert_eq!(subi_ui8(255, 72), 183); + assert_eq!(subi_ui8(254, 4), 250); + assert_eq!(subi_ui8(254, 3), 251); + assert_eq!(subi_ui8(255, 4), 251); + assert_eq!(subi_ui8(254, 2), 252); + assert_eq!(subi_ui8(255, 3), 252); + assert_eq!(subi_ui8(254, 1), 253); + assert_eq!(subi_ui8(255, 2), 253); + assert_eq!(subi_ui8(254, 0), 254); + assert_eq!(subi_ui8(255, 1), 254); + assert_eq!(subi_ui8(255, 0), 255); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/int-bitops.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/int-bitops.mlir.rust-tests index 8a082f3e8..96980ca24 100644 --- a/arc-mlir/src/tests/arc-to-rust/int-bitops.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/int-bitops.mlir.rust-tests @@ -1,2804 +1,3307 @@ #[cfg(test)] mod tests { -use crate::arctorustintbitops::*; - #[rewrite(main)] - #[test] - fn it_works() { - assert_eq!(call!(and_si16(-32768, -32768)), -32768); - assert_eq!(call!(and_si16(-32768, -32767)), -32768); - assert_eq!(call!(and_si16(-32768, -32547)), -32768); - assert_eq!(call!(and_si16(-32767, -32768)), -32768); - assert_eq!(call!(and_si16(-32547, -32768)), -32768); - assert_eq!(call!(and_si16(-32767, -32767)), -32767); - assert_eq!(call!(and_si16(-32767, -32547)), -32767); - assert_eq!(call!(and_si16(-32547, -32767)), -32767); - assert_eq!(call!(and_si16(-32547, -32547)), -32547); - assert_eq!(call!(and_si16(-32768, 0)), 0); - assert_eq!(call!(and_si16(-32768, 1)), 0); - assert_eq!(call!(and_si16(-32768, 2)), 0); - assert_eq!(call!(and_si16(-32768, 3)), 0); - assert_eq!(call!(and_si16(-32768, 4)), 0); - assert_eq!(call!(and_si16(-32768, 10486)), 0); - assert_eq!(call!(and_si16(-32768, 16514)), 0); - assert_eq!(call!(and_si16(-32768, 32766)), 0); - assert_eq!(call!(and_si16(-32768, 32767)), 0); - assert_eq!(call!(and_si16(-32767, 0)), 0); - assert_eq!(call!(and_si16(-32767, 2)), 0); - assert_eq!(call!(and_si16(-32767, 4)), 0); - assert_eq!(call!(and_si16(-32767, 10486)), 0); - assert_eq!(call!(and_si16(-32767, 16514)), 0); - assert_eq!(call!(and_si16(-32767, 32766)), 0); - assert_eq!(call!(and_si16(-32547, 0)), 0); - assert_eq!(call!(and_si16(-32547, 2)), 0); - assert_eq!(call!(and_si16(0, -32768)), 0); - assert_eq!(call!(and_si16(0, -32767)), 0); - assert_eq!(call!(and_si16(0, -32547)), 0); - assert_eq!(call!(and_si16(0, 0)), 0); - assert_eq!(call!(and_si16(0, 1)), 0); - assert_eq!(call!(and_si16(0, 2)), 0); - assert_eq!(call!(and_si16(0, 3)), 0); - assert_eq!(call!(and_si16(0, 4)), 0); - assert_eq!(call!(and_si16(0, 10486)), 0); - assert_eq!(call!(and_si16(0, 16514)), 0); - assert_eq!(call!(and_si16(0, 32766)), 0); - assert_eq!(call!(and_si16(0, 32767)), 0); - assert_eq!(call!(and_si16(1, -32768)), 0); - assert_eq!(call!(and_si16(1, 0)), 0); - assert_eq!(call!(and_si16(1, 2)), 0); - assert_eq!(call!(and_si16(1, 4)), 0); - assert_eq!(call!(and_si16(1, 10486)), 0); - assert_eq!(call!(and_si16(1, 16514)), 0); - assert_eq!(call!(and_si16(1, 32766)), 0); - assert_eq!(call!(and_si16(2, -32768)), 0); - assert_eq!(call!(and_si16(2, -32767)), 0); - assert_eq!(call!(and_si16(2, -32547)), 0); - assert_eq!(call!(and_si16(2, 0)), 0); - assert_eq!(call!(and_si16(2, 1)), 0); - assert_eq!(call!(and_si16(2, 4)), 0); - assert_eq!(call!(and_si16(3, -32768)), 0); - assert_eq!(call!(and_si16(3, 0)), 0); - assert_eq!(call!(and_si16(3, 4)), 0); - assert_eq!(call!(and_si16(4, -32768)), 0); - assert_eq!(call!(and_si16(4, -32767)), 0); - assert_eq!(call!(and_si16(4, 0)), 0); - assert_eq!(call!(and_si16(4, 1)), 0); - assert_eq!(call!(and_si16(4, 2)), 0); - assert_eq!(call!(and_si16(4, 3)), 0); - assert_eq!(call!(and_si16(4, 16514)), 0); - assert_eq!(call!(and_si16(10486, -32768)), 0); - assert_eq!(call!(and_si16(10486, -32767)), 0); - assert_eq!(call!(and_si16(10486, 0)), 0); - assert_eq!(call!(and_si16(10486, 1)), 0); - assert_eq!(call!(and_si16(16514, -32768)), 0); - assert_eq!(call!(and_si16(16514, -32767)), 0); - assert_eq!(call!(and_si16(16514, 0)), 0); - assert_eq!(call!(and_si16(16514, 1)), 0); - assert_eq!(call!(and_si16(16514, 4)), 0); - assert_eq!(call!(and_si16(32766, -32768)), 0); - assert_eq!(call!(and_si16(32766, -32767)), 0); - assert_eq!(call!(and_si16(32766, 0)), 0); - assert_eq!(call!(and_si16(32766, 1)), 0); - assert_eq!(call!(and_si16(32767, -32768)), 0); - assert_eq!(call!(and_si16(32767, 0)), 0); - assert_eq!(call!(and_si16(-32767, 1)), 1); - assert_eq!(call!(and_si16(-32767, 3)), 1); - assert_eq!(call!(and_si16(-32767, 32767)), 1); - assert_eq!(call!(and_si16(-32547, 1)), 1); - assert_eq!(call!(and_si16(-32547, 3)), 1); - assert_eq!(call!(and_si16(1, -32767)), 1); - assert_eq!(call!(and_si16(1, -32547)), 1); - assert_eq!(call!(and_si16(1, 1)), 1); - assert_eq!(call!(and_si16(1, 3)), 1); - assert_eq!(call!(and_si16(1, 32767)), 1); - assert_eq!(call!(and_si16(3, -32767)), 1); - assert_eq!(call!(and_si16(3, -32547)), 1); - assert_eq!(call!(and_si16(3, 1)), 1); - assert_eq!(call!(and_si16(32767, -32767)), 1); - assert_eq!(call!(and_si16(32767, 1)), 1); - assert_eq!(call!(and_si16(2, 2)), 2); - assert_eq!(call!(and_si16(2, 3)), 2); - assert_eq!(call!(and_si16(2, 10486)), 2); - assert_eq!(call!(and_si16(2, 16514)), 2); - assert_eq!(call!(and_si16(2, 32766)), 2); - assert_eq!(call!(and_si16(2, 32767)), 2); - assert_eq!(call!(and_si16(3, 2)), 2); - assert_eq!(call!(and_si16(3, 10486)), 2); - assert_eq!(call!(and_si16(3, 16514)), 2); - assert_eq!(call!(and_si16(3, 32766)), 2); - assert_eq!(call!(and_si16(10486, 2)), 2); - assert_eq!(call!(and_si16(10486, 3)), 2); - assert_eq!(call!(and_si16(16514, 2)), 2); - assert_eq!(call!(and_si16(16514, 3)), 2); - assert_eq!(call!(and_si16(32766, 2)), 2); - assert_eq!(call!(and_si16(32766, 3)), 2); - assert_eq!(call!(and_si16(32767, 2)), 2); - assert_eq!(call!(and_si16(3, 3)), 3); - assert_eq!(call!(and_si16(3, 32767)), 3); - assert_eq!(call!(and_si16(32767, 3)), 3); - assert_eq!(call!(and_si16(-32547, 4)), 4); - assert_eq!(call!(and_si16(4, -32547)), 4); - assert_eq!(call!(and_si16(4, 4)), 4); - assert_eq!(call!(and_si16(4, 10486)), 4); - assert_eq!(call!(and_si16(4, 32766)), 4); - assert_eq!(call!(and_si16(4, 32767)), 4); - assert_eq!(call!(and_si16(10486, 4)), 4); - assert_eq!(call!(and_si16(32766, 4)), 4); - assert_eq!(call!(and_si16(32767, 4)), 4); - assert_eq!(call!(and_si16(-32547, 16514)), 128); - assert_eq!(call!(and_si16(16514, -32547)), 128); - assert_eq!(call!(and_si16(10486, 16514)), 130); - assert_eq!(call!(and_si16(16514, 10486)), 130); - assert_eq!(call!(and_si16(-32547, 10486)), 212); - assert_eq!(call!(and_si16(10486, -32547)), 212); - assert_eq!(call!(and_si16(-32547, 32766)), 220); - assert_eq!(call!(and_si16(32766, -32547)), 220); - assert_eq!(call!(and_si16(-32547, 32767)), 221); - assert_eq!(call!(and_si16(32767, -32547)), 221); - assert_eq!(call!(and_si16(10486, 10486)), 10486); - assert_eq!(call!(and_si16(10486, 32766)), 10486); - assert_eq!(call!(and_si16(10486, 32767)), 10486); - assert_eq!(call!(and_si16(32766, 10486)), 10486); - assert_eq!(call!(and_si16(32767, 10486)), 10486); - assert_eq!(call!(and_si16(16514, 16514)), 16514); - assert_eq!(call!(and_si16(16514, 32766)), 16514); - assert_eq!(call!(and_si16(16514, 32767)), 16514); - assert_eq!(call!(and_si16(32766, 16514)), 16514); - assert_eq!(call!(and_si16(32767, 16514)), 16514); - assert_eq!(call!(and_si16(32766, 32766)), 32766); - assert_eq!(call!(and_si16(32766, 32767)), 32766); - assert_eq!(call!(and_si16(32767, 32766)), 32766); - assert_eq!(call!(and_si16(32767, 32767)), 32767); - assert_eq!(call!(and_si32(-2147483648, -2147483648)), -2147483648); - assert_eq!(call!(and_si32(-2147483648, -2147483647)), -2147483648); - assert_eq!(call!(and_si32(-2147483648, -1713183800)), -2147483648); - assert_eq!(call!(and_si32(-2147483648, -1252582164)), -2147483648); - assert_eq!(call!(and_si32(-2147483648, -1035405763)), -2147483648); - assert_eq!(call!(and_si32(-2147483647, -2147483648)), -2147483648); - assert_eq!(call!(and_si32(-2147483647, -1713183800)), -2147483648); - assert_eq!(call!(and_si32(-2147483647, -1252582164)), -2147483648); - assert_eq!(call!(and_si32(-1713183800, -2147483648)), -2147483648); - assert_eq!(call!(and_si32(-1713183800, -2147483647)), -2147483648); - assert_eq!(call!(and_si32(-1252582164, -2147483648)), -2147483648); - assert_eq!(call!(and_si32(-1252582164, -2147483647)), -2147483648); - assert_eq!(call!(and_si32(-1035405763, -2147483648)), -2147483648); - assert_eq!(call!(and_si32(-2147483647, -2147483647)), -2147483647); - assert_eq!(call!(and_si32(-2147483647, -1035405763)), -2147483647); - assert_eq!(call!(and_si32(-1035405763, -2147483647)), -2147483647); - assert_eq!(call!(and_si32(-1252582164, -1035405763)), -2143284180); - assert_eq!(call!(and_si32(-1035405763, -1252582164)), -2143284180); - assert_eq!(call!(and_si32(-1713183800, -1035405763)), -2143231480); - assert_eq!(call!(and_si32(-1035405763, -1713183800)), -2143231480); - assert_eq!(call!(and_si32(-1713183800, -1252582164)), -1857945400); - assert_eq!(call!(and_si32(-1252582164, -1713183800)), -1857945400); - assert_eq!(call!(and_si32(-1713183800, -1713183800)), -1713183800); - assert_eq!(call!(and_si32(-1252582164, -1252582164)), -1252582164); - assert_eq!(call!(and_si32(-1035405763, -1035405763)), -1035405763); - assert_eq!(call!(and_si32(-2147483648, 0)), 0); - assert_eq!(call!(and_si32(-2147483648, 1)), 0); - assert_eq!(call!(and_si32(-2147483648, 2)), 0); - assert_eq!(call!(and_si32(-2147483648, 3)), 0); - assert_eq!(call!(and_si32(-2147483648, 4)), 0); - assert_eq!(call!(and_si32(-2147483648, 2147483646)), 0); - assert_eq!(call!(and_si32(-2147483648, 2147483647)), 0); - assert_eq!(call!(and_si32(-2147483647, 0)), 0); - assert_eq!(call!(and_si32(-2147483647, 2)), 0); - assert_eq!(call!(and_si32(-2147483647, 4)), 0); - assert_eq!(call!(and_si32(-2147483647, 2147483646)), 0); - assert_eq!(call!(and_si32(-1713183800, 0)), 0); - assert_eq!(call!(and_si32(-1713183800, 1)), 0); - assert_eq!(call!(and_si32(-1713183800, 2)), 0); - assert_eq!(call!(and_si32(-1713183800, 3)), 0); - assert_eq!(call!(and_si32(-1713183800, 4)), 0); - assert_eq!(call!(and_si32(-1252582164, 0)), 0); - assert_eq!(call!(and_si32(-1252582164, 1)), 0); - assert_eq!(call!(and_si32(-1252582164, 2)), 0); - assert_eq!(call!(and_si32(-1252582164, 3)), 0); - assert_eq!(call!(and_si32(-1035405763, 0)), 0); - assert_eq!(call!(and_si32(-1035405763, 2)), 0); - assert_eq!(call!(and_si32(0, -2147483648)), 0); - assert_eq!(call!(and_si32(0, -2147483647)), 0); - assert_eq!(call!(and_si32(0, -1713183800)), 0); - assert_eq!(call!(and_si32(0, -1252582164)), 0); - assert_eq!(call!(and_si32(0, -1035405763)), 0); - assert_eq!(call!(and_si32(0, 0)), 0); - assert_eq!(call!(and_si32(0, 1)), 0); - assert_eq!(call!(and_si32(0, 2)), 0); - assert_eq!(call!(and_si32(0, 3)), 0); - assert_eq!(call!(and_si32(0, 4)), 0); - assert_eq!(call!(and_si32(0, 2147483646)), 0); - assert_eq!(call!(and_si32(0, 2147483647)), 0); - assert_eq!(call!(and_si32(1, -2147483648)), 0); - assert_eq!(call!(and_si32(1, -1713183800)), 0); - assert_eq!(call!(and_si32(1, -1252582164)), 0); - assert_eq!(call!(and_si32(1, 0)), 0); - assert_eq!(call!(and_si32(1, 2)), 0); - assert_eq!(call!(and_si32(1, 4)), 0); - assert_eq!(call!(and_si32(1, 2147483646)), 0); - assert_eq!(call!(and_si32(2, -2147483648)), 0); - assert_eq!(call!(and_si32(2, -2147483647)), 0); - assert_eq!(call!(and_si32(2, -1713183800)), 0); - assert_eq!(call!(and_si32(2, -1252582164)), 0); - assert_eq!(call!(and_si32(2, -1035405763)), 0); - assert_eq!(call!(and_si32(2, 0)), 0); - assert_eq!(call!(and_si32(2, 1)), 0); - assert_eq!(call!(and_si32(2, 4)), 0); - assert_eq!(call!(and_si32(3, -2147483648)), 0); - assert_eq!(call!(and_si32(3, -1713183800)), 0); - assert_eq!(call!(and_si32(3, -1252582164)), 0); - assert_eq!(call!(and_si32(3, 0)), 0); - assert_eq!(call!(and_si32(3, 4)), 0); - assert_eq!(call!(and_si32(4, -2147483648)), 0); - assert_eq!(call!(and_si32(4, -2147483647)), 0); - assert_eq!(call!(and_si32(4, -1713183800)), 0); - assert_eq!(call!(and_si32(4, 0)), 0); - assert_eq!(call!(and_si32(4, 1)), 0); - assert_eq!(call!(and_si32(4, 2)), 0); - assert_eq!(call!(and_si32(4, 3)), 0); - assert_eq!(call!(and_si32(2147483646, -2147483648)), 0); - assert_eq!(call!(and_si32(2147483646, -2147483647)), 0); - assert_eq!(call!(and_si32(2147483646, 0)), 0); - assert_eq!(call!(and_si32(2147483646, 1)), 0); - assert_eq!(call!(and_si32(2147483647, -2147483648)), 0); - assert_eq!(call!(and_si32(2147483647, 0)), 0); - assert_eq!(call!(and_si32(-2147483647, 1)), 1); - assert_eq!(call!(and_si32(-2147483647, 3)), 1); - assert_eq!(call!(and_si32(-2147483647, 2147483647)), 1); - assert_eq!(call!(and_si32(-1035405763, 1)), 1); - assert_eq!(call!(and_si32(-1035405763, 3)), 1); - assert_eq!(call!(and_si32(1, -2147483647)), 1); - assert_eq!(call!(and_si32(1, -1035405763)), 1); - assert_eq!(call!(and_si32(1, 1)), 1); - assert_eq!(call!(and_si32(1, 3)), 1); - assert_eq!(call!(and_si32(1, 2147483647)), 1); - assert_eq!(call!(and_si32(3, -2147483647)), 1); - assert_eq!(call!(and_si32(3, -1035405763)), 1); - assert_eq!(call!(and_si32(3, 1)), 1); - assert_eq!(call!(and_si32(2147483647, -2147483647)), 1); - assert_eq!(call!(and_si32(2147483647, 1)), 1); - assert_eq!(call!(and_si32(2, 2)), 2); - assert_eq!(call!(and_si32(2, 3)), 2); - assert_eq!(call!(and_si32(2, 2147483646)), 2); - assert_eq!(call!(and_si32(2, 2147483647)), 2); - assert_eq!(call!(and_si32(3, 2)), 2); - assert_eq!(call!(and_si32(3, 2147483646)), 2); - assert_eq!(call!(and_si32(2147483646, 2)), 2); - assert_eq!(call!(and_si32(2147483646, 3)), 2); - assert_eq!(call!(and_si32(2147483647, 2)), 2); - assert_eq!(call!(and_si32(3, 3)), 3); - assert_eq!(call!(and_si32(3, 2147483647)), 3); - assert_eq!(call!(and_si32(2147483647, 3)), 3); - assert_eq!(call!(and_si32(-1252582164, 4)), 4); - assert_eq!(call!(and_si32(-1035405763, 4)), 4); - assert_eq!(call!(and_si32(4, -1252582164)), 4); - assert_eq!(call!(and_si32(4, -1035405763)), 4); - assert_eq!(call!(and_si32(4, 4)), 4); - assert_eq!(call!(and_si32(4, 2147483646)), 4); - assert_eq!(call!(and_si32(4, 2147483647)), 4); - assert_eq!(call!(and_si32(2147483646, 4)), 4); - assert_eq!(call!(and_si32(2147483647, 4)), 4); - assert_eq!(call!(and_si32(-1713183800, 2147483646)), 434299848); - assert_eq!(call!(and_si32(-1713183800, 2147483647)), 434299848); - assert_eq!(call!(and_si32(2147483646, -1713183800)), 434299848); - assert_eq!(call!(and_si32(2147483647, -1713183800)), 434299848); - assert_eq!(call!(and_si32(-1252582164, 2147483646)), 894901484); - assert_eq!(call!(and_si32(-1252582164, 2147483647)), 894901484); - assert_eq!(call!(and_si32(2147483646, -1252582164)), 894901484); - assert_eq!(call!(and_si32(2147483647, -1252582164)), 894901484); - assert_eq!(call!(and_si32(-1035405763, 2147483646)), 1112077884); - assert_eq!(call!(and_si32(2147483646, -1035405763)), 1112077884); - assert_eq!(call!(and_si32(-1035405763, 2147483647)), 1112077885); - assert_eq!(call!(and_si32(2147483647, -1035405763)), 1112077885); - assert_eq!(call!(and_si32(2147483646, 2147483646)), 2147483646); - assert_eq!(call!(and_si32(2147483646, 2147483647)), 2147483646); - assert_eq!(call!(and_si32(2147483647, 2147483646)), 2147483646); - assert_eq!(call!(and_si32(2147483647, 2147483647)), 2147483647); - assert_eq!(call!(and_si64(-9223372036854775808, -9223372036854775808)), -9223372036854775808); - assert_eq!(call!(and_si64(-9223372036854775808, -9223372036854775807)), -9223372036854775808); - assert_eq!(call!(and_si64(-9223372036854775808, -1741927215160008704)), -9223372036854775808); - assert_eq!(call!(and_si64(-9223372036854775808, -1328271339354574848)), -9223372036854775808); - assert_eq!(call!(and_si64(-9223372036854775807, -9223372036854775808)), -9223372036854775808); - assert_eq!(call!(and_si64(-9223372036854775807, -1741927215160008704)), -9223372036854775808); - assert_eq!(call!(and_si64(-9223372036854775807, -1328271339354574848)), -9223372036854775808); - assert_eq!(call!(and_si64(-1741927215160008704, -9223372036854775808)), -9223372036854775808); - assert_eq!(call!(and_si64(-1741927215160008704, -9223372036854775807)), -9223372036854775808); - assert_eq!(call!(and_si64(-1328271339354574848, -9223372036854775808)), -9223372036854775808); - assert_eq!(call!(and_si64(-1328271339354574848, -9223372036854775807)), -9223372036854775808); - assert_eq!(call!(and_si64(-9223372036854775807, -9223372036854775807)), -9223372036854775807); - assert_eq!(call!(and_si64(-1741927215160008704, -1328271339354574848)), -1904732091996692480); - assert_eq!(call!(and_si64(-1328271339354574848, -1741927215160008704)), -1904732091996692480); - assert_eq!(call!(and_si64(-1741927215160008704, -1741927215160008704)), -1741927215160008704); - assert_eq!(call!(and_si64(-1328271339354574848, -1328271339354574848)), -1328271339354574848); - assert_eq!(call!(and_si64(-9223372036854775808, 0)), 0); - assert_eq!(call!(and_si64(-9223372036854775808, 1)), 0); - assert_eq!(call!(and_si64(-9223372036854775808, 2)), 0); - assert_eq!(call!(and_si64(-9223372036854775808, 3)), 0); - assert_eq!(call!(and_si64(-9223372036854775808, 4)), 0); - assert_eq!(call!(and_si64(-9223372036854775808, 5577148965131116544)), 0); - assert_eq!(call!(and_si64(-9223372036854775808, 9223372036854775806)), 0); - assert_eq!(call!(and_si64(-9223372036854775808, 9223372036854775807)), 0); - assert_eq!(call!(and_si64(-9223372036854775807, 0)), 0); - assert_eq!(call!(and_si64(-9223372036854775807, 2)), 0); - assert_eq!(call!(and_si64(-9223372036854775807, 4)), 0); - assert_eq!(call!(and_si64(-9223372036854775807, 5577148965131116544)), 0); - assert_eq!(call!(and_si64(-9223372036854775807, 9223372036854775806)), 0); - assert_eq!(call!(and_si64(-1741927215160008704, 0)), 0); - assert_eq!(call!(and_si64(-1741927215160008704, 1)), 0); - assert_eq!(call!(and_si64(-1741927215160008704, 2)), 0); - assert_eq!(call!(and_si64(-1741927215160008704, 3)), 0); - assert_eq!(call!(and_si64(-1741927215160008704, 4)), 0); - assert_eq!(call!(and_si64(-1328271339354574848, 0)), 0); - assert_eq!(call!(and_si64(-1328271339354574848, 1)), 0); - assert_eq!(call!(and_si64(-1328271339354574848, 2)), 0); - assert_eq!(call!(and_si64(-1328271339354574848, 3)), 0); - assert_eq!(call!(and_si64(-1328271339354574848, 4)), 0); - assert_eq!(call!(and_si64(0, -9223372036854775808)), 0); - assert_eq!(call!(and_si64(0, -9223372036854775807)), 0); - assert_eq!(call!(and_si64(0, -1741927215160008704)), 0); - assert_eq!(call!(and_si64(0, -1328271339354574848)), 0); - assert_eq!(call!(and_si64(0, 0)), 0); - assert_eq!(call!(and_si64(0, 1)), 0); - assert_eq!(call!(and_si64(0, 2)), 0); - assert_eq!(call!(and_si64(0, 3)), 0); - assert_eq!(call!(and_si64(0, 4)), 0); - assert_eq!(call!(and_si64(0, 5577148965131116544)), 0); - assert_eq!(call!(and_si64(0, 9223372036854775806)), 0); - assert_eq!(call!(and_si64(0, 9223372036854775807)), 0); - assert_eq!(call!(and_si64(1, -9223372036854775808)), 0); - assert_eq!(call!(and_si64(1, -1741927215160008704)), 0); - assert_eq!(call!(and_si64(1, -1328271339354574848)), 0); - assert_eq!(call!(and_si64(1, 0)), 0); - assert_eq!(call!(and_si64(1, 2)), 0); - assert_eq!(call!(and_si64(1, 4)), 0); - assert_eq!(call!(and_si64(1, 5577148965131116544)), 0); - assert_eq!(call!(and_si64(1, 9223372036854775806)), 0); - assert_eq!(call!(and_si64(2, -9223372036854775808)), 0); - assert_eq!(call!(and_si64(2, -9223372036854775807)), 0); - assert_eq!(call!(and_si64(2, -1741927215160008704)), 0); - assert_eq!(call!(and_si64(2, -1328271339354574848)), 0); - assert_eq!(call!(and_si64(2, 0)), 0); - assert_eq!(call!(and_si64(2, 1)), 0); - assert_eq!(call!(and_si64(2, 4)), 0); - assert_eq!(call!(and_si64(2, 5577148965131116544)), 0); - assert_eq!(call!(and_si64(3, -9223372036854775808)), 0); - assert_eq!(call!(and_si64(3, -1741927215160008704)), 0); - assert_eq!(call!(and_si64(3, -1328271339354574848)), 0); - assert_eq!(call!(and_si64(3, 0)), 0); - assert_eq!(call!(and_si64(3, 4)), 0); - assert_eq!(call!(and_si64(3, 5577148965131116544)), 0); - assert_eq!(call!(and_si64(4, -9223372036854775808)), 0); - assert_eq!(call!(and_si64(4, -9223372036854775807)), 0); - assert_eq!(call!(and_si64(4, -1741927215160008704)), 0); - assert_eq!(call!(and_si64(4, -1328271339354574848)), 0); - assert_eq!(call!(and_si64(4, 0)), 0); - assert_eq!(call!(and_si64(4, 1)), 0); - assert_eq!(call!(and_si64(4, 2)), 0); - assert_eq!(call!(and_si64(4, 3)), 0); - assert_eq!(call!(and_si64(4, 5577148965131116544)), 0); - assert_eq!(call!(and_si64(5577148965131116544, -9223372036854775808)), 0); - assert_eq!(call!(and_si64(5577148965131116544, -9223372036854775807)), 0); - assert_eq!(call!(and_si64(5577148965131116544, 0)), 0); - assert_eq!(call!(and_si64(5577148965131116544, 1)), 0); - assert_eq!(call!(and_si64(5577148965131116544, 2)), 0); - assert_eq!(call!(and_si64(5577148965131116544, 3)), 0); - assert_eq!(call!(and_si64(5577148965131116544, 4)), 0); - assert_eq!(call!(and_si64(9223372036854775806, -9223372036854775808)), 0); - assert_eq!(call!(and_si64(9223372036854775806, -9223372036854775807)), 0); - assert_eq!(call!(and_si64(9223372036854775806, 0)), 0); - assert_eq!(call!(and_si64(9223372036854775806, 1)), 0); - assert_eq!(call!(and_si64(9223372036854775807, -9223372036854775808)), 0); - assert_eq!(call!(and_si64(9223372036854775807, 0)), 0); - assert_eq!(call!(and_si64(-9223372036854775807, 1)), 1); - assert_eq!(call!(and_si64(-9223372036854775807, 3)), 1); - assert_eq!(call!(and_si64(-9223372036854775807, 9223372036854775807)), 1); - assert_eq!(call!(and_si64(1, -9223372036854775807)), 1); - assert_eq!(call!(and_si64(1, 1)), 1); - assert_eq!(call!(and_si64(1, 3)), 1); - assert_eq!(call!(and_si64(1, 9223372036854775807)), 1); - assert_eq!(call!(and_si64(3, -9223372036854775807)), 1); - assert_eq!(call!(and_si64(3, 1)), 1); - assert_eq!(call!(and_si64(9223372036854775807, -9223372036854775807)), 1); - assert_eq!(call!(and_si64(9223372036854775807, 1)), 1); - assert_eq!(call!(and_si64(2, 2)), 2); - assert_eq!(call!(and_si64(2, 3)), 2); - assert_eq!(call!(and_si64(2, 9223372036854775806)), 2); - assert_eq!(call!(and_si64(2, 9223372036854775807)), 2); - assert_eq!(call!(and_si64(3, 2)), 2); - assert_eq!(call!(and_si64(3, 9223372036854775806)), 2); - assert_eq!(call!(and_si64(9223372036854775806, 2)), 2); - assert_eq!(call!(and_si64(9223372036854775806, 3)), 2); - assert_eq!(call!(and_si64(9223372036854775807, 2)), 2); - assert_eq!(call!(and_si64(3, 3)), 3); - assert_eq!(call!(and_si64(3, 9223372036854775807)), 3); - assert_eq!(call!(and_si64(9223372036854775807, 3)), 3); - assert_eq!(call!(and_si64(4, 4)), 4); - assert_eq!(call!(and_si64(4, 9223372036854775806)), 4); - assert_eq!(call!(and_si64(4, 9223372036854775807)), 4); - assert_eq!(call!(and_si64(9223372036854775806, 4)), 4); - assert_eq!(call!(and_si64(9223372036854775807, 4)), 4); - assert_eq!(call!(and_si64(-1741927215160008704, 5577148965131116544)), 4990554005496225792); - assert_eq!(call!(and_si64(5577148965131116544, -1741927215160008704)), 4990554005496225792); - assert_eq!(call!(and_si64(-1328271339354574848, 5577148965131116544)), 5548435020295708672); - assert_eq!(call!(and_si64(5577148965131116544, -1328271339354574848)), 5548435020295708672); - assert_eq!(call!(and_si64(5577148965131116544, 5577148965131116544)), 5577148965131116544); - assert_eq!(call!(and_si64(5577148965131116544, 9223372036854775806)), 5577148965131116544); - assert_eq!(call!(and_si64(5577148965131116544, 9223372036854775807)), 5577148965131116544); - assert_eq!(call!(and_si64(9223372036854775806, 5577148965131116544)), 5577148965131116544); - assert_eq!(call!(and_si64(9223372036854775807, 5577148965131116544)), 5577148965131116544); - assert_eq!(call!(and_si64(-1741927215160008704, 9223372036854775806)), 7481444821694767104); - assert_eq!(call!(and_si64(-1741927215160008704, 9223372036854775807)), 7481444821694767104); - assert_eq!(call!(and_si64(9223372036854775806, -1741927215160008704)), 7481444821694767104); - assert_eq!(call!(and_si64(9223372036854775807, -1741927215160008704)), 7481444821694767104); - assert_eq!(call!(and_si64(-1328271339354574848, 9223372036854775806)), 7895100697500200960); - assert_eq!(call!(and_si64(-1328271339354574848, 9223372036854775807)), 7895100697500200960); - assert_eq!(call!(and_si64(9223372036854775806, -1328271339354574848)), 7895100697500200960); - assert_eq!(call!(and_si64(9223372036854775807, -1328271339354574848)), 7895100697500200960); - assert_eq!(call!(and_si64(9223372036854775806, 9223372036854775806)), 9223372036854775806); - assert_eq!(call!(and_si64(9223372036854775806, 9223372036854775807)), 9223372036854775806); - assert_eq!(call!(and_si64(9223372036854775807, 9223372036854775806)), 9223372036854775806); - assert_eq!(call!(and_si64(9223372036854775807, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(and_si8(-128, -128)), -128); - assert_eq!(call!(and_si8(-128, -127)), -128); - assert_eq!(call!(and_si8(-127, -128)), -128); - assert_eq!(call!(and_si8(-127, -127)), -127); - assert_eq!(call!(and_si8(-128, 0)), 0); - assert_eq!(call!(and_si8(-128, 1)), 0); - assert_eq!(call!(and_si8(-128, 2)), 0); - assert_eq!(call!(and_si8(-128, 3)), 0); - assert_eq!(call!(and_si8(-128, 4)), 0); - assert_eq!(call!(and_si8(-128, 16)), 0); - assert_eq!(call!(and_si8(-128, 126)), 0); - assert_eq!(call!(and_si8(-128, 127)), 0); - assert_eq!(call!(and_si8(-127, 0)), 0); - assert_eq!(call!(and_si8(-127, 2)), 0); - assert_eq!(call!(and_si8(-127, 4)), 0); - assert_eq!(call!(and_si8(-127, 16)), 0); - assert_eq!(call!(and_si8(-127, 126)), 0); - assert_eq!(call!(and_si8(0, -128)), 0); - assert_eq!(call!(and_si8(0, -127)), 0); - assert_eq!(call!(and_si8(0, 0)), 0); - assert_eq!(call!(and_si8(0, 1)), 0); - assert_eq!(call!(and_si8(0, 2)), 0); - assert_eq!(call!(and_si8(0, 3)), 0); - assert_eq!(call!(and_si8(0, 4)), 0); - assert_eq!(call!(and_si8(0, 16)), 0); - assert_eq!(call!(and_si8(0, 126)), 0); - assert_eq!(call!(and_si8(0, 127)), 0); - assert_eq!(call!(and_si8(1, -128)), 0); - assert_eq!(call!(and_si8(1, 0)), 0); - assert_eq!(call!(and_si8(1, 2)), 0); - assert_eq!(call!(and_si8(1, 4)), 0); - assert_eq!(call!(and_si8(1, 16)), 0); - assert_eq!(call!(and_si8(1, 126)), 0); - assert_eq!(call!(and_si8(2, -128)), 0); - assert_eq!(call!(and_si8(2, -127)), 0); - assert_eq!(call!(and_si8(2, 0)), 0); - assert_eq!(call!(and_si8(2, 1)), 0); - assert_eq!(call!(and_si8(2, 4)), 0); - assert_eq!(call!(and_si8(2, 16)), 0); - assert_eq!(call!(and_si8(3, -128)), 0); - assert_eq!(call!(and_si8(3, 0)), 0); - assert_eq!(call!(and_si8(3, 4)), 0); - assert_eq!(call!(and_si8(3, 16)), 0); - assert_eq!(call!(and_si8(4, -128)), 0); - assert_eq!(call!(and_si8(4, -127)), 0); - assert_eq!(call!(and_si8(4, 0)), 0); - assert_eq!(call!(and_si8(4, 1)), 0); - assert_eq!(call!(and_si8(4, 2)), 0); - assert_eq!(call!(and_si8(4, 3)), 0); - assert_eq!(call!(and_si8(4, 16)), 0); - assert_eq!(call!(and_si8(16, -128)), 0); - assert_eq!(call!(and_si8(16, -127)), 0); - assert_eq!(call!(and_si8(16, 0)), 0); - assert_eq!(call!(and_si8(16, 1)), 0); - assert_eq!(call!(and_si8(16, 2)), 0); - assert_eq!(call!(and_si8(16, 3)), 0); - assert_eq!(call!(and_si8(16, 4)), 0); - assert_eq!(call!(and_si8(126, -128)), 0); - assert_eq!(call!(and_si8(126, -127)), 0); - assert_eq!(call!(and_si8(126, 0)), 0); - assert_eq!(call!(and_si8(126, 1)), 0); - assert_eq!(call!(and_si8(127, -128)), 0); - assert_eq!(call!(and_si8(127, 0)), 0); - assert_eq!(call!(and_si8(-127, 1)), 1); - assert_eq!(call!(and_si8(-127, 3)), 1); - assert_eq!(call!(and_si8(-127, 127)), 1); - assert_eq!(call!(and_si8(1, -127)), 1); - assert_eq!(call!(and_si8(1, 1)), 1); - assert_eq!(call!(and_si8(1, 3)), 1); - assert_eq!(call!(and_si8(1, 127)), 1); - assert_eq!(call!(and_si8(3, -127)), 1); - assert_eq!(call!(and_si8(3, 1)), 1); - assert_eq!(call!(and_si8(127, -127)), 1); - assert_eq!(call!(and_si8(127, 1)), 1); - assert_eq!(call!(and_si8(2, 2)), 2); - assert_eq!(call!(and_si8(2, 3)), 2); - assert_eq!(call!(and_si8(2, 126)), 2); - assert_eq!(call!(and_si8(2, 127)), 2); - assert_eq!(call!(and_si8(3, 2)), 2); - assert_eq!(call!(and_si8(3, 126)), 2); - assert_eq!(call!(and_si8(126, 2)), 2); - assert_eq!(call!(and_si8(126, 3)), 2); - assert_eq!(call!(and_si8(127, 2)), 2); - assert_eq!(call!(and_si8(3, 3)), 3); - assert_eq!(call!(and_si8(3, 127)), 3); - assert_eq!(call!(and_si8(127, 3)), 3); - assert_eq!(call!(and_si8(4, 4)), 4); - assert_eq!(call!(and_si8(4, 126)), 4); - assert_eq!(call!(and_si8(4, 127)), 4); - assert_eq!(call!(and_si8(126, 4)), 4); - assert_eq!(call!(and_si8(127, 4)), 4); - assert_eq!(call!(and_si8(16, 16)), 16); - assert_eq!(call!(and_si8(16, 126)), 16); - assert_eq!(call!(and_si8(16, 127)), 16); - assert_eq!(call!(and_si8(126, 16)), 16); - assert_eq!(call!(and_si8(127, 16)), 16); - assert_eq!(call!(and_si8(126, 126)), 126); - assert_eq!(call!(and_si8(126, 127)), 126); - assert_eq!(call!(and_si8(127, 126)), 126); - assert_eq!(call!(and_si8(127, 127)), 127); - assert_eq!(call!(and_ui16(0, 0)), 0); - assert_eq!(call!(and_ui16(0, 1)), 0); - assert_eq!(call!(and_ui16(0, 2)), 0); - assert_eq!(call!(and_ui16(0, 3)), 0); - assert_eq!(call!(and_ui16(0, 4)), 0); - assert_eq!(call!(and_ui16(0, 1717)), 0); - assert_eq!(call!(and_ui16(0, 17988)), 0); - assert_eq!(call!(and_ui16(0, 65096)), 0); - assert_eq!(call!(and_ui16(0, 65534)), 0); - assert_eq!(call!(and_ui16(0, 65535)), 0); - assert_eq!(call!(and_ui16(1, 0)), 0); - assert_eq!(call!(and_ui16(1, 2)), 0); - assert_eq!(call!(and_ui16(1, 4)), 0); - assert_eq!(call!(and_ui16(1, 17988)), 0); - assert_eq!(call!(and_ui16(1, 65096)), 0); - assert_eq!(call!(and_ui16(1, 65534)), 0); - assert_eq!(call!(and_ui16(2, 0)), 0); - assert_eq!(call!(and_ui16(2, 1)), 0); - assert_eq!(call!(and_ui16(2, 4)), 0); - assert_eq!(call!(and_ui16(2, 1717)), 0); - assert_eq!(call!(and_ui16(2, 17988)), 0); - assert_eq!(call!(and_ui16(2, 65096)), 0); - assert_eq!(call!(and_ui16(3, 0)), 0); - assert_eq!(call!(and_ui16(3, 4)), 0); - assert_eq!(call!(and_ui16(3, 17988)), 0); - assert_eq!(call!(and_ui16(3, 65096)), 0); - assert_eq!(call!(and_ui16(4, 0)), 0); - assert_eq!(call!(and_ui16(4, 1)), 0); - assert_eq!(call!(and_ui16(4, 2)), 0); - assert_eq!(call!(and_ui16(4, 3)), 0); - assert_eq!(call!(and_ui16(4, 65096)), 0); - assert_eq!(call!(and_ui16(1717, 0)), 0); - assert_eq!(call!(and_ui16(1717, 2)), 0); - assert_eq!(call!(and_ui16(17988, 0)), 0); - assert_eq!(call!(and_ui16(17988, 1)), 0); - assert_eq!(call!(and_ui16(17988, 2)), 0); - assert_eq!(call!(and_ui16(17988, 3)), 0); - assert_eq!(call!(and_ui16(65096, 0)), 0); - assert_eq!(call!(and_ui16(65096, 1)), 0); - assert_eq!(call!(and_ui16(65096, 2)), 0); - assert_eq!(call!(and_ui16(65096, 3)), 0); - assert_eq!(call!(and_ui16(65096, 4)), 0); - assert_eq!(call!(and_ui16(65534, 0)), 0); - assert_eq!(call!(and_ui16(65534, 1)), 0); - assert_eq!(call!(and_ui16(65535, 0)), 0); - assert_eq!(call!(and_ui16(1, 1)), 1); - assert_eq!(call!(and_ui16(1, 3)), 1); - assert_eq!(call!(and_ui16(1, 1717)), 1); - assert_eq!(call!(and_ui16(1, 65535)), 1); - assert_eq!(call!(and_ui16(3, 1)), 1); - assert_eq!(call!(and_ui16(3, 1717)), 1); - assert_eq!(call!(and_ui16(1717, 1)), 1); - assert_eq!(call!(and_ui16(1717, 3)), 1); - assert_eq!(call!(and_ui16(65535, 1)), 1); - assert_eq!(call!(and_ui16(2, 2)), 2); - assert_eq!(call!(and_ui16(2, 3)), 2); - assert_eq!(call!(and_ui16(2, 65534)), 2); - assert_eq!(call!(and_ui16(2, 65535)), 2); - assert_eq!(call!(and_ui16(3, 2)), 2); - assert_eq!(call!(and_ui16(3, 65534)), 2); - assert_eq!(call!(and_ui16(65534, 2)), 2); - assert_eq!(call!(and_ui16(65534, 3)), 2); - assert_eq!(call!(and_ui16(65535, 2)), 2); - assert_eq!(call!(and_ui16(3, 3)), 3); - assert_eq!(call!(and_ui16(3, 65535)), 3); - assert_eq!(call!(and_ui16(65535, 3)), 3); - assert_eq!(call!(and_ui16(4, 4)), 4); - assert_eq!(call!(and_ui16(4, 1717)), 4); - assert_eq!(call!(and_ui16(4, 17988)), 4); - assert_eq!(call!(and_ui16(4, 65534)), 4); - assert_eq!(call!(and_ui16(4, 65535)), 4); - assert_eq!(call!(and_ui16(1717, 4)), 4); - assert_eq!(call!(and_ui16(17988, 4)), 4); - assert_eq!(call!(and_ui16(65534, 4)), 4); - assert_eq!(call!(and_ui16(65535, 4)), 4); - assert_eq!(call!(and_ui16(1717, 65096)), 1536); - assert_eq!(call!(and_ui16(65096, 1717)), 1536); - assert_eq!(call!(and_ui16(1717, 17988)), 1540); - assert_eq!(call!(and_ui16(17988, 1717)), 1540); - assert_eq!(call!(and_ui16(1717, 65534)), 1716); - assert_eq!(call!(and_ui16(65534, 1717)), 1716); - assert_eq!(call!(and_ui16(1717, 1717)), 1717); - assert_eq!(call!(and_ui16(1717, 65535)), 1717); - assert_eq!(call!(and_ui16(65535, 1717)), 1717); - assert_eq!(call!(and_ui16(17988, 65096)), 17984); - assert_eq!(call!(and_ui16(65096, 17988)), 17984); - assert_eq!(call!(and_ui16(17988, 17988)), 17988); - assert_eq!(call!(and_ui16(17988, 65534)), 17988); - assert_eq!(call!(and_ui16(17988, 65535)), 17988); - assert_eq!(call!(and_ui16(65534, 17988)), 17988); - assert_eq!(call!(and_ui16(65535, 17988)), 17988); - assert_eq!(call!(and_ui16(65096, 65096)), 65096); - assert_eq!(call!(and_ui16(65096, 65534)), 65096); - assert_eq!(call!(and_ui16(65096, 65535)), 65096); - assert_eq!(call!(and_ui16(65534, 65096)), 65096); - assert_eq!(call!(and_ui16(65535, 65096)), 65096); - assert_eq!(call!(and_ui16(65534, 65534)), 65534); - assert_eq!(call!(and_ui16(65534, 65535)), 65534); - assert_eq!(call!(and_ui16(65535, 65534)), 65534); - assert_eq!(call!(and_ui16(65535, 65535)), 65535); - assert_eq!(call!(and_ui32(0, 0)), 0); - assert_eq!(call!(and_ui32(0, 1)), 0); - assert_eq!(call!(and_ui32(0, 2)), 0); - assert_eq!(call!(and_ui32(0, 3)), 0); - assert_eq!(call!(and_ui32(0, 4)), 0); - assert_eq!(call!(and_ui32(0, 2119154652)), 0); - assert_eq!(call!(and_ui32(0, 3002788344)), 0); - assert_eq!(call!(and_ui32(0, 3482297128)), 0); - assert_eq!(call!(and_ui32(0, 4294967294)), 0); - assert_eq!(call!(and_ui32(0, 4294967295)), 0); - assert_eq!(call!(and_ui32(1, 0)), 0); - assert_eq!(call!(and_ui32(1, 2)), 0); - assert_eq!(call!(and_ui32(1, 4)), 0); - assert_eq!(call!(and_ui32(1, 2119154652)), 0); - assert_eq!(call!(and_ui32(1, 3002788344)), 0); - assert_eq!(call!(and_ui32(1, 3482297128)), 0); - assert_eq!(call!(and_ui32(1, 4294967294)), 0); - assert_eq!(call!(and_ui32(2, 0)), 0); - assert_eq!(call!(and_ui32(2, 1)), 0); - assert_eq!(call!(and_ui32(2, 4)), 0); - assert_eq!(call!(and_ui32(2, 2119154652)), 0); - assert_eq!(call!(and_ui32(2, 3002788344)), 0); - assert_eq!(call!(and_ui32(2, 3482297128)), 0); - assert_eq!(call!(and_ui32(3, 0)), 0); - assert_eq!(call!(and_ui32(3, 4)), 0); - assert_eq!(call!(and_ui32(3, 2119154652)), 0); - assert_eq!(call!(and_ui32(3, 3002788344)), 0); - assert_eq!(call!(and_ui32(3, 3482297128)), 0); - assert_eq!(call!(and_ui32(4, 0)), 0); - assert_eq!(call!(and_ui32(4, 1)), 0); - assert_eq!(call!(and_ui32(4, 2)), 0); - assert_eq!(call!(and_ui32(4, 3)), 0); - assert_eq!(call!(and_ui32(4, 3002788344)), 0); - assert_eq!(call!(and_ui32(4, 3482297128)), 0); - assert_eq!(call!(and_ui32(2119154652, 0)), 0); - assert_eq!(call!(and_ui32(2119154652, 1)), 0); - assert_eq!(call!(and_ui32(2119154652, 2)), 0); - assert_eq!(call!(and_ui32(2119154652, 3)), 0); - assert_eq!(call!(and_ui32(3002788344, 0)), 0); - assert_eq!(call!(and_ui32(3002788344, 1)), 0); - assert_eq!(call!(and_ui32(3002788344, 2)), 0); - assert_eq!(call!(and_ui32(3002788344, 3)), 0); - assert_eq!(call!(and_ui32(3002788344, 4)), 0); - assert_eq!(call!(and_ui32(3482297128, 0)), 0); - assert_eq!(call!(and_ui32(3482297128, 1)), 0); - assert_eq!(call!(and_ui32(3482297128, 2)), 0); - assert_eq!(call!(and_ui32(3482297128, 3)), 0); - assert_eq!(call!(and_ui32(3482297128, 4)), 0); - assert_eq!(call!(and_ui32(4294967294, 0)), 0); - assert_eq!(call!(and_ui32(4294967294, 1)), 0); - assert_eq!(call!(and_ui32(4294967295, 0)), 0); - assert_eq!(call!(and_ui32(1, 1)), 1); - assert_eq!(call!(and_ui32(1, 3)), 1); - assert_eq!(call!(and_ui32(1, 4294967295)), 1); - assert_eq!(call!(and_ui32(3, 1)), 1); - assert_eq!(call!(and_ui32(4294967295, 1)), 1); - assert_eq!(call!(and_ui32(2, 2)), 2); - assert_eq!(call!(and_ui32(2, 3)), 2); - assert_eq!(call!(and_ui32(2, 4294967294)), 2); - assert_eq!(call!(and_ui32(2, 4294967295)), 2); - assert_eq!(call!(and_ui32(3, 2)), 2); - assert_eq!(call!(and_ui32(3, 4294967294)), 2); - assert_eq!(call!(and_ui32(4294967294, 2)), 2); - assert_eq!(call!(and_ui32(4294967294, 3)), 2); - assert_eq!(call!(and_ui32(4294967295, 2)), 2); - assert_eq!(call!(and_ui32(3, 3)), 3); - assert_eq!(call!(and_ui32(3, 4294967295)), 3); - assert_eq!(call!(and_ui32(4294967295, 3)), 3); - assert_eq!(call!(and_ui32(4, 4)), 4); - assert_eq!(call!(and_ui32(4, 2119154652)), 4); - assert_eq!(call!(and_ui32(4, 4294967294)), 4); - assert_eq!(call!(and_ui32(4, 4294967295)), 4); - assert_eq!(call!(and_ui32(2119154652, 4)), 4); - assert_eq!(call!(and_ui32(4294967294, 4)), 4); - assert_eq!(call!(and_ui32(4294967295, 4)), 4); - assert_eq!(call!(and_ui32(2119154652, 3002788344)), 843753944); - assert_eq!(call!(and_ui32(3002788344, 2119154652)), 843753944); - assert_eq!(call!(and_ui32(2119154652, 3482297128)), 1309647624); - assert_eq!(call!(and_ui32(3482297128, 2119154652)), 1309647624); - assert_eq!(call!(and_ui32(2119154652, 2119154652)), 2119154652); - assert_eq!(call!(and_ui32(2119154652, 4294967294)), 2119154652); - assert_eq!(call!(and_ui32(2119154652, 4294967295)), 2119154652); - assert_eq!(call!(and_ui32(4294967294, 2119154652)), 2119154652); - assert_eq!(call!(and_ui32(4294967295, 2119154652)), 2119154652); - assert_eq!(call!(and_ui32(3002788344, 3482297128)), 2190123304); - assert_eq!(call!(and_ui32(3482297128, 3002788344)), 2190123304); - assert_eq!(call!(and_ui32(3002788344, 3002788344)), 3002788344); - assert_eq!(call!(and_ui32(3002788344, 4294967294)), 3002788344); - assert_eq!(call!(and_ui32(3002788344, 4294967295)), 3002788344); - assert_eq!(call!(and_ui32(4294967294, 3002788344)), 3002788344); - assert_eq!(call!(and_ui32(4294967295, 3002788344)), 3002788344); - assert_eq!(call!(and_ui32(3482297128, 3482297128)), 3482297128); - assert_eq!(call!(and_ui32(3482297128, 4294967294)), 3482297128); - assert_eq!(call!(and_ui32(3482297128, 4294967295)), 3482297128); - assert_eq!(call!(and_ui32(4294967294, 3482297128)), 3482297128); - assert_eq!(call!(and_ui32(4294967295, 3482297128)), 3482297128); - assert_eq!(call!(and_ui32(4294967294, 4294967294)), 4294967294); - assert_eq!(call!(and_ui32(4294967294, 4294967295)), 4294967294); - assert_eq!(call!(and_ui32(4294967295, 4294967294)), 4294967294); - assert_eq!(call!(and_ui32(4294967295, 4294967295)), 4294967295); - assert_eq!(call!(and_ui64(0, 0)), 0); - assert_eq!(call!(and_ui64(0, 1)), 0); - assert_eq!(call!(and_ui64(0, 2)), 0); - assert_eq!(call!(and_ui64(0, 3)), 0); - assert_eq!(call!(and_ui64(0, 4)), 0); - assert_eq!(call!(and_ui64(0, 191084152064409600)), 0); - assert_eq!(call!(and_ui64(0, 11015955194427482112)), 0); - assert_eq!(call!(and_ui64(0, 16990600415051759616)), 0); - assert_eq!(call!(and_ui64(0, 18446744073709551614)), 0); - assert_eq!(call!(and_ui64(0, 18446744073709551615)), 0); - assert_eq!(call!(and_ui64(1, 0)), 0); - assert_eq!(call!(and_ui64(1, 2)), 0); - assert_eq!(call!(and_ui64(1, 4)), 0); - assert_eq!(call!(and_ui64(1, 191084152064409600)), 0); - assert_eq!(call!(and_ui64(1, 11015955194427482112)), 0); - assert_eq!(call!(and_ui64(1, 16990600415051759616)), 0); - assert_eq!(call!(and_ui64(1, 18446744073709551614)), 0); - assert_eq!(call!(and_ui64(2, 0)), 0); - assert_eq!(call!(and_ui64(2, 1)), 0); - assert_eq!(call!(and_ui64(2, 4)), 0); - assert_eq!(call!(and_ui64(2, 191084152064409600)), 0); - assert_eq!(call!(and_ui64(2, 11015955194427482112)), 0); - assert_eq!(call!(and_ui64(2, 16990600415051759616)), 0); - assert_eq!(call!(and_ui64(3, 0)), 0); - assert_eq!(call!(and_ui64(3, 4)), 0); - assert_eq!(call!(and_ui64(3, 191084152064409600)), 0); - assert_eq!(call!(and_ui64(3, 11015955194427482112)), 0); - assert_eq!(call!(and_ui64(3, 16990600415051759616)), 0); - assert_eq!(call!(and_ui64(4, 0)), 0); - assert_eq!(call!(and_ui64(4, 1)), 0); - assert_eq!(call!(and_ui64(4, 2)), 0); - assert_eq!(call!(and_ui64(4, 3)), 0); - assert_eq!(call!(and_ui64(4, 191084152064409600)), 0); - assert_eq!(call!(and_ui64(4, 11015955194427482112)), 0); - assert_eq!(call!(and_ui64(4, 16990600415051759616)), 0); - assert_eq!(call!(and_ui64(191084152064409600, 0)), 0); - assert_eq!(call!(and_ui64(191084152064409600, 1)), 0); - assert_eq!(call!(and_ui64(191084152064409600, 2)), 0); - assert_eq!(call!(and_ui64(191084152064409600, 3)), 0); - assert_eq!(call!(and_ui64(191084152064409600, 4)), 0); - assert_eq!(call!(and_ui64(11015955194427482112, 0)), 0); - assert_eq!(call!(and_ui64(11015955194427482112, 1)), 0); - assert_eq!(call!(and_ui64(11015955194427482112, 2)), 0); - assert_eq!(call!(and_ui64(11015955194427482112, 3)), 0); - assert_eq!(call!(and_ui64(11015955194427482112, 4)), 0); - assert_eq!(call!(and_ui64(16990600415051759616, 0)), 0); - assert_eq!(call!(and_ui64(16990600415051759616, 1)), 0); - assert_eq!(call!(and_ui64(16990600415051759616, 2)), 0); - assert_eq!(call!(and_ui64(16990600415051759616, 3)), 0); - assert_eq!(call!(and_ui64(16990600415051759616, 4)), 0); - assert_eq!(call!(and_ui64(18446744073709551614, 0)), 0); - assert_eq!(call!(and_ui64(18446744073709551614, 1)), 0); - assert_eq!(call!(and_ui64(18446744073709551615, 0)), 0); - assert_eq!(call!(and_ui64(1, 1)), 1); - assert_eq!(call!(and_ui64(1, 3)), 1); - assert_eq!(call!(and_ui64(1, 18446744073709551615)), 1); - assert_eq!(call!(and_ui64(3, 1)), 1); - assert_eq!(call!(and_ui64(18446744073709551615, 1)), 1); - assert_eq!(call!(and_ui64(2, 2)), 2); - assert_eq!(call!(and_ui64(2, 3)), 2); - assert_eq!(call!(and_ui64(2, 18446744073709551614)), 2); - assert_eq!(call!(and_ui64(2, 18446744073709551615)), 2); - assert_eq!(call!(and_ui64(3, 2)), 2); - assert_eq!(call!(and_ui64(3, 18446744073709551614)), 2); - assert_eq!(call!(and_ui64(18446744073709551614, 2)), 2); - assert_eq!(call!(and_ui64(18446744073709551614, 3)), 2); - assert_eq!(call!(and_ui64(18446744073709551615, 2)), 2); - assert_eq!(call!(and_ui64(3, 3)), 3); - assert_eq!(call!(and_ui64(3, 18446744073709551615)), 3); - assert_eq!(call!(and_ui64(18446744073709551615, 3)), 3); - assert_eq!(call!(and_ui64(4, 4)), 4); - assert_eq!(call!(and_ui64(4, 18446744073709551614)), 4); - assert_eq!(call!(and_ui64(4, 18446744073709551615)), 4); - assert_eq!(call!(and_ui64(18446744073709551614, 4)), 4); - assert_eq!(call!(and_ui64(18446744073709551615, 4)), 4); - assert_eq!(call!(and_ui64(191084152064409600, 11015955194427482112)), 45185538445017088); - assert_eq!(call!(and_ui64(11015955194427482112, 191084152064409600)), 45185538445017088); - assert_eq!(call!(and_ui64(191084152064409600, 16990600415051759616)), 180878484934066176); - assert_eq!(call!(and_ui64(16990600415051759616, 191084152064409600)), 180878484934066176); - assert_eq!(call!(and_ui64(191084152064409600, 191084152064409600)), 191084152064409600); - assert_eq!(call!(and_ui64(191084152064409600, 18446744073709551614)), 191084152064409600); - assert_eq!(call!(and_ui64(191084152064409600, 18446744073709551615)), 191084152064409600); - assert_eq!(call!(and_ui64(18446744073709551614, 191084152064409600)), 191084152064409600); - assert_eq!(call!(and_ui64(18446744073709551615, 191084152064409600)), 191084152064409600); - assert_eq!(call!(and_ui64(11015955194427482112, 16990600415051759616)), 9854025527415799808); - assert_eq!(call!(and_ui64(16990600415051759616, 11015955194427482112)), 9854025527415799808); - assert_eq!(call!(and_ui64(11015955194427482112, 11015955194427482112)), 11015955194427482112); - assert_eq!(call!(and_ui64(11015955194427482112, 18446744073709551614)), 11015955194427482112); - assert_eq!(call!(and_ui64(11015955194427482112, 18446744073709551615)), 11015955194427482112); - assert_eq!(call!(and_ui64(18446744073709551614, 11015955194427482112)), 11015955194427482112); - assert_eq!(call!(and_ui64(18446744073709551615, 11015955194427482112)), 11015955194427482112); - assert_eq!(call!(and_ui64(16990600415051759616, 16990600415051759616)), 16990600415051759616); - assert_eq!(call!(and_ui64(16990600415051759616, 18446744073709551614)), 16990600415051759616); - assert_eq!(call!(and_ui64(16990600415051759616, 18446744073709551615)), 16990600415051759616); - assert_eq!(call!(and_ui64(18446744073709551614, 16990600415051759616)), 16990600415051759616); - assert_eq!(call!(and_ui64(18446744073709551615, 16990600415051759616)), 16990600415051759616); - assert_eq!(call!(and_ui64(18446744073709551614, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(and_ui64(18446744073709551614, 18446744073709551615)), 18446744073709551614); - assert_eq!(call!(and_ui64(18446744073709551615, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(and_ui64(18446744073709551615, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(and_ui8(0, 0)), 0); - assert_eq!(call!(and_ui8(0, 1)), 0); - assert_eq!(call!(and_ui8(0, 2)), 0); - assert_eq!(call!(and_ui8(0, 3)), 0); - assert_eq!(call!(and_ui8(0, 4)), 0); - assert_eq!(call!(and_ui8(0, 72)), 0); - assert_eq!(call!(and_ui8(0, 100)), 0); - assert_eq!(call!(and_ui8(0, 162)), 0); - assert_eq!(call!(and_ui8(0, 254)), 0); - assert_eq!(call!(and_ui8(0, 255)), 0); - assert_eq!(call!(and_ui8(1, 0)), 0); - assert_eq!(call!(and_ui8(1, 2)), 0); - assert_eq!(call!(and_ui8(1, 4)), 0); - assert_eq!(call!(and_ui8(1, 72)), 0); - assert_eq!(call!(and_ui8(1, 100)), 0); - assert_eq!(call!(and_ui8(1, 162)), 0); - assert_eq!(call!(and_ui8(1, 254)), 0); - assert_eq!(call!(and_ui8(2, 0)), 0); - assert_eq!(call!(and_ui8(2, 1)), 0); - assert_eq!(call!(and_ui8(2, 4)), 0); - assert_eq!(call!(and_ui8(2, 72)), 0); - assert_eq!(call!(and_ui8(2, 100)), 0); - assert_eq!(call!(and_ui8(3, 0)), 0); - assert_eq!(call!(and_ui8(3, 4)), 0); - assert_eq!(call!(and_ui8(3, 72)), 0); - assert_eq!(call!(and_ui8(3, 100)), 0); - assert_eq!(call!(and_ui8(4, 0)), 0); - assert_eq!(call!(and_ui8(4, 1)), 0); - assert_eq!(call!(and_ui8(4, 2)), 0); - assert_eq!(call!(and_ui8(4, 3)), 0); - assert_eq!(call!(and_ui8(4, 72)), 0); - assert_eq!(call!(and_ui8(4, 162)), 0); - assert_eq!(call!(and_ui8(72, 0)), 0); - assert_eq!(call!(and_ui8(72, 1)), 0); - assert_eq!(call!(and_ui8(72, 2)), 0); - assert_eq!(call!(and_ui8(72, 3)), 0); - assert_eq!(call!(and_ui8(72, 4)), 0); - assert_eq!(call!(and_ui8(72, 162)), 0); - assert_eq!(call!(and_ui8(100, 0)), 0); - assert_eq!(call!(and_ui8(100, 1)), 0); - assert_eq!(call!(and_ui8(100, 2)), 0); - assert_eq!(call!(and_ui8(100, 3)), 0); - assert_eq!(call!(and_ui8(162, 0)), 0); - assert_eq!(call!(and_ui8(162, 1)), 0); - assert_eq!(call!(and_ui8(162, 4)), 0); - assert_eq!(call!(and_ui8(162, 72)), 0); - assert_eq!(call!(and_ui8(254, 0)), 0); - assert_eq!(call!(and_ui8(254, 1)), 0); - assert_eq!(call!(and_ui8(255, 0)), 0); - assert_eq!(call!(and_ui8(1, 1)), 1); - assert_eq!(call!(and_ui8(1, 3)), 1); - assert_eq!(call!(and_ui8(1, 255)), 1); - assert_eq!(call!(and_ui8(3, 1)), 1); - assert_eq!(call!(and_ui8(255, 1)), 1); - assert_eq!(call!(and_ui8(2, 2)), 2); - assert_eq!(call!(and_ui8(2, 3)), 2); - assert_eq!(call!(and_ui8(2, 162)), 2); - assert_eq!(call!(and_ui8(2, 254)), 2); - assert_eq!(call!(and_ui8(2, 255)), 2); - assert_eq!(call!(and_ui8(3, 2)), 2); - assert_eq!(call!(and_ui8(3, 162)), 2); - assert_eq!(call!(and_ui8(3, 254)), 2); - assert_eq!(call!(and_ui8(162, 2)), 2); - assert_eq!(call!(and_ui8(162, 3)), 2); - assert_eq!(call!(and_ui8(254, 2)), 2); - assert_eq!(call!(and_ui8(254, 3)), 2); - assert_eq!(call!(and_ui8(255, 2)), 2); - assert_eq!(call!(and_ui8(3, 3)), 3); - assert_eq!(call!(and_ui8(3, 255)), 3); - assert_eq!(call!(and_ui8(255, 3)), 3); - assert_eq!(call!(and_ui8(4, 4)), 4); - assert_eq!(call!(and_ui8(4, 100)), 4); - assert_eq!(call!(and_ui8(4, 254)), 4); - assert_eq!(call!(and_ui8(4, 255)), 4); - assert_eq!(call!(and_ui8(100, 4)), 4); - assert_eq!(call!(and_ui8(254, 4)), 4); - assert_eq!(call!(and_ui8(255, 4)), 4); - assert_eq!(call!(and_ui8(100, 162)), 32); - assert_eq!(call!(and_ui8(162, 100)), 32); - assert_eq!(call!(and_ui8(72, 100)), 64); - assert_eq!(call!(and_ui8(100, 72)), 64); - assert_eq!(call!(and_ui8(72, 72)), 72); - assert_eq!(call!(and_ui8(72, 254)), 72); - assert_eq!(call!(and_ui8(72, 255)), 72); - assert_eq!(call!(and_ui8(254, 72)), 72); - assert_eq!(call!(and_ui8(255, 72)), 72); - assert_eq!(call!(and_ui8(100, 100)), 100); - assert_eq!(call!(and_ui8(100, 254)), 100); - assert_eq!(call!(and_ui8(100, 255)), 100); - assert_eq!(call!(and_ui8(254, 100)), 100); - assert_eq!(call!(and_ui8(255, 100)), 100); - assert_eq!(call!(and_ui8(162, 162)), 162); - assert_eq!(call!(and_ui8(162, 254)), 162); - assert_eq!(call!(and_ui8(162, 255)), 162); - assert_eq!(call!(and_ui8(254, 162)), 162); - assert_eq!(call!(and_ui8(255, 162)), 162); - assert_eq!(call!(and_ui8(254, 254)), 254); - assert_eq!(call!(and_ui8(254, 255)), 254); - assert_eq!(call!(and_ui8(255, 254)), 254); - assert_eq!(call!(and_ui8(255, 255)), 255); - assert_eq!(call!(or_si16(-32768, -32768)), -32768); - assert_eq!(call!(or_si16(-32768, 0)), -32768); - assert_eq!(call!(or_si16(0, -32768)), -32768); - assert_eq!(call!(or_si16(-32768, -32767)), -32767); - assert_eq!(call!(or_si16(-32768, 1)), -32767); - assert_eq!(call!(or_si16(-32767, -32768)), -32767); - assert_eq!(call!(or_si16(-32767, -32767)), -32767); - assert_eq!(call!(or_si16(-32767, 0)), -32767); - assert_eq!(call!(or_si16(-32767, 1)), -32767); - assert_eq!(call!(or_si16(0, -32767)), -32767); - assert_eq!(call!(or_si16(1, -32768)), -32767); - assert_eq!(call!(or_si16(1, -32767)), -32767); - assert_eq!(call!(or_si16(-32768, 2)), -32766); - assert_eq!(call!(or_si16(2, -32768)), -32766); - assert_eq!(call!(or_si16(-32768, 3)), -32765); - assert_eq!(call!(or_si16(-32767, 2)), -32765); - assert_eq!(call!(or_si16(-32767, 3)), -32765); - assert_eq!(call!(or_si16(2, -32767)), -32765); - assert_eq!(call!(or_si16(3, -32768)), -32765); - assert_eq!(call!(or_si16(3, -32767)), -32765); - assert_eq!(call!(or_si16(-32768, 4)), -32764); - assert_eq!(call!(or_si16(4, -32768)), -32764); - assert_eq!(call!(or_si16(-32767, 4)), -32763); - assert_eq!(call!(or_si16(4, -32767)), -32763); - assert_eq!(call!(or_si16(-32768, -32547)), -32547); - assert_eq!(call!(or_si16(-32767, -32547)), -32547); - assert_eq!(call!(or_si16(-32547, -32768)), -32547); - assert_eq!(call!(or_si16(-32547, -32767)), -32547); - assert_eq!(call!(or_si16(-32547, -32547)), -32547); - assert_eq!(call!(or_si16(-32547, 0)), -32547); - assert_eq!(call!(or_si16(-32547, 1)), -32547); - assert_eq!(call!(or_si16(-32547, 4)), -32547); - assert_eq!(call!(or_si16(0, -32547)), -32547); - assert_eq!(call!(or_si16(1, -32547)), -32547); - assert_eq!(call!(or_si16(4, -32547)), -32547); - assert_eq!(call!(or_si16(-32547, 2)), -32545); - assert_eq!(call!(or_si16(-32547, 3)), -32545); - assert_eq!(call!(or_si16(2, -32547)), -32545); - assert_eq!(call!(or_si16(3, -32547)), -32545); - assert_eq!(call!(or_si16(-32768, 10486)), -22282); - assert_eq!(call!(or_si16(10486, -32768)), -22282); - assert_eq!(call!(or_si16(-32767, 10486)), -22281); - assert_eq!(call!(or_si16(10486, -32767)), -22281); - assert_eq!(call!(or_si16(-32547, 10486)), -22273); - assert_eq!(call!(or_si16(10486, -32547)), -22273); - assert_eq!(call!(or_si16(-32768, 16514)), -16254); - assert_eq!(call!(or_si16(16514, -32768)), -16254); - assert_eq!(call!(or_si16(-32767, 16514)), -16253); - assert_eq!(call!(or_si16(16514, -32767)), -16253); - assert_eq!(call!(or_si16(-32547, 16514)), -16161); - assert_eq!(call!(or_si16(16514, -32547)), -16161); - assert_eq!(call!(or_si16(-32768, 32766)), -2); - assert_eq!(call!(or_si16(32766, -32768)), -2); - assert_eq!(call!(or_si16(-32768, 32767)), -1); - assert_eq!(call!(or_si16(-32767, 32766)), -1); - assert_eq!(call!(or_si16(-32767, 32767)), -1); - assert_eq!(call!(or_si16(-32547, 32766)), -1); - assert_eq!(call!(or_si16(-32547, 32767)), -1); - assert_eq!(call!(or_si16(32766, -32767)), -1); - assert_eq!(call!(or_si16(32766, -32547)), -1); - assert_eq!(call!(or_si16(32767, -32768)), -1); - assert_eq!(call!(or_si16(32767, -32767)), -1); - assert_eq!(call!(or_si16(32767, -32547)), -1); - assert_eq!(call!(or_si16(0, 0)), 0); - assert_eq!(call!(or_si16(0, 1)), 1); - assert_eq!(call!(or_si16(1, 0)), 1); - assert_eq!(call!(or_si16(1, 1)), 1); - assert_eq!(call!(or_si16(0, 2)), 2); - assert_eq!(call!(or_si16(2, 0)), 2); - assert_eq!(call!(or_si16(2, 2)), 2); - assert_eq!(call!(or_si16(0, 3)), 3); - assert_eq!(call!(or_si16(1, 2)), 3); - assert_eq!(call!(or_si16(1, 3)), 3); - assert_eq!(call!(or_si16(2, 1)), 3); - assert_eq!(call!(or_si16(2, 3)), 3); - assert_eq!(call!(or_si16(3, 0)), 3); - assert_eq!(call!(or_si16(3, 1)), 3); - assert_eq!(call!(or_si16(3, 2)), 3); - assert_eq!(call!(or_si16(3, 3)), 3); - assert_eq!(call!(or_si16(0, 4)), 4); - assert_eq!(call!(or_si16(4, 0)), 4); - assert_eq!(call!(or_si16(4, 4)), 4); - assert_eq!(call!(or_si16(1, 4)), 5); - assert_eq!(call!(or_si16(4, 1)), 5); - assert_eq!(call!(or_si16(2, 4)), 6); - assert_eq!(call!(or_si16(4, 2)), 6); - assert_eq!(call!(or_si16(3, 4)), 7); - assert_eq!(call!(or_si16(4, 3)), 7); - assert_eq!(call!(or_si16(0, 10486)), 10486); - assert_eq!(call!(or_si16(2, 10486)), 10486); - assert_eq!(call!(or_si16(4, 10486)), 10486); - assert_eq!(call!(or_si16(10486, 0)), 10486); - assert_eq!(call!(or_si16(10486, 2)), 10486); - assert_eq!(call!(or_si16(10486, 4)), 10486); - assert_eq!(call!(or_si16(10486, 10486)), 10486); - assert_eq!(call!(or_si16(1, 10486)), 10487); - assert_eq!(call!(or_si16(3, 10486)), 10487); - assert_eq!(call!(or_si16(10486, 1)), 10487); - assert_eq!(call!(or_si16(10486, 3)), 10487); - assert_eq!(call!(or_si16(0, 16514)), 16514); - assert_eq!(call!(or_si16(2, 16514)), 16514); - assert_eq!(call!(or_si16(16514, 0)), 16514); - assert_eq!(call!(or_si16(16514, 2)), 16514); - assert_eq!(call!(or_si16(16514, 16514)), 16514); - assert_eq!(call!(or_si16(1, 16514)), 16515); - assert_eq!(call!(or_si16(3, 16514)), 16515); - assert_eq!(call!(or_si16(16514, 1)), 16515); - assert_eq!(call!(or_si16(16514, 3)), 16515); - assert_eq!(call!(or_si16(4, 16514)), 16518); - assert_eq!(call!(or_si16(16514, 4)), 16518); - assert_eq!(call!(or_si16(10486, 16514)), 26870); - assert_eq!(call!(or_si16(16514, 10486)), 26870); - assert_eq!(call!(or_si16(0, 32766)), 32766); - assert_eq!(call!(or_si16(2, 32766)), 32766); - assert_eq!(call!(or_si16(4, 32766)), 32766); - assert_eq!(call!(or_si16(10486, 32766)), 32766); - assert_eq!(call!(or_si16(16514, 32766)), 32766); - assert_eq!(call!(or_si16(32766, 0)), 32766); - assert_eq!(call!(or_si16(32766, 2)), 32766); - assert_eq!(call!(or_si16(32766, 4)), 32766); - assert_eq!(call!(or_si16(32766, 10486)), 32766); - assert_eq!(call!(or_si16(32766, 16514)), 32766); - assert_eq!(call!(or_si16(32766, 32766)), 32766); - assert_eq!(call!(or_si16(0, 32767)), 32767); - assert_eq!(call!(or_si16(1, 32766)), 32767); - assert_eq!(call!(or_si16(1, 32767)), 32767); - assert_eq!(call!(or_si16(2, 32767)), 32767); - assert_eq!(call!(or_si16(3, 32766)), 32767); - assert_eq!(call!(or_si16(3, 32767)), 32767); - assert_eq!(call!(or_si16(4, 32767)), 32767); - assert_eq!(call!(or_si16(10486, 32767)), 32767); - assert_eq!(call!(or_si16(16514, 32767)), 32767); - assert_eq!(call!(or_si16(32766, 1)), 32767); - assert_eq!(call!(or_si16(32766, 3)), 32767); - assert_eq!(call!(or_si16(32766, 32767)), 32767); - assert_eq!(call!(or_si16(32767, 0)), 32767); - assert_eq!(call!(or_si16(32767, 1)), 32767); - assert_eq!(call!(or_si16(32767, 2)), 32767); - assert_eq!(call!(or_si16(32767, 3)), 32767); - assert_eq!(call!(or_si16(32767, 4)), 32767); - assert_eq!(call!(or_si16(32767, 10486)), 32767); - assert_eq!(call!(or_si16(32767, 16514)), 32767); - assert_eq!(call!(or_si16(32767, 32766)), 32767); - assert_eq!(call!(or_si16(32767, 32767)), 32767); - assert_eq!(call!(or_si32(-2147483648, -2147483648)), -2147483648); - assert_eq!(call!(or_si32(-2147483648, 0)), -2147483648); - assert_eq!(call!(or_si32(0, -2147483648)), -2147483648); - assert_eq!(call!(or_si32(-2147483648, -2147483647)), -2147483647); - assert_eq!(call!(or_si32(-2147483648, 1)), -2147483647); - assert_eq!(call!(or_si32(-2147483647, -2147483648)), -2147483647); - assert_eq!(call!(or_si32(-2147483647, -2147483647)), -2147483647); - assert_eq!(call!(or_si32(-2147483647, 0)), -2147483647); - assert_eq!(call!(or_si32(-2147483647, 1)), -2147483647); - assert_eq!(call!(or_si32(0, -2147483647)), -2147483647); - assert_eq!(call!(or_si32(1, -2147483648)), -2147483647); - assert_eq!(call!(or_si32(1, -2147483647)), -2147483647); - assert_eq!(call!(or_si32(-2147483648, 2)), -2147483646); - assert_eq!(call!(or_si32(2, -2147483648)), -2147483646); - assert_eq!(call!(or_si32(-2147483648, 3)), -2147483645); - assert_eq!(call!(or_si32(-2147483647, 2)), -2147483645); - assert_eq!(call!(or_si32(-2147483647, 3)), -2147483645); - assert_eq!(call!(or_si32(2, -2147483647)), -2147483645); - assert_eq!(call!(or_si32(3, -2147483648)), -2147483645); - assert_eq!(call!(or_si32(3, -2147483647)), -2147483645); - assert_eq!(call!(or_si32(-2147483648, 4)), -2147483644); - assert_eq!(call!(or_si32(4, -2147483648)), -2147483644); - assert_eq!(call!(or_si32(-2147483647, 4)), -2147483643); - assert_eq!(call!(or_si32(4, -2147483647)), -2147483643); - assert_eq!(call!(or_si32(-2147483648, -1713183800)), -1713183800); - assert_eq!(call!(or_si32(-1713183800, -2147483648)), -1713183800); - assert_eq!(call!(or_si32(-1713183800, -1713183800)), -1713183800); - assert_eq!(call!(or_si32(-1713183800, 0)), -1713183800); - assert_eq!(call!(or_si32(0, -1713183800)), -1713183800); - assert_eq!(call!(or_si32(-2147483647, -1713183800)), -1713183799); - assert_eq!(call!(or_si32(-1713183800, -2147483647)), -1713183799); - assert_eq!(call!(or_si32(-1713183800, 1)), -1713183799); - assert_eq!(call!(or_si32(1, -1713183800)), -1713183799); - assert_eq!(call!(or_si32(-1713183800, 2)), -1713183798); - assert_eq!(call!(or_si32(2, -1713183800)), -1713183798); - assert_eq!(call!(or_si32(-1713183800, 3)), -1713183797); - assert_eq!(call!(or_si32(3, -1713183800)), -1713183797); - assert_eq!(call!(or_si32(-1713183800, 4)), -1713183796); - assert_eq!(call!(or_si32(4, -1713183800)), -1713183796); - assert_eq!(call!(or_si32(-2147483648, -1252582164)), -1252582164); - assert_eq!(call!(or_si32(-1252582164, -2147483648)), -1252582164); - assert_eq!(call!(or_si32(-1252582164, -1252582164)), -1252582164); - assert_eq!(call!(or_si32(-1252582164, 0)), -1252582164); - assert_eq!(call!(or_si32(-1252582164, 4)), -1252582164); - assert_eq!(call!(or_si32(0, -1252582164)), -1252582164); - assert_eq!(call!(or_si32(4, -1252582164)), -1252582164); - assert_eq!(call!(or_si32(-2147483647, -1252582164)), -1252582163); - assert_eq!(call!(or_si32(-1252582164, -2147483647)), -1252582163); - assert_eq!(call!(or_si32(-1252582164, 1)), -1252582163); - assert_eq!(call!(or_si32(1, -1252582164)), -1252582163); - assert_eq!(call!(or_si32(-1252582164, 2)), -1252582162); - assert_eq!(call!(or_si32(2, -1252582164)), -1252582162); - assert_eq!(call!(or_si32(-1252582164, 3)), -1252582161); - assert_eq!(call!(or_si32(3, -1252582164)), -1252582161); - assert_eq!(call!(or_si32(-1713183800, -1252582164)), -1107820564); - assert_eq!(call!(or_si32(-1252582164, -1713183800)), -1107820564); - assert_eq!(call!(or_si32(-2147483648, -1035405763)), -1035405763); - assert_eq!(call!(or_si32(-2147483647, -1035405763)), -1035405763); - assert_eq!(call!(or_si32(-1035405763, -2147483648)), -1035405763); - assert_eq!(call!(or_si32(-1035405763, -2147483647)), -1035405763); - assert_eq!(call!(or_si32(-1035405763, -1035405763)), -1035405763); - assert_eq!(call!(or_si32(-1035405763, 0)), -1035405763); - assert_eq!(call!(or_si32(-1035405763, 1)), -1035405763); - assert_eq!(call!(or_si32(-1035405763, 4)), -1035405763); - assert_eq!(call!(or_si32(0, -1035405763)), -1035405763); - assert_eq!(call!(or_si32(1, -1035405763)), -1035405763); - assert_eq!(call!(or_si32(4, -1035405763)), -1035405763); - assert_eq!(call!(or_si32(-1035405763, 2)), -1035405761); - assert_eq!(call!(or_si32(-1035405763, 3)), -1035405761); - assert_eq!(call!(or_si32(2, -1035405763)), -1035405761); - assert_eq!(call!(or_si32(3, -1035405763)), -1035405761); - assert_eq!(call!(or_si32(-1713183800, -1035405763)), -605358083); - assert_eq!(call!(or_si32(-1035405763, -1713183800)), -605358083); - assert_eq!(call!(or_si32(-1252582164, -1035405763)), -144703747); - assert_eq!(call!(or_si32(-1035405763, -1252582164)), -144703747); - assert_eq!(call!(or_si32(-2147483648, 2147483646)), -2); - assert_eq!(call!(or_si32(-1713183800, 2147483646)), -2); - assert_eq!(call!(or_si32(-1252582164, 2147483646)), -2); - assert_eq!(call!(or_si32(2147483646, -2147483648)), -2); - assert_eq!(call!(or_si32(2147483646, -1713183800)), -2); - assert_eq!(call!(or_si32(2147483646, -1252582164)), -2); - assert_eq!(call!(or_si32(-2147483648, 2147483647)), -1); - assert_eq!(call!(or_si32(-2147483647, 2147483646)), -1); - assert_eq!(call!(or_si32(-2147483647, 2147483647)), -1); - assert_eq!(call!(or_si32(-1713183800, 2147483647)), -1); - assert_eq!(call!(or_si32(-1252582164, 2147483647)), -1); - assert_eq!(call!(or_si32(-1035405763, 2147483646)), -1); - assert_eq!(call!(or_si32(-1035405763, 2147483647)), -1); - assert_eq!(call!(or_si32(2147483646, -2147483647)), -1); - assert_eq!(call!(or_si32(2147483646, -1035405763)), -1); - assert_eq!(call!(or_si32(2147483647, -2147483648)), -1); - assert_eq!(call!(or_si32(2147483647, -2147483647)), -1); - assert_eq!(call!(or_si32(2147483647, -1713183800)), -1); - assert_eq!(call!(or_si32(2147483647, -1252582164)), -1); - assert_eq!(call!(or_si32(2147483647, -1035405763)), -1); - assert_eq!(call!(or_si32(0, 0)), 0); - assert_eq!(call!(or_si32(0, 1)), 1); - assert_eq!(call!(or_si32(1, 0)), 1); - assert_eq!(call!(or_si32(1, 1)), 1); - assert_eq!(call!(or_si32(0, 2)), 2); - assert_eq!(call!(or_si32(2, 0)), 2); - assert_eq!(call!(or_si32(2, 2)), 2); - assert_eq!(call!(or_si32(0, 3)), 3); - assert_eq!(call!(or_si32(1, 2)), 3); - assert_eq!(call!(or_si32(1, 3)), 3); - assert_eq!(call!(or_si32(2, 1)), 3); - assert_eq!(call!(or_si32(2, 3)), 3); - assert_eq!(call!(or_si32(3, 0)), 3); - assert_eq!(call!(or_si32(3, 1)), 3); - assert_eq!(call!(or_si32(3, 2)), 3); - assert_eq!(call!(or_si32(3, 3)), 3); - assert_eq!(call!(or_si32(0, 4)), 4); - assert_eq!(call!(or_si32(4, 0)), 4); - assert_eq!(call!(or_si32(4, 4)), 4); - assert_eq!(call!(or_si32(1, 4)), 5); - assert_eq!(call!(or_si32(4, 1)), 5); - assert_eq!(call!(or_si32(2, 4)), 6); - assert_eq!(call!(or_si32(4, 2)), 6); - assert_eq!(call!(or_si32(3, 4)), 7); - assert_eq!(call!(or_si32(4, 3)), 7); - assert_eq!(call!(or_si32(0, 2147483646)), 2147483646); - assert_eq!(call!(or_si32(2, 2147483646)), 2147483646); - assert_eq!(call!(or_si32(4, 2147483646)), 2147483646); - assert_eq!(call!(or_si32(2147483646, 0)), 2147483646); - assert_eq!(call!(or_si32(2147483646, 2)), 2147483646); - assert_eq!(call!(or_si32(2147483646, 4)), 2147483646); - assert_eq!(call!(or_si32(2147483646, 2147483646)), 2147483646); - assert_eq!(call!(or_si32(0, 2147483647)), 2147483647); - assert_eq!(call!(or_si32(1, 2147483646)), 2147483647); - assert_eq!(call!(or_si32(1, 2147483647)), 2147483647); - assert_eq!(call!(or_si32(2, 2147483647)), 2147483647); - assert_eq!(call!(or_si32(3, 2147483646)), 2147483647); - assert_eq!(call!(or_si32(3, 2147483647)), 2147483647); - assert_eq!(call!(or_si32(4, 2147483647)), 2147483647); - assert_eq!(call!(or_si32(2147483646, 1)), 2147483647); - assert_eq!(call!(or_si32(2147483646, 3)), 2147483647); - assert_eq!(call!(or_si32(2147483646, 2147483647)), 2147483647); - assert_eq!(call!(or_si32(2147483647, 0)), 2147483647); - assert_eq!(call!(or_si32(2147483647, 1)), 2147483647); - assert_eq!(call!(or_si32(2147483647, 2)), 2147483647); - assert_eq!(call!(or_si32(2147483647, 3)), 2147483647); - assert_eq!(call!(or_si32(2147483647, 4)), 2147483647); - assert_eq!(call!(or_si32(2147483647, 2147483646)), 2147483647); - assert_eq!(call!(or_si32(2147483647, 2147483647)), 2147483647); - assert_eq!(call!(or_si64(-9223372036854775808, -9223372036854775808)), -9223372036854775808); - assert_eq!(call!(or_si64(-9223372036854775808, 0)), -9223372036854775808); - assert_eq!(call!(or_si64(0, -9223372036854775808)), -9223372036854775808); - assert_eq!(call!(or_si64(-9223372036854775808, -9223372036854775807)), -9223372036854775807); - assert_eq!(call!(or_si64(-9223372036854775808, 1)), -9223372036854775807); - assert_eq!(call!(or_si64(-9223372036854775807, -9223372036854775808)), -9223372036854775807); - assert_eq!(call!(or_si64(-9223372036854775807, -9223372036854775807)), -9223372036854775807); - assert_eq!(call!(or_si64(-9223372036854775807, 0)), -9223372036854775807); - assert_eq!(call!(or_si64(-9223372036854775807, 1)), -9223372036854775807); - assert_eq!(call!(or_si64(0, -9223372036854775807)), -9223372036854775807); - assert_eq!(call!(or_si64(1, -9223372036854775808)), -9223372036854775807); - assert_eq!(call!(or_si64(1, -9223372036854775807)), -9223372036854775807); - assert_eq!(call!(or_si64(-9223372036854775808, 2)), -9223372036854775806); - assert_eq!(call!(or_si64(2, -9223372036854775808)), -9223372036854775806); - assert_eq!(call!(or_si64(-9223372036854775808, 3)), -9223372036854775805); - assert_eq!(call!(or_si64(-9223372036854775807, 2)), -9223372036854775805); - assert_eq!(call!(or_si64(-9223372036854775807, 3)), -9223372036854775805); - assert_eq!(call!(or_si64(2, -9223372036854775807)), -9223372036854775805); - assert_eq!(call!(or_si64(3, -9223372036854775808)), -9223372036854775805); - assert_eq!(call!(or_si64(3, -9223372036854775807)), -9223372036854775805); - assert_eq!(call!(or_si64(-9223372036854775808, 4)), -9223372036854775804); - assert_eq!(call!(or_si64(4, -9223372036854775808)), -9223372036854775804); - assert_eq!(call!(or_si64(-9223372036854775807, 4)), -9223372036854775803); - assert_eq!(call!(or_si64(4, -9223372036854775807)), -9223372036854775803); - assert_eq!(call!(or_si64(-9223372036854775808, 5577148965131116544)), -3646223071723659264); - assert_eq!(call!(or_si64(5577148965131116544, -9223372036854775808)), -3646223071723659264); - assert_eq!(call!(or_si64(-9223372036854775807, 5577148965131116544)), -3646223071723659263); - assert_eq!(call!(or_si64(5577148965131116544, -9223372036854775807)), -3646223071723659263); - assert_eq!(call!(or_si64(-9223372036854775808, -1741927215160008704)), -1741927215160008704); - assert_eq!(call!(or_si64(-1741927215160008704, -9223372036854775808)), -1741927215160008704); - assert_eq!(call!(or_si64(-1741927215160008704, -1741927215160008704)), -1741927215160008704); - assert_eq!(call!(or_si64(-1741927215160008704, 0)), -1741927215160008704); - assert_eq!(call!(or_si64(0, -1741927215160008704)), -1741927215160008704); - assert_eq!(call!(or_si64(-9223372036854775807, -1741927215160008704)), -1741927215160008703); - assert_eq!(call!(or_si64(-1741927215160008704, -9223372036854775807)), -1741927215160008703); - assert_eq!(call!(or_si64(-1741927215160008704, 1)), -1741927215160008703); - assert_eq!(call!(or_si64(1, -1741927215160008704)), -1741927215160008703); - assert_eq!(call!(or_si64(-1741927215160008704, 2)), -1741927215160008702); - assert_eq!(call!(or_si64(2, -1741927215160008704)), -1741927215160008702); - assert_eq!(call!(or_si64(-1741927215160008704, 3)), -1741927215160008701); - assert_eq!(call!(or_si64(3, -1741927215160008704)), -1741927215160008701); - assert_eq!(call!(or_si64(-1741927215160008704, 4)), -1741927215160008700); - assert_eq!(call!(or_si64(4, -1741927215160008704)), -1741927215160008700); - assert_eq!(call!(or_si64(-9223372036854775808, -1328271339354574848)), -1328271339354574848); - assert_eq!(call!(or_si64(-1328271339354574848, -9223372036854775808)), -1328271339354574848); - assert_eq!(call!(or_si64(-1328271339354574848, -1328271339354574848)), -1328271339354574848); - assert_eq!(call!(or_si64(-1328271339354574848, 0)), -1328271339354574848); - assert_eq!(call!(or_si64(0, -1328271339354574848)), -1328271339354574848); - assert_eq!(call!(or_si64(-9223372036854775807, -1328271339354574848)), -1328271339354574847); - assert_eq!(call!(or_si64(-1328271339354574848, -9223372036854775807)), -1328271339354574847); - assert_eq!(call!(or_si64(-1328271339354574848, 1)), -1328271339354574847); - assert_eq!(call!(or_si64(1, -1328271339354574848)), -1328271339354574847); - assert_eq!(call!(or_si64(-1328271339354574848, 2)), -1328271339354574846); - assert_eq!(call!(or_si64(2, -1328271339354574848)), -1328271339354574846); - assert_eq!(call!(or_si64(-1328271339354574848, 3)), -1328271339354574845); - assert_eq!(call!(or_si64(3, -1328271339354574848)), -1328271339354574845); - assert_eq!(call!(or_si64(-1328271339354574848, 4)), -1328271339354574844); - assert_eq!(call!(or_si64(4, -1328271339354574848)), -1328271339354574844); - assert_eq!(call!(or_si64(-1328271339354574848, 5577148965131116544)), -1299557394519166976); - assert_eq!(call!(or_si64(5577148965131116544, -1328271339354574848)), -1299557394519166976); - assert_eq!(call!(or_si64(-1741927215160008704, -1328271339354574848)), -1165466462517891072); - assert_eq!(call!(or_si64(-1328271339354574848, -1741927215160008704)), -1165466462517891072); - assert_eq!(call!(or_si64(-1741927215160008704, 5577148965131116544)), -1155332255525117952); - assert_eq!(call!(or_si64(5577148965131116544, -1741927215160008704)), -1155332255525117952); - assert_eq!(call!(or_si64(-9223372036854775808, 9223372036854775806)), -2); - assert_eq!(call!(or_si64(-1741927215160008704, 9223372036854775806)), -2); - assert_eq!(call!(or_si64(-1328271339354574848, 9223372036854775806)), -2); - assert_eq!(call!(or_si64(9223372036854775806, -9223372036854775808)), -2); - assert_eq!(call!(or_si64(9223372036854775806, -1741927215160008704)), -2); - assert_eq!(call!(or_si64(9223372036854775806, -1328271339354574848)), -2); - assert_eq!(call!(or_si64(-9223372036854775808, 9223372036854775807)), -1); - assert_eq!(call!(or_si64(-9223372036854775807, 9223372036854775806)), -1); - assert_eq!(call!(or_si64(-9223372036854775807, 9223372036854775807)), -1); - assert_eq!(call!(or_si64(-1741927215160008704, 9223372036854775807)), -1); - assert_eq!(call!(or_si64(-1328271339354574848, 9223372036854775807)), -1); - assert_eq!(call!(or_si64(9223372036854775806, -9223372036854775807)), -1); - assert_eq!(call!(or_si64(9223372036854775807, -9223372036854775808)), -1); - assert_eq!(call!(or_si64(9223372036854775807, -9223372036854775807)), -1); - assert_eq!(call!(or_si64(9223372036854775807, -1741927215160008704)), -1); - assert_eq!(call!(or_si64(9223372036854775807, -1328271339354574848)), -1); - assert_eq!(call!(or_si64(0, 0)), 0); - assert_eq!(call!(or_si64(0, 1)), 1); - assert_eq!(call!(or_si64(1, 0)), 1); - assert_eq!(call!(or_si64(1, 1)), 1); - assert_eq!(call!(or_si64(0, 2)), 2); - assert_eq!(call!(or_si64(2, 0)), 2); - assert_eq!(call!(or_si64(2, 2)), 2); - assert_eq!(call!(or_si64(0, 3)), 3); - assert_eq!(call!(or_si64(1, 2)), 3); - assert_eq!(call!(or_si64(1, 3)), 3); - assert_eq!(call!(or_si64(2, 1)), 3); - assert_eq!(call!(or_si64(2, 3)), 3); - assert_eq!(call!(or_si64(3, 0)), 3); - assert_eq!(call!(or_si64(3, 1)), 3); - assert_eq!(call!(or_si64(3, 2)), 3); - assert_eq!(call!(or_si64(3, 3)), 3); - assert_eq!(call!(or_si64(0, 4)), 4); - assert_eq!(call!(or_si64(4, 0)), 4); - assert_eq!(call!(or_si64(4, 4)), 4); - assert_eq!(call!(or_si64(1, 4)), 5); - assert_eq!(call!(or_si64(4, 1)), 5); - assert_eq!(call!(or_si64(2, 4)), 6); - assert_eq!(call!(or_si64(4, 2)), 6); - assert_eq!(call!(or_si64(3, 4)), 7); - assert_eq!(call!(or_si64(4, 3)), 7); - assert_eq!(call!(or_si64(0, 5577148965131116544)), 5577148965131116544); - assert_eq!(call!(or_si64(5577148965131116544, 0)), 5577148965131116544); - assert_eq!(call!(or_si64(5577148965131116544, 5577148965131116544)), 5577148965131116544); - assert_eq!(call!(or_si64(1, 5577148965131116544)), 5577148965131116545); - assert_eq!(call!(or_si64(5577148965131116544, 1)), 5577148965131116545); - assert_eq!(call!(or_si64(2, 5577148965131116544)), 5577148965131116546); - assert_eq!(call!(or_si64(5577148965131116544, 2)), 5577148965131116546); - assert_eq!(call!(or_si64(3, 5577148965131116544)), 5577148965131116547); - assert_eq!(call!(or_si64(5577148965131116544, 3)), 5577148965131116547); - assert_eq!(call!(or_si64(4, 5577148965131116544)), 5577148965131116548); - assert_eq!(call!(or_si64(5577148965131116544, 4)), 5577148965131116548); - assert_eq!(call!(or_si64(0, 9223372036854775806)), 9223372036854775806); - assert_eq!(call!(or_si64(2, 9223372036854775806)), 9223372036854775806); - assert_eq!(call!(or_si64(4, 9223372036854775806)), 9223372036854775806); - assert_eq!(call!(or_si64(5577148965131116544, 9223372036854775806)), 9223372036854775806); - assert_eq!(call!(or_si64(9223372036854775806, 0)), 9223372036854775806); - assert_eq!(call!(or_si64(9223372036854775806, 2)), 9223372036854775806); - assert_eq!(call!(or_si64(9223372036854775806, 4)), 9223372036854775806); - assert_eq!(call!(or_si64(9223372036854775806, 5577148965131116544)), 9223372036854775806); - assert_eq!(call!(or_si64(9223372036854775806, 9223372036854775806)), 9223372036854775806); - assert_eq!(call!(or_si64(0, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(or_si64(1, 9223372036854775806)), 9223372036854775807); - assert_eq!(call!(or_si64(1, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(or_si64(2, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(or_si64(3, 9223372036854775806)), 9223372036854775807); - assert_eq!(call!(or_si64(3, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(or_si64(4, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(or_si64(5577148965131116544, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775806, 1)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775806, 3)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775806, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775807, 0)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775807, 1)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775807, 2)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775807, 3)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775807, 4)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775807, 5577148965131116544)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775807, 9223372036854775806)), 9223372036854775807); - assert_eq!(call!(or_si64(9223372036854775807, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(or_si8(-128, -128)), -128); - assert_eq!(call!(or_si8(-128, 0)), -128); - assert_eq!(call!(or_si8(0, -128)), -128); - assert_eq!(call!(or_si8(-128, -127)), -127); - assert_eq!(call!(or_si8(-128, 1)), -127); - assert_eq!(call!(or_si8(-127, -128)), -127); - assert_eq!(call!(or_si8(-127, -127)), -127); - assert_eq!(call!(or_si8(-127, 0)), -127); - assert_eq!(call!(or_si8(-127, 1)), -127); - assert_eq!(call!(or_si8(0, -127)), -127); - assert_eq!(call!(or_si8(1, -128)), -127); - assert_eq!(call!(or_si8(1, -127)), -127); - assert_eq!(call!(or_si8(-128, 2)), -126); - assert_eq!(call!(or_si8(2, -128)), -126); - assert_eq!(call!(or_si8(-128, 3)), -125); - assert_eq!(call!(or_si8(-127, 2)), -125); - assert_eq!(call!(or_si8(-127, 3)), -125); - assert_eq!(call!(or_si8(2, -127)), -125); - assert_eq!(call!(or_si8(3, -128)), -125); - assert_eq!(call!(or_si8(3, -127)), -125); - assert_eq!(call!(or_si8(-128, 4)), -124); - assert_eq!(call!(or_si8(4, -128)), -124); - assert_eq!(call!(or_si8(-127, 4)), -123); - assert_eq!(call!(or_si8(4, -127)), -123); - assert_eq!(call!(or_si8(-128, 16)), -112); - assert_eq!(call!(or_si8(16, -128)), -112); - assert_eq!(call!(or_si8(-127, 16)), -111); - assert_eq!(call!(or_si8(16, -127)), -111); - assert_eq!(call!(or_si8(-128, 126)), -2); - assert_eq!(call!(or_si8(126, -128)), -2); - assert_eq!(call!(or_si8(-128, 127)), -1); - assert_eq!(call!(or_si8(-127, 126)), -1); - assert_eq!(call!(or_si8(-127, 127)), -1); - assert_eq!(call!(or_si8(126, -127)), -1); - assert_eq!(call!(or_si8(127, -128)), -1); - assert_eq!(call!(or_si8(127, -127)), -1); - assert_eq!(call!(or_si8(0, 0)), 0); - assert_eq!(call!(or_si8(0, 1)), 1); - assert_eq!(call!(or_si8(1, 0)), 1); - assert_eq!(call!(or_si8(1, 1)), 1); - assert_eq!(call!(or_si8(0, 2)), 2); - assert_eq!(call!(or_si8(2, 0)), 2); - assert_eq!(call!(or_si8(2, 2)), 2); - assert_eq!(call!(or_si8(0, 3)), 3); - assert_eq!(call!(or_si8(1, 2)), 3); - assert_eq!(call!(or_si8(1, 3)), 3); - assert_eq!(call!(or_si8(2, 1)), 3); - assert_eq!(call!(or_si8(2, 3)), 3); - assert_eq!(call!(or_si8(3, 0)), 3); - assert_eq!(call!(or_si8(3, 1)), 3); - assert_eq!(call!(or_si8(3, 2)), 3); - assert_eq!(call!(or_si8(3, 3)), 3); - assert_eq!(call!(or_si8(0, 4)), 4); - assert_eq!(call!(or_si8(4, 0)), 4); - assert_eq!(call!(or_si8(4, 4)), 4); - assert_eq!(call!(or_si8(1, 4)), 5); - assert_eq!(call!(or_si8(4, 1)), 5); - assert_eq!(call!(or_si8(2, 4)), 6); - assert_eq!(call!(or_si8(4, 2)), 6); - assert_eq!(call!(or_si8(3, 4)), 7); - assert_eq!(call!(or_si8(4, 3)), 7); - assert_eq!(call!(or_si8(0, 16)), 16); - assert_eq!(call!(or_si8(16, 0)), 16); - assert_eq!(call!(or_si8(16, 16)), 16); - assert_eq!(call!(or_si8(1, 16)), 17); - assert_eq!(call!(or_si8(16, 1)), 17); - assert_eq!(call!(or_si8(2, 16)), 18); - assert_eq!(call!(or_si8(16, 2)), 18); - assert_eq!(call!(or_si8(3, 16)), 19); - assert_eq!(call!(or_si8(16, 3)), 19); - assert_eq!(call!(or_si8(4, 16)), 20); - assert_eq!(call!(or_si8(16, 4)), 20); - assert_eq!(call!(or_si8(0, 126)), 126); - assert_eq!(call!(or_si8(2, 126)), 126); - assert_eq!(call!(or_si8(4, 126)), 126); - assert_eq!(call!(or_si8(16, 126)), 126); - assert_eq!(call!(or_si8(126, 0)), 126); - assert_eq!(call!(or_si8(126, 2)), 126); - assert_eq!(call!(or_si8(126, 4)), 126); - assert_eq!(call!(or_si8(126, 16)), 126); - assert_eq!(call!(or_si8(126, 126)), 126); - assert_eq!(call!(or_si8(0, 127)), 127); - assert_eq!(call!(or_si8(1, 126)), 127); - assert_eq!(call!(or_si8(1, 127)), 127); - assert_eq!(call!(or_si8(2, 127)), 127); - assert_eq!(call!(or_si8(3, 126)), 127); - assert_eq!(call!(or_si8(3, 127)), 127); - assert_eq!(call!(or_si8(4, 127)), 127); - assert_eq!(call!(or_si8(16, 127)), 127); - assert_eq!(call!(or_si8(126, 1)), 127); - assert_eq!(call!(or_si8(126, 3)), 127); - assert_eq!(call!(or_si8(126, 127)), 127); - assert_eq!(call!(or_si8(127, 0)), 127); - assert_eq!(call!(or_si8(127, 1)), 127); - assert_eq!(call!(or_si8(127, 2)), 127); - assert_eq!(call!(or_si8(127, 3)), 127); - assert_eq!(call!(or_si8(127, 4)), 127); - assert_eq!(call!(or_si8(127, 16)), 127); - assert_eq!(call!(or_si8(127, 126)), 127); - assert_eq!(call!(or_si8(127, 127)), 127); - assert_eq!(call!(or_ui16(0, 0)), 0); - assert_eq!(call!(or_ui16(0, 1)), 1); - assert_eq!(call!(or_ui16(1, 0)), 1); - assert_eq!(call!(or_ui16(1, 1)), 1); - assert_eq!(call!(or_ui16(0, 2)), 2); - assert_eq!(call!(or_ui16(2, 0)), 2); - assert_eq!(call!(or_ui16(2, 2)), 2); - assert_eq!(call!(or_ui16(0, 3)), 3); - assert_eq!(call!(or_ui16(1, 2)), 3); - assert_eq!(call!(or_ui16(1, 3)), 3); - assert_eq!(call!(or_ui16(2, 1)), 3); - assert_eq!(call!(or_ui16(2, 3)), 3); - assert_eq!(call!(or_ui16(3, 0)), 3); - assert_eq!(call!(or_ui16(3, 1)), 3); - assert_eq!(call!(or_ui16(3, 2)), 3); - assert_eq!(call!(or_ui16(3, 3)), 3); - assert_eq!(call!(or_ui16(0, 4)), 4); - assert_eq!(call!(or_ui16(4, 0)), 4); - assert_eq!(call!(or_ui16(4, 4)), 4); - assert_eq!(call!(or_ui16(1, 4)), 5); - assert_eq!(call!(or_ui16(4, 1)), 5); - assert_eq!(call!(or_ui16(2, 4)), 6); - assert_eq!(call!(or_ui16(4, 2)), 6); - assert_eq!(call!(or_ui16(3, 4)), 7); - assert_eq!(call!(or_ui16(4, 3)), 7); - assert_eq!(call!(or_ui16(0, 1717)), 1717); - assert_eq!(call!(or_ui16(1, 1717)), 1717); - assert_eq!(call!(or_ui16(4, 1717)), 1717); - assert_eq!(call!(or_ui16(1717, 0)), 1717); - assert_eq!(call!(or_ui16(1717, 1)), 1717); - assert_eq!(call!(or_ui16(1717, 4)), 1717); - assert_eq!(call!(or_ui16(1717, 1717)), 1717); - assert_eq!(call!(or_ui16(2, 1717)), 1719); - assert_eq!(call!(or_ui16(3, 1717)), 1719); - assert_eq!(call!(or_ui16(1717, 2)), 1719); - assert_eq!(call!(or_ui16(1717, 3)), 1719); - assert_eq!(call!(or_ui16(0, 17988)), 17988); - assert_eq!(call!(or_ui16(4, 17988)), 17988); - assert_eq!(call!(or_ui16(17988, 0)), 17988); - assert_eq!(call!(or_ui16(17988, 4)), 17988); - assert_eq!(call!(or_ui16(17988, 17988)), 17988); - assert_eq!(call!(or_ui16(1, 17988)), 17989); - assert_eq!(call!(or_ui16(17988, 1)), 17989); - assert_eq!(call!(or_ui16(2, 17988)), 17990); - assert_eq!(call!(or_ui16(17988, 2)), 17990); - assert_eq!(call!(or_ui16(3, 17988)), 17991); - assert_eq!(call!(or_ui16(17988, 3)), 17991); - assert_eq!(call!(or_ui16(1717, 17988)), 18165); - assert_eq!(call!(or_ui16(17988, 1717)), 18165); - assert_eq!(call!(or_ui16(0, 65096)), 65096); - assert_eq!(call!(or_ui16(65096, 0)), 65096); - assert_eq!(call!(or_ui16(65096, 65096)), 65096); - assert_eq!(call!(or_ui16(1, 65096)), 65097); - assert_eq!(call!(or_ui16(65096, 1)), 65097); - assert_eq!(call!(or_ui16(2, 65096)), 65098); - assert_eq!(call!(or_ui16(65096, 2)), 65098); - assert_eq!(call!(or_ui16(3, 65096)), 65099); - assert_eq!(call!(or_ui16(65096, 3)), 65099); - assert_eq!(call!(or_ui16(4, 65096)), 65100); - assert_eq!(call!(or_ui16(17988, 65096)), 65100); - assert_eq!(call!(or_ui16(65096, 4)), 65100); - assert_eq!(call!(or_ui16(65096, 17988)), 65100); - assert_eq!(call!(or_ui16(1717, 65096)), 65277); - assert_eq!(call!(or_ui16(65096, 1717)), 65277); - assert_eq!(call!(or_ui16(0, 65534)), 65534); - assert_eq!(call!(or_ui16(2, 65534)), 65534); - assert_eq!(call!(or_ui16(4, 65534)), 65534); - assert_eq!(call!(or_ui16(17988, 65534)), 65534); - assert_eq!(call!(or_ui16(65096, 65534)), 65534); - assert_eq!(call!(or_ui16(65534, 0)), 65534); - assert_eq!(call!(or_ui16(65534, 2)), 65534); - assert_eq!(call!(or_ui16(65534, 4)), 65534); - assert_eq!(call!(or_ui16(65534, 17988)), 65534); - assert_eq!(call!(or_ui16(65534, 65096)), 65534); - assert_eq!(call!(or_ui16(65534, 65534)), 65534); - assert_eq!(call!(or_ui16(0, 65535)), 65535); - assert_eq!(call!(or_ui16(1, 65534)), 65535); - assert_eq!(call!(or_ui16(1, 65535)), 65535); - assert_eq!(call!(or_ui16(2, 65535)), 65535); - assert_eq!(call!(or_ui16(3, 65534)), 65535); - assert_eq!(call!(or_ui16(3, 65535)), 65535); - assert_eq!(call!(or_ui16(4, 65535)), 65535); - assert_eq!(call!(or_ui16(1717, 65534)), 65535); - assert_eq!(call!(or_ui16(1717, 65535)), 65535); - assert_eq!(call!(or_ui16(17988, 65535)), 65535); - assert_eq!(call!(or_ui16(65096, 65535)), 65535); - assert_eq!(call!(or_ui16(65534, 1)), 65535); - assert_eq!(call!(or_ui16(65534, 3)), 65535); - assert_eq!(call!(or_ui16(65534, 1717)), 65535); - assert_eq!(call!(or_ui16(65534, 65535)), 65535); - assert_eq!(call!(or_ui16(65535, 0)), 65535); - assert_eq!(call!(or_ui16(65535, 1)), 65535); - assert_eq!(call!(or_ui16(65535, 2)), 65535); - assert_eq!(call!(or_ui16(65535, 3)), 65535); - assert_eq!(call!(or_ui16(65535, 4)), 65535); - assert_eq!(call!(or_ui16(65535, 1717)), 65535); - assert_eq!(call!(or_ui16(65535, 17988)), 65535); - assert_eq!(call!(or_ui16(65535, 65096)), 65535); - assert_eq!(call!(or_ui16(65535, 65534)), 65535); - assert_eq!(call!(or_ui16(65535, 65535)), 65535); - assert_eq!(call!(or_ui32(0, 0)), 0); - assert_eq!(call!(or_ui32(0, 1)), 1); - assert_eq!(call!(or_ui32(1, 0)), 1); - assert_eq!(call!(or_ui32(1, 1)), 1); - assert_eq!(call!(or_ui32(0, 2)), 2); - assert_eq!(call!(or_ui32(2, 0)), 2); - assert_eq!(call!(or_ui32(2, 2)), 2); - assert_eq!(call!(or_ui32(0, 3)), 3); - assert_eq!(call!(or_ui32(1, 2)), 3); - assert_eq!(call!(or_ui32(1, 3)), 3); - assert_eq!(call!(or_ui32(2, 1)), 3); - assert_eq!(call!(or_ui32(2, 3)), 3); - assert_eq!(call!(or_ui32(3, 0)), 3); - assert_eq!(call!(or_ui32(3, 1)), 3); - assert_eq!(call!(or_ui32(3, 2)), 3); - assert_eq!(call!(or_ui32(3, 3)), 3); - assert_eq!(call!(or_ui32(0, 4)), 4); - assert_eq!(call!(or_ui32(4, 0)), 4); - assert_eq!(call!(or_ui32(4, 4)), 4); - assert_eq!(call!(or_ui32(1, 4)), 5); - assert_eq!(call!(or_ui32(4, 1)), 5); - assert_eq!(call!(or_ui32(2, 4)), 6); - assert_eq!(call!(or_ui32(4, 2)), 6); - assert_eq!(call!(or_ui32(3, 4)), 7); - assert_eq!(call!(or_ui32(4, 3)), 7); - assert_eq!(call!(or_ui32(0, 2119154652)), 2119154652); - assert_eq!(call!(or_ui32(4, 2119154652)), 2119154652); - assert_eq!(call!(or_ui32(2119154652, 0)), 2119154652); - assert_eq!(call!(or_ui32(2119154652, 4)), 2119154652); - assert_eq!(call!(or_ui32(2119154652, 2119154652)), 2119154652); - assert_eq!(call!(or_ui32(1, 2119154652)), 2119154653); - assert_eq!(call!(or_ui32(2119154652, 1)), 2119154653); - assert_eq!(call!(or_ui32(2, 2119154652)), 2119154654); - assert_eq!(call!(or_ui32(2119154652, 2)), 2119154654); - assert_eq!(call!(or_ui32(3, 2119154652)), 2119154655); - assert_eq!(call!(or_ui32(2119154652, 3)), 2119154655); - assert_eq!(call!(or_ui32(0, 3002788344)), 3002788344); - assert_eq!(call!(or_ui32(3002788344, 0)), 3002788344); - assert_eq!(call!(or_ui32(3002788344, 3002788344)), 3002788344); - assert_eq!(call!(or_ui32(1, 3002788344)), 3002788345); - assert_eq!(call!(or_ui32(3002788344, 1)), 3002788345); - assert_eq!(call!(or_ui32(2, 3002788344)), 3002788346); - assert_eq!(call!(or_ui32(3002788344, 2)), 3002788346); - assert_eq!(call!(or_ui32(3, 3002788344)), 3002788347); - assert_eq!(call!(or_ui32(3002788344, 3)), 3002788347); - assert_eq!(call!(or_ui32(4, 3002788344)), 3002788348); - assert_eq!(call!(or_ui32(3002788344, 4)), 3002788348); - assert_eq!(call!(or_ui32(0, 3482297128)), 3482297128); - assert_eq!(call!(or_ui32(3482297128, 0)), 3482297128); - assert_eq!(call!(or_ui32(3482297128, 3482297128)), 3482297128); - assert_eq!(call!(or_ui32(1, 3482297128)), 3482297129); - assert_eq!(call!(or_ui32(3482297128, 1)), 3482297129); - assert_eq!(call!(or_ui32(2, 3482297128)), 3482297130); - assert_eq!(call!(or_ui32(3482297128, 2)), 3482297130); - assert_eq!(call!(or_ui32(3, 3482297128)), 3482297131); - assert_eq!(call!(or_ui32(3482297128, 3)), 3482297131); - assert_eq!(call!(or_ui32(4, 3482297128)), 3482297132); - assert_eq!(call!(or_ui32(3482297128, 4)), 3482297132); - assert_eq!(call!(or_ui32(2119154652, 3002788344)), 4278189052); - assert_eq!(call!(or_ui32(3002788344, 2119154652)), 4278189052); - assert_eq!(call!(or_ui32(2119154652, 3482297128)), 4291804156); - assert_eq!(call!(or_ui32(3482297128, 2119154652)), 4291804156); - assert_eq!(call!(or_ui32(3002788344, 3482297128)), 4294962168); - assert_eq!(call!(or_ui32(3482297128, 3002788344)), 4294962168); - assert_eq!(call!(or_ui32(0, 4294967294)), 4294967294); - assert_eq!(call!(or_ui32(2, 4294967294)), 4294967294); - assert_eq!(call!(or_ui32(4, 4294967294)), 4294967294); - assert_eq!(call!(or_ui32(2119154652, 4294967294)), 4294967294); - assert_eq!(call!(or_ui32(3002788344, 4294967294)), 4294967294); - assert_eq!(call!(or_ui32(3482297128, 4294967294)), 4294967294); - assert_eq!(call!(or_ui32(4294967294, 0)), 4294967294); - assert_eq!(call!(or_ui32(4294967294, 2)), 4294967294); - assert_eq!(call!(or_ui32(4294967294, 4)), 4294967294); - assert_eq!(call!(or_ui32(4294967294, 2119154652)), 4294967294); - assert_eq!(call!(or_ui32(4294967294, 3002788344)), 4294967294); - assert_eq!(call!(or_ui32(4294967294, 3482297128)), 4294967294); - assert_eq!(call!(or_ui32(4294967294, 4294967294)), 4294967294); - assert_eq!(call!(or_ui32(0, 4294967295)), 4294967295); - assert_eq!(call!(or_ui32(1, 4294967294)), 4294967295); - assert_eq!(call!(or_ui32(1, 4294967295)), 4294967295); - assert_eq!(call!(or_ui32(2, 4294967295)), 4294967295); - assert_eq!(call!(or_ui32(3, 4294967294)), 4294967295); - assert_eq!(call!(or_ui32(3, 4294967295)), 4294967295); - assert_eq!(call!(or_ui32(4, 4294967295)), 4294967295); - assert_eq!(call!(or_ui32(2119154652, 4294967295)), 4294967295); - assert_eq!(call!(or_ui32(3002788344, 4294967295)), 4294967295); - assert_eq!(call!(or_ui32(3482297128, 4294967295)), 4294967295); - assert_eq!(call!(or_ui32(4294967294, 1)), 4294967295); - assert_eq!(call!(or_ui32(4294967294, 3)), 4294967295); - assert_eq!(call!(or_ui32(4294967294, 4294967295)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 0)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 1)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 2)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 3)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 4)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 2119154652)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 3002788344)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 3482297128)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 4294967294)), 4294967295); - assert_eq!(call!(or_ui32(4294967295, 4294967295)), 4294967295); - assert_eq!(call!(or_ui64(0, 0)), 0); - assert_eq!(call!(or_ui64(0, 1)), 1); - assert_eq!(call!(or_ui64(1, 0)), 1); - assert_eq!(call!(or_ui64(1, 1)), 1); - assert_eq!(call!(or_ui64(0, 2)), 2); - assert_eq!(call!(or_ui64(2, 0)), 2); - assert_eq!(call!(or_ui64(2, 2)), 2); - assert_eq!(call!(or_ui64(0, 3)), 3); - assert_eq!(call!(or_ui64(1, 2)), 3); - assert_eq!(call!(or_ui64(1, 3)), 3); - assert_eq!(call!(or_ui64(2, 1)), 3); - assert_eq!(call!(or_ui64(2, 3)), 3); - assert_eq!(call!(or_ui64(3, 0)), 3); - assert_eq!(call!(or_ui64(3, 1)), 3); - assert_eq!(call!(or_ui64(3, 2)), 3); - assert_eq!(call!(or_ui64(3, 3)), 3); - assert_eq!(call!(or_ui64(0, 4)), 4); - assert_eq!(call!(or_ui64(4, 0)), 4); - assert_eq!(call!(or_ui64(4, 4)), 4); - assert_eq!(call!(or_ui64(1, 4)), 5); - assert_eq!(call!(or_ui64(4, 1)), 5); - assert_eq!(call!(or_ui64(2, 4)), 6); - assert_eq!(call!(or_ui64(4, 2)), 6); - assert_eq!(call!(or_ui64(3, 4)), 7); - assert_eq!(call!(or_ui64(4, 3)), 7); - assert_eq!(call!(or_ui64(0, 191084152064409600)), 191084152064409600); - assert_eq!(call!(or_ui64(191084152064409600, 0)), 191084152064409600); - assert_eq!(call!(or_ui64(191084152064409600, 191084152064409600)), 191084152064409600); - assert_eq!(call!(or_ui64(1, 191084152064409600)), 191084152064409601); - assert_eq!(call!(or_ui64(191084152064409600, 1)), 191084152064409601); - assert_eq!(call!(or_ui64(2, 191084152064409600)), 191084152064409602); - assert_eq!(call!(or_ui64(191084152064409600, 2)), 191084152064409602); - assert_eq!(call!(or_ui64(3, 191084152064409600)), 191084152064409603); - assert_eq!(call!(or_ui64(191084152064409600, 3)), 191084152064409603); - assert_eq!(call!(or_ui64(4, 191084152064409600)), 191084152064409604); - assert_eq!(call!(or_ui64(191084152064409600, 4)), 191084152064409604); - assert_eq!(call!(or_ui64(0, 11015955194427482112)), 11015955194427482112); - assert_eq!(call!(or_ui64(11015955194427482112, 0)), 11015955194427482112); - assert_eq!(call!(or_ui64(11015955194427482112, 11015955194427482112)), 11015955194427482112); - assert_eq!(call!(or_ui64(1, 11015955194427482112)), 11015955194427482113); - assert_eq!(call!(or_ui64(11015955194427482112, 1)), 11015955194427482113); - assert_eq!(call!(or_ui64(2, 11015955194427482112)), 11015955194427482114); - assert_eq!(call!(or_ui64(11015955194427482112, 2)), 11015955194427482114); - assert_eq!(call!(or_ui64(3, 11015955194427482112)), 11015955194427482115); - assert_eq!(call!(or_ui64(11015955194427482112, 3)), 11015955194427482115); - assert_eq!(call!(or_ui64(4, 11015955194427482112)), 11015955194427482116); - assert_eq!(call!(or_ui64(11015955194427482112, 4)), 11015955194427482116); - assert_eq!(call!(or_ui64(191084152064409600, 11015955194427482112)), 11161853808046874624); - assert_eq!(call!(or_ui64(11015955194427482112, 191084152064409600)), 11161853808046874624); - assert_eq!(call!(or_ui64(0, 16990600415051759616)), 16990600415051759616); - assert_eq!(call!(or_ui64(16990600415051759616, 0)), 16990600415051759616); - assert_eq!(call!(or_ui64(16990600415051759616, 16990600415051759616)), 16990600415051759616); - assert_eq!(call!(or_ui64(1, 16990600415051759616)), 16990600415051759617); - assert_eq!(call!(or_ui64(16990600415051759616, 1)), 16990600415051759617); - assert_eq!(call!(or_ui64(2, 16990600415051759616)), 16990600415051759618); - assert_eq!(call!(or_ui64(16990600415051759616, 2)), 16990600415051759618); - assert_eq!(call!(or_ui64(3, 16990600415051759616)), 16990600415051759619); - assert_eq!(call!(or_ui64(16990600415051759616, 3)), 16990600415051759619); - assert_eq!(call!(or_ui64(4, 16990600415051759616)), 16990600415051759620); - assert_eq!(call!(or_ui64(16990600415051759616, 4)), 16990600415051759620); - assert_eq!(call!(or_ui64(191084152064409600, 16990600415051759616)), 17000806082182103040); - assert_eq!(call!(or_ui64(16990600415051759616, 191084152064409600)), 17000806082182103040); - assert_eq!(call!(or_ui64(11015955194427482112, 16990600415051759616)), 18152530082063441920); - assert_eq!(call!(or_ui64(16990600415051759616, 11015955194427482112)), 18152530082063441920); - assert_eq!(call!(or_ui64(0, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(or_ui64(2, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(or_ui64(4, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(or_ui64(191084152064409600, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(or_ui64(11015955194427482112, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(or_ui64(16990600415051759616, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(or_ui64(18446744073709551614, 0)), 18446744073709551614); - assert_eq!(call!(or_ui64(18446744073709551614, 2)), 18446744073709551614); - assert_eq!(call!(or_ui64(18446744073709551614, 4)), 18446744073709551614); - assert_eq!(call!(or_ui64(18446744073709551614, 191084152064409600)), 18446744073709551614); - assert_eq!(call!(or_ui64(18446744073709551614, 11015955194427482112)), 18446744073709551614); - assert_eq!(call!(or_ui64(18446744073709551614, 16990600415051759616)), 18446744073709551614); - assert_eq!(call!(or_ui64(18446744073709551614, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(or_ui64(0, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui64(1, 18446744073709551614)), 18446744073709551615); - assert_eq!(call!(or_ui64(1, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui64(2, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui64(3, 18446744073709551614)), 18446744073709551615); - assert_eq!(call!(or_ui64(3, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui64(4, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui64(191084152064409600, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui64(11015955194427482112, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui64(16990600415051759616, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551614, 1)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551614, 3)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551614, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 0)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 1)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 2)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 3)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 4)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 191084152064409600)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 11015955194427482112)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 16990600415051759616)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 18446744073709551614)), 18446744073709551615); - assert_eq!(call!(or_ui64(18446744073709551615, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(or_ui8(0, 0)), 0); - assert_eq!(call!(or_ui8(0, 1)), 1); - assert_eq!(call!(or_ui8(1, 0)), 1); - assert_eq!(call!(or_ui8(1, 1)), 1); - assert_eq!(call!(or_ui8(0, 2)), 2); - assert_eq!(call!(or_ui8(2, 0)), 2); - assert_eq!(call!(or_ui8(2, 2)), 2); - assert_eq!(call!(or_ui8(0, 3)), 3); - assert_eq!(call!(or_ui8(1, 2)), 3); - assert_eq!(call!(or_ui8(1, 3)), 3); - assert_eq!(call!(or_ui8(2, 1)), 3); - assert_eq!(call!(or_ui8(2, 3)), 3); - assert_eq!(call!(or_ui8(3, 0)), 3); - assert_eq!(call!(or_ui8(3, 1)), 3); - assert_eq!(call!(or_ui8(3, 2)), 3); - assert_eq!(call!(or_ui8(3, 3)), 3); - assert_eq!(call!(or_ui8(0, 4)), 4); - assert_eq!(call!(or_ui8(4, 0)), 4); - assert_eq!(call!(or_ui8(4, 4)), 4); - assert_eq!(call!(or_ui8(1, 4)), 5); - assert_eq!(call!(or_ui8(4, 1)), 5); - assert_eq!(call!(or_ui8(2, 4)), 6); - assert_eq!(call!(or_ui8(4, 2)), 6); - assert_eq!(call!(or_ui8(3, 4)), 7); - assert_eq!(call!(or_ui8(4, 3)), 7); - assert_eq!(call!(or_ui8(0, 72)), 72); - assert_eq!(call!(or_ui8(72, 0)), 72); - assert_eq!(call!(or_ui8(72, 72)), 72); - assert_eq!(call!(or_ui8(1, 72)), 73); - assert_eq!(call!(or_ui8(72, 1)), 73); - assert_eq!(call!(or_ui8(2, 72)), 74); - assert_eq!(call!(or_ui8(72, 2)), 74); - assert_eq!(call!(or_ui8(3, 72)), 75); - assert_eq!(call!(or_ui8(72, 3)), 75); - assert_eq!(call!(or_ui8(4, 72)), 76); - assert_eq!(call!(or_ui8(72, 4)), 76); - assert_eq!(call!(or_ui8(0, 100)), 100); - assert_eq!(call!(or_ui8(4, 100)), 100); - assert_eq!(call!(or_ui8(100, 0)), 100); - assert_eq!(call!(or_ui8(100, 4)), 100); - assert_eq!(call!(or_ui8(100, 100)), 100); - assert_eq!(call!(or_ui8(1, 100)), 101); - assert_eq!(call!(or_ui8(100, 1)), 101); - assert_eq!(call!(or_ui8(2, 100)), 102); - assert_eq!(call!(or_ui8(100, 2)), 102); - assert_eq!(call!(or_ui8(3, 100)), 103); - assert_eq!(call!(or_ui8(100, 3)), 103); - assert_eq!(call!(or_ui8(72, 100)), 108); - assert_eq!(call!(or_ui8(100, 72)), 108); - assert_eq!(call!(or_ui8(0, 162)), 162); - assert_eq!(call!(or_ui8(2, 162)), 162); - assert_eq!(call!(or_ui8(162, 0)), 162); - assert_eq!(call!(or_ui8(162, 2)), 162); - assert_eq!(call!(or_ui8(162, 162)), 162); - assert_eq!(call!(or_ui8(1, 162)), 163); - assert_eq!(call!(or_ui8(3, 162)), 163); - assert_eq!(call!(or_ui8(162, 1)), 163); - assert_eq!(call!(or_ui8(162, 3)), 163); - assert_eq!(call!(or_ui8(4, 162)), 166); - assert_eq!(call!(or_ui8(162, 4)), 166); - assert_eq!(call!(or_ui8(100, 162)), 230); - assert_eq!(call!(or_ui8(162, 100)), 230); - assert_eq!(call!(or_ui8(72, 162)), 234); - assert_eq!(call!(or_ui8(162, 72)), 234); - assert_eq!(call!(or_ui8(0, 254)), 254); - assert_eq!(call!(or_ui8(2, 254)), 254); - assert_eq!(call!(or_ui8(4, 254)), 254); - assert_eq!(call!(or_ui8(72, 254)), 254); - assert_eq!(call!(or_ui8(100, 254)), 254); - assert_eq!(call!(or_ui8(162, 254)), 254); - assert_eq!(call!(or_ui8(254, 0)), 254); - assert_eq!(call!(or_ui8(254, 2)), 254); - assert_eq!(call!(or_ui8(254, 4)), 254); - assert_eq!(call!(or_ui8(254, 72)), 254); - assert_eq!(call!(or_ui8(254, 100)), 254); - assert_eq!(call!(or_ui8(254, 162)), 254); - assert_eq!(call!(or_ui8(254, 254)), 254); - assert_eq!(call!(or_ui8(0, 255)), 255); - assert_eq!(call!(or_ui8(1, 254)), 255); - assert_eq!(call!(or_ui8(1, 255)), 255); - assert_eq!(call!(or_ui8(2, 255)), 255); - assert_eq!(call!(or_ui8(3, 254)), 255); - assert_eq!(call!(or_ui8(3, 255)), 255); - assert_eq!(call!(or_ui8(4, 255)), 255); - assert_eq!(call!(or_ui8(72, 255)), 255); - assert_eq!(call!(or_ui8(100, 255)), 255); - assert_eq!(call!(or_ui8(162, 255)), 255); - assert_eq!(call!(or_ui8(254, 1)), 255); - assert_eq!(call!(or_ui8(254, 3)), 255); - assert_eq!(call!(or_ui8(254, 255)), 255); - assert_eq!(call!(or_ui8(255, 0)), 255); - assert_eq!(call!(or_ui8(255, 1)), 255); - assert_eq!(call!(or_ui8(255, 2)), 255); - assert_eq!(call!(or_ui8(255, 3)), 255); - assert_eq!(call!(or_ui8(255, 4)), 255); - assert_eq!(call!(or_ui8(255, 72)), 255); - assert_eq!(call!(or_ui8(255, 100)), 255); - assert_eq!(call!(or_ui8(255, 162)), 255); - assert_eq!(call!(or_ui8(255, 254)), 255); - assert_eq!(call!(or_ui8(255, 255)), 255); - assert_eq!(call!(xor_si16(-32768, 0)), -32768); - assert_eq!(call!(xor_si16(-32767, 1)), -32768); - assert_eq!(call!(xor_si16(0, -32768)), -32768); - assert_eq!(call!(xor_si16(1, -32767)), -32768); - assert_eq!(call!(xor_si16(-32768, 1)), -32767); - assert_eq!(call!(xor_si16(-32767, 0)), -32767); - assert_eq!(call!(xor_si16(0, -32767)), -32767); - assert_eq!(call!(xor_si16(1, -32768)), -32767); - assert_eq!(call!(xor_si16(-32768, 2)), -32766); - assert_eq!(call!(xor_si16(-32767, 3)), -32766); - assert_eq!(call!(xor_si16(2, -32768)), -32766); - assert_eq!(call!(xor_si16(3, -32767)), -32766); - assert_eq!(call!(xor_si16(-32768, 3)), -32765); - assert_eq!(call!(xor_si16(-32767, 2)), -32765); - assert_eq!(call!(xor_si16(2, -32767)), -32765); - assert_eq!(call!(xor_si16(3, -32768)), -32765); - assert_eq!(call!(xor_si16(-32768, 4)), -32764); - assert_eq!(call!(xor_si16(4, -32768)), -32764); - assert_eq!(call!(xor_si16(-32767, 4)), -32763); - assert_eq!(call!(xor_si16(4, -32767)), -32763); - assert_eq!(call!(xor_si16(-32547, 4)), -32551); - assert_eq!(call!(xor_si16(4, -32547)), -32551); - assert_eq!(call!(xor_si16(-32547, 1)), -32548); - assert_eq!(call!(xor_si16(1, -32547)), -32548); - assert_eq!(call!(xor_si16(-32547, 0)), -32547); - assert_eq!(call!(xor_si16(0, -32547)), -32547); - assert_eq!(call!(xor_si16(-32547, 3)), -32546); - assert_eq!(call!(xor_si16(3, -32547)), -32546); - assert_eq!(call!(xor_si16(-32547, 2)), -32545); - assert_eq!(call!(xor_si16(2, -32547)), -32545); - assert_eq!(call!(xor_si16(-32547, 10486)), -22485); - assert_eq!(call!(xor_si16(10486, -32547)), -22485); - assert_eq!(call!(xor_si16(-32768, 10486)), -22282); - assert_eq!(call!(xor_si16(10486, -32768)), -22282); - assert_eq!(call!(xor_si16(-32767, 10486)), -22281); - assert_eq!(call!(xor_si16(10486, -32767)), -22281); - assert_eq!(call!(xor_si16(-32547, 16514)), -16289); - assert_eq!(call!(xor_si16(16514, -32547)), -16289); - assert_eq!(call!(xor_si16(-32768, 16514)), -16254); - assert_eq!(call!(xor_si16(16514, -32768)), -16254); - assert_eq!(call!(xor_si16(-32767, 16514)), -16253); - assert_eq!(call!(xor_si16(16514, -32767)), -16253); - assert_eq!(call!(xor_si16(-32547, 32767)), -222); - assert_eq!(call!(xor_si16(32767, -32547)), -222); - assert_eq!(call!(xor_si16(-32547, 32766)), -221); - assert_eq!(call!(xor_si16(32766, -32547)), -221); - assert_eq!(call!(xor_si16(-32768, 32766)), -2); - assert_eq!(call!(xor_si16(-32767, 32767)), -2); - assert_eq!(call!(xor_si16(32766, -32768)), -2); - assert_eq!(call!(xor_si16(32767, -32767)), -2); - assert_eq!(call!(xor_si16(-32768, 32767)), -1); - assert_eq!(call!(xor_si16(-32767, 32766)), -1); - assert_eq!(call!(xor_si16(32766, -32767)), -1); - assert_eq!(call!(xor_si16(32767, -32768)), -1); - assert_eq!(call!(xor_si16(-32768, -32768)), 0); - assert_eq!(call!(xor_si16(-32767, -32767)), 0); - assert_eq!(call!(xor_si16(-32547, -32547)), 0); - assert_eq!(call!(xor_si16(0, 0)), 0); - assert_eq!(call!(xor_si16(1, 1)), 0); - assert_eq!(call!(xor_si16(2, 2)), 0); - assert_eq!(call!(xor_si16(3, 3)), 0); - assert_eq!(call!(xor_si16(4, 4)), 0); - assert_eq!(call!(xor_si16(10486, 10486)), 0); - assert_eq!(call!(xor_si16(16514, 16514)), 0); - assert_eq!(call!(xor_si16(32766, 32766)), 0); - assert_eq!(call!(xor_si16(32767, 32767)), 0); - assert_eq!(call!(xor_si16(-32768, -32767)), 1); - assert_eq!(call!(xor_si16(-32767, -32768)), 1); - assert_eq!(call!(xor_si16(0, 1)), 1); - assert_eq!(call!(xor_si16(1, 0)), 1); - assert_eq!(call!(xor_si16(2, 3)), 1); - assert_eq!(call!(xor_si16(3, 2)), 1); - assert_eq!(call!(xor_si16(32766, 32767)), 1); - assert_eq!(call!(xor_si16(32767, 32766)), 1); - assert_eq!(call!(xor_si16(0, 2)), 2); - assert_eq!(call!(xor_si16(1, 3)), 2); - assert_eq!(call!(xor_si16(2, 0)), 2); - assert_eq!(call!(xor_si16(3, 1)), 2); - assert_eq!(call!(xor_si16(0, 3)), 3); - assert_eq!(call!(xor_si16(1, 2)), 3); - assert_eq!(call!(xor_si16(2, 1)), 3); - assert_eq!(call!(xor_si16(3, 0)), 3); - assert_eq!(call!(xor_si16(0, 4)), 4); - assert_eq!(call!(xor_si16(4, 0)), 4); - assert_eq!(call!(xor_si16(1, 4)), 5); - assert_eq!(call!(xor_si16(4, 1)), 5); - assert_eq!(call!(xor_si16(2, 4)), 6); - assert_eq!(call!(xor_si16(4, 2)), 6); - assert_eq!(call!(xor_si16(3, 4)), 7); - assert_eq!(call!(xor_si16(4, 3)), 7); - assert_eq!(call!(xor_si16(-32767, -32547)), 220); - assert_eq!(call!(xor_si16(-32547, -32767)), 220); - assert_eq!(call!(xor_si16(-32768, -32547)), 221); - assert_eq!(call!(xor_si16(-32547, -32768)), 221); - assert_eq!(call!(xor_si16(4, 10486)), 10482); - assert_eq!(call!(xor_si16(10486, 4)), 10482); - assert_eq!(call!(xor_si16(2, 10486)), 10484); - assert_eq!(call!(xor_si16(10486, 2)), 10484); - assert_eq!(call!(xor_si16(3, 10486)), 10485); - assert_eq!(call!(xor_si16(10486, 3)), 10485); - assert_eq!(call!(xor_si16(0, 10486)), 10486); - assert_eq!(call!(xor_si16(10486, 0)), 10486); - assert_eq!(call!(xor_si16(1, 10486)), 10487); - assert_eq!(call!(xor_si16(10486, 1)), 10487); - assert_eq!(call!(xor_si16(16514, 32766)), 16252); - assert_eq!(call!(xor_si16(32766, 16514)), 16252); - assert_eq!(call!(xor_si16(16514, 32767)), 16253); - assert_eq!(call!(xor_si16(32767, 16514)), 16253); - assert_eq!(call!(xor_si16(2, 16514)), 16512); - assert_eq!(call!(xor_si16(16514, 2)), 16512); - assert_eq!(call!(xor_si16(3, 16514)), 16513); - assert_eq!(call!(xor_si16(16514, 3)), 16513); - assert_eq!(call!(xor_si16(0, 16514)), 16514); - assert_eq!(call!(xor_si16(16514, 0)), 16514); - assert_eq!(call!(xor_si16(1, 16514)), 16515); - assert_eq!(call!(xor_si16(16514, 1)), 16515); - assert_eq!(call!(xor_si16(4, 16514)), 16518); - assert_eq!(call!(xor_si16(16514, 4)), 16518); - assert_eq!(call!(xor_si16(10486, 32766)), 22280); - assert_eq!(call!(xor_si16(32766, 10486)), 22280); - assert_eq!(call!(xor_si16(10486, 32767)), 22281); - assert_eq!(call!(xor_si16(32767, 10486)), 22281); - assert_eq!(call!(xor_si16(10486, 16514)), 26740); - assert_eq!(call!(xor_si16(16514, 10486)), 26740); - assert_eq!(call!(xor_si16(4, 32766)), 32762); - assert_eq!(call!(xor_si16(32766, 4)), 32762); - assert_eq!(call!(xor_si16(4, 32767)), 32763); - assert_eq!(call!(xor_si16(32767, 4)), 32763); - assert_eq!(call!(xor_si16(2, 32766)), 32764); - assert_eq!(call!(xor_si16(3, 32767)), 32764); - assert_eq!(call!(xor_si16(32766, 2)), 32764); - assert_eq!(call!(xor_si16(32767, 3)), 32764); - assert_eq!(call!(xor_si16(2, 32767)), 32765); - assert_eq!(call!(xor_si16(3, 32766)), 32765); - assert_eq!(call!(xor_si16(32766, 3)), 32765); - assert_eq!(call!(xor_si16(32767, 2)), 32765); - assert_eq!(call!(xor_si16(0, 32766)), 32766); - assert_eq!(call!(xor_si16(1, 32767)), 32766); - assert_eq!(call!(xor_si16(32766, 0)), 32766); - assert_eq!(call!(xor_si16(32767, 1)), 32766); - assert_eq!(call!(xor_si16(0, 32767)), 32767); - assert_eq!(call!(xor_si16(1, 32766)), 32767); - assert_eq!(call!(xor_si16(32766, 1)), 32767); - assert_eq!(call!(xor_si16(32767, 0)), 32767); - assert_eq!(call!(xor_si32(-2147483648, 0)), -2147483648); - assert_eq!(call!(xor_si32(-2147483647, 1)), -2147483648); - assert_eq!(call!(xor_si32(0, -2147483648)), -2147483648); - assert_eq!(call!(xor_si32(1, -2147483647)), -2147483648); - assert_eq!(call!(xor_si32(-2147483648, 1)), -2147483647); - assert_eq!(call!(xor_si32(-2147483647, 0)), -2147483647); - assert_eq!(call!(xor_si32(0, -2147483647)), -2147483647); - assert_eq!(call!(xor_si32(1, -2147483648)), -2147483647); - assert_eq!(call!(xor_si32(-2147483648, 2)), -2147483646); - assert_eq!(call!(xor_si32(-2147483647, 3)), -2147483646); - assert_eq!(call!(xor_si32(2, -2147483648)), -2147483646); - assert_eq!(call!(xor_si32(3, -2147483647)), -2147483646); - assert_eq!(call!(xor_si32(-2147483648, 3)), -2147483645); - assert_eq!(call!(xor_si32(-2147483647, 2)), -2147483645); - assert_eq!(call!(xor_si32(2, -2147483647)), -2147483645); - assert_eq!(call!(xor_si32(3, -2147483648)), -2147483645); - assert_eq!(call!(xor_si32(-2147483648, 4)), -2147483644); - assert_eq!(call!(xor_si32(4, -2147483648)), -2147483644); - assert_eq!(call!(xor_si32(-2147483647, 4)), -2147483643); - assert_eq!(call!(xor_si32(4, -2147483647)), -2147483643); - assert_eq!(call!(xor_si32(-1713183800, 0)), -1713183800); - assert_eq!(call!(xor_si32(0, -1713183800)), -1713183800); - assert_eq!(call!(xor_si32(-1713183800, 1)), -1713183799); - assert_eq!(call!(xor_si32(1, -1713183800)), -1713183799); - assert_eq!(call!(xor_si32(-1713183800, 2)), -1713183798); - assert_eq!(call!(xor_si32(2, -1713183800)), -1713183798); - assert_eq!(call!(xor_si32(-1713183800, 3)), -1713183797); - assert_eq!(call!(xor_si32(3, -1713183800)), -1713183797); - assert_eq!(call!(xor_si32(-1713183800, 4)), -1713183796); - assert_eq!(call!(xor_si32(4, -1713183800)), -1713183796); - assert_eq!(call!(xor_si32(-1252582164, 4)), -1252582168); - assert_eq!(call!(xor_si32(4, -1252582164)), -1252582168); - assert_eq!(call!(xor_si32(-1252582164, 0)), -1252582164); - assert_eq!(call!(xor_si32(0, -1252582164)), -1252582164); - assert_eq!(call!(xor_si32(-1252582164, 1)), -1252582163); - assert_eq!(call!(xor_si32(1, -1252582164)), -1252582163); - assert_eq!(call!(xor_si32(-1252582164, 2)), -1252582162); - assert_eq!(call!(xor_si32(2, -1252582164)), -1252582162); - assert_eq!(call!(xor_si32(-1252582164, 3)), -1252582161); - assert_eq!(call!(xor_si32(3, -1252582164)), -1252582161); - assert_eq!(call!(xor_si32(-1035405763, 2147483647)), -1112077886); - assert_eq!(call!(xor_si32(2147483647, -1035405763)), -1112077886); - assert_eq!(call!(xor_si32(-1035405763, 2147483646)), -1112077885); - assert_eq!(call!(xor_si32(2147483646, -1035405763)), -1112077885); - assert_eq!(call!(xor_si32(-1035405763, 4)), -1035405767); - assert_eq!(call!(xor_si32(4, -1035405763)), -1035405767); - assert_eq!(call!(xor_si32(-1035405763, 1)), -1035405764); - assert_eq!(call!(xor_si32(1, -1035405763)), -1035405764); - assert_eq!(call!(xor_si32(-1035405763, 0)), -1035405763); - assert_eq!(call!(xor_si32(0, -1035405763)), -1035405763); - assert_eq!(call!(xor_si32(-1035405763, 3)), -1035405762); - assert_eq!(call!(xor_si32(3, -1035405763)), -1035405762); - assert_eq!(call!(xor_si32(-1035405763, 2)), -1035405761); - assert_eq!(call!(xor_si32(2, -1035405763)), -1035405761); - assert_eq!(call!(xor_si32(-1252582164, 2147483646)), -894901486); - assert_eq!(call!(xor_si32(2147483646, -1252582164)), -894901486); - assert_eq!(call!(xor_si32(-1252582164, 2147483647)), -894901485); - assert_eq!(call!(xor_si32(2147483647, -1252582164)), -894901485); - assert_eq!(call!(xor_si32(-1713183800, 2147483646)), -434299850); - assert_eq!(call!(xor_si32(2147483646, -1713183800)), -434299850); - assert_eq!(call!(xor_si32(-1713183800, 2147483647)), -434299849); - assert_eq!(call!(xor_si32(2147483647, -1713183800)), -434299849); - assert_eq!(call!(xor_si32(-2147483648, 2147483646)), -2); - assert_eq!(call!(xor_si32(-2147483647, 2147483647)), -2); - assert_eq!(call!(xor_si32(2147483646, -2147483648)), -2); - assert_eq!(call!(xor_si32(2147483647, -2147483647)), -2); - assert_eq!(call!(xor_si32(-2147483648, 2147483647)), -1); - assert_eq!(call!(xor_si32(-2147483647, 2147483646)), -1); - assert_eq!(call!(xor_si32(2147483646, -2147483647)), -1); - assert_eq!(call!(xor_si32(2147483647, -2147483648)), -1); - assert_eq!(call!(xor_si32(-2147483648, -2147483648)), 0); - assert_eq!(call!(xor_si32(-2147483647, -2147483647)), 0); - assert_eq!(call!(xor_si32(-1713183800, -1713183800)), 0); - assert_eq!(call!(xor_si32(-1252582164, -1252582164)), 0); - assert_eq!(call!(xor_si32(-1035405763, -1035405763)), 0); - assert_eq!(call!(xor_si32(0, 0)), 0); - assert_eq!(call!(xor_si32(1, 1)), 0); - assert_eq!(call!(xor_si32(2, 2)), 0); - assert_eq!(call!(xor_si32(3, 3)), 0); - assert_eq!(call!(xor_si32(4, 4)), 0); - assert_eq!(call!(xor_si32(2147483646, 2147483646)), 0); - assert_eq!(call!(xor_si32(2147483647, 2147483647)), 0); - assert_eq!(call!(xor_si32(-2147483648, -2147483647)), 1); - assert_eq!(call!(xor_si32(-2147483647, -2147483648)), 1); - assert_eq!(call!(xor_si32(0, 1)), 1); - assert_eq!(call!(xor_si32(1, 0)), 1); - assert_eq!(call!(xor_si32(2, 3)), 1); - assert_eq!(call!(xor_si32(3, 2)), 1); - assert_eq!(call!(xor_si32(2147483646, 2147483647)), 1); - assert_eq!(call!(xor_si32(2147483647, 2147483646)), 1); - assert_eq!(call!(xor_si32(0, 2)), 2); - assert_eq!(call!(xor_si32(1, 3)), 2); - assert_eq!(call!(xor_si32(2, 0)), 2); - assert_eq!(call!(xor_si32(3, 1)), 2); - assert_eq!(call!(xor_si32(0, 3)), 3); - assert_eq!(call!(xor_si32(1, 2)), 3); - assert_eq!(call!(xor_si32(2, 1)), 3); - assert_eq!(call!(xor_si32(3, 0)), 3); - assert_eq!(call!(xor_si32(0, 4)), 4); - assert_eq!(call!(xor_si32(4, 0)), 4); - assert_eq!(call!(xor_si32(1, 4)), 5); - assert_eq!(call!(xor_si32(4, 1)), 5); - assert_eq!(call!(xor_si32(2, 4)), 6); - assert_eq!(call!(xor_si32(4, 2)), 6); - assert_eq!(call!(xor_si32(3, 4)), 7); - assert_eq!(call!(xor_si32(4, 3)), 7); - assert_eq!(call!(xor_si32(-2147483648, -1713183800)), 434299848); - assert_eq!(call!(xor_si32(-1713183800, -2147483648)), 434299848); - assert_eq!(call!(xor_si32(-2147483647, -1713183800)), 434299849); - assert_eq!(call!(xor_si32(-1713183800, -2147483647)), 434299849); - assert_eq!(call!(xor_si32(-1713183800, -1252582164)), 750124836); - assert_eq!(call!(xor_si32(-1252582164, -1713183800)), 750124836); - assert_eq!(call!(xor_si32(-2147483648, -1252582164)), 894901484); - assert_eq!(call!(xor_si32(-1252582164, -2147483648)), 894901484); - assert_eq!(call!(xor_si32(-2147483647, -1252582164)), 894901485); - assert_eq!(call!(xor_si32(-1252582164, -2147483647)), 894901485); - assert_eq!(call!(xor_si32(-2147483647, -1035405763)), 1112077884); - assert_eq!(call!(xor_si32(-1035405763, -2147483647)), 1112077884); - assert_eq!(call!(xor_si32(-2147483648, -1035405763)), 1112077885); - assert_eq!(call!(xor_si32(-1035405763, -2147483648)), 1112077885); - assert_eq!(call!(xor_si32(-1713183800, -1035405763)), 1537873397); - assert_eq!(call!(xor_si32(-1035405763, -1713183800)), 1537873397); - assert_eq!(call!(xor_si32(-1252582164, -1035405763)), 1998580433); - assert_eq!(call!(xor_si32(-1035405763, -1252582164)), 1998580433); - assert_eq!(call!(xor_si32(4, 2147483646)), 2147483642); - assert_eq!(call!(xor_si32(2147483646, 4)), 2147483642); - assert_eq!(call!(xor_si32(4, 2147483647)), 2147483643); - assert_eq!(call!(xor_si32(2147483647, 4)), 2147483643); - assert_eq!(call!(xor_si32(2, 2147483646)), 2147483644); - assert_eq!(call!(xor_si32(3, 2147483647)), 2147483644); - assert_eq!(call!(xor_si32(2147483646, 2)), 2147483644); - assert_eq!(call!(xor_si32(2147483647, 3)), 2147483644); - assert_eq!(call!(xor_si32(2, 2147483647)), 2147483645); - assert_eq!(call!(xor_si32(3, 2147483646)), 2147483645); - assert_eq!(call!(xor_si32(2147483646, 3)), 2147483645); - assert_eq!(call!(xor_si32(2147483647, 2)), 2147483645); - assert_eq!(call!(xor_si32(0, 2147483646)), 2147483646); - assert_eq!(call!(xor_si32(1, 2147483647)), 2147483646); - assert_eq!(call!(xor_si32(2147483646, 0)), 2147483646); - assert_eq!(call!(xor_si32(2147483647, 1)), 2147483646); - assert_eq!(call!(xor_si32(0, 2147483647)), 2147483647); - assert_eq!(call!(xor_si32(1, 2147483646)), 2147483647); - assert_eq!(call!(xor_si32(2147483646, 1)), 2147483647); - assert_eq!(call!(xor_si32(2147483647, 0)), 2147483647); - assert_eq!(call!(xor_si64(-9223372036854775808, 0)), -9223372036854775808); - assert_eq!(call!(xor_si64(-9223372036854775807, 1)), -9223372036854775808); - assert_eq!(call!(xor_si64(0, -9223372036854775808)), -9223372036854775808); - assert_eq!(call!(xor_si64(1, -9223372036854775807)), -9223372036854775808); - assert_eq!(call!(xor_si64(-9223372036854775808, 1)), -9223372036854775807); - assert_eq!(call!(xor_si64(-9223372036854775807, 0)), -9223372036854775807); - assert_eq!(call!(xor_si64(0, -9223372036854775807)), -9223372036854775807); - assert_eq!(call!(xor_si64(1, -9223372036854775808)), -9223372036854775807); - assert_eq!(call!(xor_si64(-9223372036854775808, 2)), -9223372036854775806); - assert_eq!(call!(xor_si64(-9223372036854775807, 3)), -9223372036854775806); - assert_eq!(call!(xor_si64(2, -9223372036854775808)), -9223372036854775806); - assert_eq!(call!(xor_si64(3, -9223372036854775807)), -9223372036854775806); - assert_eq!(call!(xor_si64(-9223372036854775808, 3)), -9223372036854775805); - assert_eq!(call!(xor_si64(-9223372036854775807, 2)), -9223372036854775805); - assert_eq!(call!(xor_si64(2, -9223372036854775807)), -9223372036854775805); - assert_eq!(call!(xor_si64(3, -9223372036854775808)), -9223372036854775805); - assert_eq!(call!(xor_si64(-9223372036854775808, 4)), -9223372036854775804); - assert_eq!(call!(xor_si64(4, -9223372036854775808)), -9223372036854775804); - assert_eq!(call!(xor_si64(-9223372036854775807, 4)), -9223372036854775803); - assert_eq!(call!(xor_si64(4, -9223372036854775807)), -9223372036854775803); - assert_eq!(call!(xor_si64(-1328271339354574848, 9223372036854775806)), -7895100697500200962); - assert_eq!(call!(xor_si64(9223372036854775806, -1328271339354574848)), -7895100697500200962); - assert_eq!(call!(xor_si64(-1328271339354574848, 9223372036854775807)), -7895100697500200961); - assert_eq!(call!(xor_si64(9223372036854775807, -1328271339354574848)), -7895100697500200961); - assert_eq!(call!(xor_si64(-1741927215160008704, 9223372036854775806)), -7481444821694767106); - assert_eq!(call!(xor_si64(9223372036854775806, -1741927215160008704)), -7481444821694767106); - assert_eq!(call!(xor_si64(-1741927215160008704, 9223372036854775807)), -7481444821694767105); - assert_eq!(call!(xor_si64(9223372036854775807, -1741927215160008704)), -7481444821694767105); - assert_eq!(call!(xor_si64(-1328271339354574848, 5577148965131116544)), -6847992414814875648); - assert_eq!(call!(xor_si64(5577148965131116544, -1328271339354574848)), -6847992414814875648); - assert_eq!(call!(xor_si64(-1741927215160008704, 5577148965131116544)), -6145886261021343744); - assert_eq!(call!(xor_si64(5577148965131116544, -1741927215160008704)), -6145886261021343744); - assert_eq!(call!(xor_si64(-9223372036854775808, 5577148965131116544)), -3646223071723659264); - assert_eq!(call!(xor_si64(5577148965131116544, -9223372036854775808)), -3646223071723659264); - assert_eq!(call!(xor_si64(-9223372036854775807, 5577148965131116544)), -3646223071723659263); - assert_eq!(call!(xor_si64(5577148965131116544, -9223372036854775807)), -3646223071723659263); - assert_eq!(call!(xor_si64(-1741927215160008704, 0)), -1741927215160008704); - assert_eq!(call!(xor_si64(0, -1741927215160008704)), -1741927215160008704); - assert_eq!(call!(xor_si64(-1741927215160008704, 1)), -1741927215160008703); - assert_eq!(call!(xor_si64(1, -1741927215160008704)), -1741927215160008703); - assert_eq!(call!(xor_si64(-1741927215160008704, 2)), -1741927215160008702); - assert_eq!(call!(xor_si64(2, -1741927215160008704)), -1741927215160008702); - assert_eq!(call!(xor_si64(-1741927215160008704, 3)), -1741927215160008701); - assert_eq!(call!(xor_si64(3, -1741927215160008704)), -1741927215160008701); - assert_eq!(call!(xor_si64(-1741927215160008704, 4)), -1741927215160008700); - assert_eq!(call!(xor_si64(4, -1741927215160008704)), -1741927215160008700); - assert_eq!(call!(xor_si64(-1328271339354574848, 0)), -1328271339354574848); - assert_eq!(call!(xor_si64(0, -1328271339354574848)), -1328271339354574848); - assert_eq!(call!(xor_si64(-1328271339354574848, 1)), -1328271339354574847); - assert_eq!(call!(xor_si64(1, -1328271339354574848)), -1328271339354574847); - assert_eq!(call!(xor_si64(-1328271339354574848, 2)), -1328271339354574846); - assert_eq!(call!(xor_si64(2, -1328271339354574848)), -1328271339354574846); - assert_eq!(call!(xor_si64(-1328271339354574848, 3)), -1328271339354574845); - assert_eq!(call!(xor_si64(3, -1328271339354574848)), -1328271339354574845); - assert_eq!(call!(xor_si64(-1328271339354574848, 4)), -1328271339354574844); - assert_eq!(call!(xor_si64(4, -1328271339354574848)), -1328271339354574844); - assert_eq!(call!(xor_si64(-9223372036854775808, 9223372036854775806)), -2); - assert_eq!(call!(xor_si64(-9223372036854775807, 9223372036854775807)), -2); - assert_eq!(call!(xor_si64(9223372036854775806, -9223372036854775808)), -2); - assert_eq!(call!(xor_si64(9223372036854775807, -9223372036854775807)), -2); - assert_eq!(call!(xor_si64(-9223372036854775808, 9223372036854775807)), -1); - assert_eq!(call!(xor_si64(-9223372036854775807, 9223372036854775806)), -1); - assert_eq!(call!(xor_si64(9223372036854775806, -9223372036854775807)), -1); - assert_eq!(call!(xor_si64(9223372036854775807, -9223372036854775808)), -1); - assert_eq!(call!(xor_si64(-9223372036854775808, -9223372036854775808)), 0); - assert_eq!(call!(xor_si64(-9223372036854775807, -9223372036854775807)), 0); - assert_eq!(call!(xor_si64(-1741927215160008704, -1741927215160008704)), 0); - assert_eq!(call!(xor_si64(-1328271339354574848, -1328271339354574848)), 0); - assert_eq!(call!(xor_si64(0, 0)), 0); - assert_eq!(call!(xor_si64(1, 1)), 0); - assert_eq!(call!(xor_si64(2, 2)), 0); - assert_eq!(call!(xor_si64(3, 3)), 0); - assert_eq!(call!(xor_si64(4, 4)), 0); - assert_eq!(call!(xor_si64(5577148965131116544, 5577148965131116544)), 0); - assert_eq!(call!(xor_si64(9223372036854775806, 9223372036854775806)), 0); - assert_eq!(call!(xor_si64(9223372036854775807, 9223372036854775807)), 0); - assert_eq!(call!(xor_si64(-9223372036854775808, -9223372036854775807)), 1); - assert_eq!(call!(xor_si64(-9223372036854775807, -9223372036854775808)), 1); - assert_eq!(call!(xor_si64(0, 1)), 1); - assert_eq!(call!(xor_si64(1, 0)), 1); - assert_eq!(call!(xor_si64(2, 3)), 1); - assert_eq!(call!(xor_si64(3, 2)), 1); - assert_eq!(call!(xor_si64(9223372036854775806, 9223372036854775807)), 1); - assert_eq!(call!(xor_si64(9223372036854775807, 9223372036854775806)), 1); - assert_eq!(call!(xor_si64(0, 2)), 2); - assert_eq!(call!(xor_si64(1, 3)), 2); - assert_eq!(call!(xor_si64(2, 0)), 2); - assert_eq!(call!(xor_si64(3, 1)), 2); - assert_eq!(call!(xor_si64(0, 3)), 3); - assert_eq!(call!(xor_si64(1, 2)), 3); - assert_eq!(call!(xor_si64(2, 1)), 3); - assert_eq!(call!(xor_si64(3, 0)), 3); - assert_eq!(call!(xor_si64(0, 4)), 4); - assert_eq!(call!(xor_si64(4, 0)), 4); - assert_eq!(call!(xor_si64(1, 4)), 5); - assert_eq!(call!(xor_si64(4, 1)), 5); - assert_eq!(call!(xor_si64(2, 4)), 6); - assert_eq!(call!(xor_si64(4, 2)), 6); - assert_eq!(call!(xor_si64(3, 4)), 7); - assert_eq!(call!(xor_si64(4, 3)), 7); - assert_eq!(call!(xor_si64(-1741927215160008704, -1328271339354574848)), 739265629478801408); - assert_eq!(call!(xor_si64(-1328271339354574848, -1741927215160008704)), 739265629478801408); - assert_eq!(call!(xor_si64(5577148965131116544, 9223372036854775806)), 3646223071723659262); - assert_eq!(call!(xor_si64(9223372036854775806, 5577148965131116544)), 3646223071723659262); - assert_eq!(call!(xor_si64(5577148965131116544, 9223372036854775807)), 3646223071723659263); - assert_eq!(call!(xor_si64(9223372036854775807, 5577148965131116544)), 3646223071723659263); - assert_eq!(call!(xor_si64(0, 5577148965131116544)), 5577148965131116544); - assert_eq!(call!(xor_si64(5577148965131116544, 0)), 5577148965131116544); - assert_eq!(call!(xor_si64(1, 5577148965131116544)), 5577148965131116545); - assert_eq!(call!(xor_si64(5577148965131116544, 1)), 5577148965131116545); - assert_eq!(call!(xor_si64(2, 5577148965131116544)), 5577148965131116546); - assert_eq!(call!(xor_si64(5577148965131116544, 2)), 5577148965131116546); - assert_eq!(call!(xor_si64(3, 5577148965131116544)), 5577148965131116547); - assert_eq!(call!(xor_si64(5577148965131116544, 3)), 5577148965131116547); - assert_eq!(call!(xor_si64(4, 5577148965131116544)), 5577148965131116548); - assert_eq!(call!(xor_si64(5577148965131116544, 4)), 5577148965131116548); - assert_eq!(call!(xor_si64(-9223372036854775808, -1741927215160008704)), 7481444821694767104); - assert_eq!(call!(xor_si64(-1741927215160008704, -9223372036854775808)), 7481444821694767104); - assert_eq!(call!(xor_si64(-9223372036854775807, -1741927215160008704)), 7481444821694767105); - assert_eq!(call!(xor_si64(-1741927215160008704, -9223372036854775807)), 7481444821694767105); - assert_eq!(call!(xor_si64(-9223372036854775808, -1328271339354574848)), 7895100697500200960); - assert_eq!(call!(xor_si64(-1328271339354574848, -9223372036854775808)), 7895100697500200960); - assert_eq!(call!(xor_si64(-9223372036854775807, -1328271339354574848)), 7895100697500200961); - assert_eq!(call!(xor_si64(-1328271339354574848, -9223372036854775807)), 7895100697500200961); - assert_eq!(call!(xor_si64(4, 9223372036854775806)), 9223372036854775802); - assert_eq!(call!(xor_si64(9223372036854775806, 4)), 9223372036854775802); - assert_eq!(call!(xor_si64(4, 9223372036854775807)), 9223372036854775803); - assert_eq!(call!(xor_si64(9223372036854775807, 4)), 9223372036854775803); - assert_eq!(call!(xor_si64(2, 9223372036854775806)), 9223372036854775804); - assert_eq!(call!(xor_si64(3, 9223372036854775807)), 9223372036854775804); - assert_eq!(call!(xor_si64(9223372036854775806, 2)), 9223372036854775804); - assert_eq!(call!(xor_si64(9223372036854775807, 3)), 9223372036854775804); - assert_eq!(call!(xor_si64(2, 9223372036854775807)), 9223372036854775805); - assert_eq!(call!(xor_si64(3, 9223372036854775806)), 9223372036854775805); - assert_eq!(call!(xor_si64(9223372036854775806, 3)), 9223372036854775805); - assert_eq!(call!(xor_si64(9223372036854775807, 2)), 9223372036854775805); - assert_eq!(call!(xor_si64(0, 9223372036854775806)), 9223372036854775806); - assert_eq!(call!(xor_si64(1, 9223372036854775807)), 9223372036854775806); - assert_eq!(call!(xor_si64(9223372036854775806, 0)), 9223372036854775806); - assert_eq!(call!(xor_si64(9223372036854775807, 1)), 9223372036854775806); - assert_eq!(call!(xor_si64(0, 9223372036854775807)), 9223372036854775807); - assert_eq!(call!(xor_si64(1, 9223372036854775806)), 9223372036854775807); - assert_eq!(call!(xor_si64(9223372036854775806, 1)), 9223372036854775807); - assert_eq!(call!(xor_si64(9223372036854775807, 0)), 9223372036854775807); - assert_eq!(call!(xor_si8(-128, 0)), -128); - assert_eq!(call!(xor_si8(-127, 1)), -128); - assert_eq!(call!(xor_si8(0, -128)), -128); - assert_eq!(call!(xor_si8(1, -127)), -128); - assert_eq!(call!(xor_si8(-128, 1)), -127); - assert_eq!(call!(xor_si8(-127, 0)), -127); - assert_eq!(call!(xor_si8(0, -127)), -127); - assert_eq!(call!(xor_si8(1, -128)), -127); - assert_eq!(call!(xor_si8(-128, 2)), -126); - assert_eq!(call!(xor_si8(-127, 3)), -126); - assert_eq!(call!(xor_si8(2, -128)), -126); - assert_eq!(call!(xor_si8(3, -127)), -126); - assert_eq!(call!(xor_si8(-128, 3)), -125); - assert_eq!(call!(xor_si8(-127, 2)), -125); - assert_eq!(call!(xor_si8(2, -127)), -125); - assert_eq!(call!(xor_si8(3, -128)), -125); - assert_eq!(call!(xor_si8(-128, 4)), -124); - assert_eq!(call!(xor_si8(4, -128)), -124); - assert_eq!(call!(xor_si8(-127, 4)), -123); - assert_eq!(call!(xor_si8(4, -127)), -123); - assert_eq!(call!(xor_si8(-128, 16)), -112); - assert_eq!(call!(xor_si8(16, -128)), -112); - assert_eq!(call!(xor_si8(-127, 16)), -111); - assert_eq!(call!(xor_si8(16, -127)), -111); - assert_eq!(call!(xor_si8(-128, 126)), -2); - assert_eq!(call!(xor_si8(-127, 127)), -2); - assert_eq!(call!(xor_si8(126, -128)), -2); - assert_eq!(call!(xor_si8(127, -127)), -2); - assert_eq!(call!(xor_si8(-128, 127)), -1); - assert_eq!(call!(xor_si8(-127, 126)), -1); - assert_eq!(call!(xor_si8(126, -127)), -1); - assert_eq!(call!(xor_si8(127, -128)), -1); - assert_eq!(call!(xor_si8(-128, -128)), 0); - assert_eq!(call!(xor_si8(-127, -127)), 0); - assert_eq!(call!(xor_si8(0, 0)), 0); - assert_eq!(call!(xor_si8(1, 1)), 0); - assert_eq!(call!(xor_si8(2, 2)), 0); - assert_eq!(call!(xor_si8(3, 3)), 0); - assert_eq!(call!(xor_si8(4, 4)), 0); - assert_eq!(call!(xor_si8(16, 16)), 0); - assert_eq!(call!(xor_si8(126, 126)), 0); - assert_eq!(call!(xor_si8(127, 127)), 0); - assert_eq!(call!(xor_si8(-128, -127)), 1); - assert_eq!(call!(xor_si8(-127, -128)), 1); - assert_eq!(call!(xor_si8(0, 1)), 1); - assert_eq!(call!(xor_si8(1, 0)), 1); - assert_eq!(call!(xor_si8(2, 3)), 1); - assert_eq!(call!(xor_si8(3, 2)), 1); - assert_eq!(call!(xor_si8(126, 127)), 1); - assert_eq!(call!(xor_si8(127, 126)), 1); - assert_eq!(call!(xor_si8(0, 2)), 2); - assert_eq!(call!(xor_si8(1, 3)), 2); - assert_eq!(call!(xor_si8(2, 0)), 2); - assert_eq!(call!(xor_si8(3, 1)), 2); - assert_eq!(call!(xor_si8(0, 3)), 3); - assert_eq!(call!(xor_si8(1, 2)), 3); - assert_eq!(call!(xor_si8(2, 1)), 3); - assert_eq!(call!(xor_si8(3, 0)), 3); - assert_eq!(call!(xor_si8(0, 4)), 4); - assert_eq!(call!(xor_si8(4, 0)), 4); - assert_eq!(call!(xor_si8(1, 4)), 5); - assert_eq!(call!(xor_si8(4, 1)), 5); - assert_eq!(call!(xor_si8(2, 4)), 6); - assert_eq!(call!(xor_si8(4, 2)), 6); - assert_eq!(call!(xor_si8(3, 4)), 7); - assert_eq!(call!(xor_si8(4, 3)), 7); - assert_eq!(call!(xor_si8(0, 16)), 16); - assert_eq!(call!(xor_si8(16, 0)), 16); - assert_eq!(call!(xor_si8(1, 16)), 17); - assert_eq!(call!(xor_si8(16, 1)), 17); - assert_eq!(call!(xor_si8(2, 16)), 18); - assert_eq!(call!(xor_si8(16, 2)), 18); - assert_eq!(call!(xor_si8(3, 16)), 19); - assert_eq!(call!(xor_si8(16, 3)), 19); - assert_eq!(call!(xor_si8(4, 16)), 20); - assert_eq!(call!(xor_si8(16, 4)), 20); - assert_eq!(call!(xor_si8(16, 126)), 110); - assert_eq!(call!(xor_si8(126, 16)), 110); - assert_eq!(call!(xor_si8(16, 127)), 111); - assert_eq!(call!(xor_si8(127, 16)), 111); - assert_eq!(call!(xor_si8(4, 126)), 122); - assert_eq!(call!(xor_si8(126, 4)), 122); - assert_eq!(call!(xor_si8(4, 127)), 123); - assert_eq!(call!(xor_si8(127, 4)), 123); - assert_eq!(call!(xor_si8(2, 126)), 124); - assert_eq!(call!(xor_si8(3, 127)), 124); - assert_eq!(call!(xor_si8(126, 2)), 124); - assert_eq!(call!(xor_si8(127, 3)), 124); - assert_eq!(call!(xor_si8(2, 127)), 125); - assert_eq!(call!(xor_si8(3, 126)), 125); - assert_eq!(call!(xor_si8(126, 3)), 125); - assert_eq!(call!(xor_si8(127, 2)), 125); - assert_eq!(call!(xor_si8(0, 126)), 126); - assert_eq!(call!(xor_si8(1, 127)), 126); - assert_eq!(call!(xor_si8(126, 0)), 126); - assert_eq!(call!(xor_si8(127, 1)), 126); - assert_eq!(call!(xor_si8(0, 127)), 127); - assert_eq!(call!(xor_si8(1, 126)), 127); - assert_eq!(call!(xor_si8(126, 1)), 127); - assert_eq!(call!(xor_si8(127, 0)), 127); - assert_eq!(call!(xor_ui16(0, 0)), 0); - assert_eq!(call!(xor_ui16(1, 1)), 0); - assert_eq!(call!(xor_ui16(2, 2)), 0); - assert_eq!(call!(xor_ui16(3, 3)), 0); - assert_eq!(call!(xor_ui16(4, 4)), 0); - assert_eq!(call!(xor_ui16(1717, 1717)), 0); - assert_eq!(call!(xor_ui16(17988, 17988)), 0); - assert_eq!(call!(xor_ui16(65096, 65096)), 0); - assert_eq!(call!(xor_ui16(65534, 65534)), 0); - assert_eq!(call!(xor_ui16(65535, 65535)), 0); - assert_eq!(call!(xor_ui16(0, 1)), 1); - assert_eq!(call!(xor_ui16(1, 0)), 1); - assert_eq!(call!(xor_ui16(2, 3)), 1); - assert_eq!(call!(xor_ui16(3, 2)), 1); - assert_eq!(call!(xor_ui16(65534, 65535)), 1); - assert_eq!(call!(xor_ui16(65535, 65534)), 1); - assert_eq!(call!(xor_ui16(0, 2)), 2); - assert_eq!(call!(xor_ui16(1, 3)), 2); - assert_eq!(call!(xor_ui16(2, 0)), 2); - assert_eq!(call!(xor_ui16(3, 1)), 2); - assert_eq!(call!(xor_ui16(0, 3)), 3); - assert_eq!(call!(xor_ui16(1, 2)), 3); - assert_eq!(call!(xor_ui16(2, 1)), 3); - assert_eq!(call!(xor_ui16(3, 0)), 3); - assert_eq!(call!(xor_ui16(0, 4)), 4); - assert_eq!(call!(xor_ui16(4, 0)), 4); - assert_eq!(call!(xor_ui16(1, 4)), 5); - assert_eq!(call!(xor_ui16(4, 1)), 5); - assert_eq!(call!(xor_ui16(2, 4)), 6); - assert_eq!(call!(xor_ui16(4, 2)), 6); - assert_eq!(call!(xor_ui16(3, 4)), 7); - assert_eq!(call!(xor_ui16(4, 3)), 7); - assert_eq!(call!(xor_ui16(65096, 65534)), 438); - assert_eq!(call!(xor_ui16(65534, 65096)), 438); - assert_eq!(call!(xor_ui16(65096, 65535)), 439); - assert_eq!(call!(xor_ui16(65535, 65096)), 439); - assert_eq!(call!(xor_ui16(4, 1717)), 1713); - assert_eq!(call!(xor_ui16(1717, 4)), 1713); - assert_eq!(call!(xor_ui16(1, 1717)), 1716); - assert_eq!(call!(xor_ui16(1717, 1)), 1716); - assert_eq!(call!(xor_ui16(0, 1717)), 1717); - assert_eq!(call!(xor_ui16(1717, 0)), 1717); - assert_eq!(call!(xor_ui16(3, 1717)), 1718); - assert_eq!(call!(xor_ui16(1717, 3)), 1718); - assert_eq!(call!(xor_ui16(2, 1717)), 1719); - assert_eq!(call!(xor_ui16(1717, 2)), 1719); - assert_eq!(call!(xor_ui16(1717, 17988)), 16625); - assert_eq!(call!(xor_ui16(17988, 1717)), 16625); - assert_eq!(call!(xor_ui16(4, 17988)), 17984); - assert_eq!(call!(xor_ui16(17988, 4)), 17984); - assert_eq!(call!(xor_ui16(0, 17988)), 17988); - assert_eq!(call!(xor_ui16(17988, 0)), 17988); - assert_eq!(call!(xor_ui16(1, 17988)), 17989); - assert_eq!(call!(xor_ui16(17988, 1)), 17989); - assert_eq!(call!(xor_ui16(2, 17988)), 17990); - assert_eq!(call!(xor_ui16(17988, 2)), 17990); - assert_eq!(call!(xor_ui16(3, 17988)), 17991); - assert_eq!(call!(xor_ui16(17988, 3)), 17991); - assert_eq!(call!(xor_ui16(17988, 65096)), 47116); - assert_eq!(call!(xor_ui16(65096, 17988)), 47116); - assert_eq!(call!(xor_ui16(17988, 65534)), 47546); - assert_eq!(call!(xor_ui16(65534, 17988)), 47546); - assert_eq!(call!(xor_ui16(17988, 65535)), 47547); - assert_eq!(call!(xor_ui16(65535, 17988)), 47547); - assert_eq!(call!(xor_ui16(1717, 65096)), 63741); - assert_eq!(call!(xor_ui16(65096, 1717)), 63741); - assert_eq!(call!(xor_ui16(1717, 65535)), 63818); - assert_eq!(call!(xor_ui16(65535, 1717)), 63818); - assert_eq!(call!(xor_ui16(1717, 65534)), 63819); - assert_eq!(call!(xor_ui16(65534, 1717)), 63819); - assert_eq!(call!(xor_ui16(0, 65096)), 65096); - assert_eq!(call!(xor_ui16(65096, 0)), 65096); - assert_eq!(call!(xor_ui16(1, 65096)), 65097); - assert_eq!(call!(xor_ui16(65096, 1)), 65097); - assert_eq!(call!(xor_ui16(2, 65096)), 65098); - assert_eq!(call!(xor_ui16(65096, 2)), 65098); - assert_eq!(call!(xor_ui16(3, 65096)), 65099); - assert_eq!(call!(xor_ui16(65096, 3)), 65099); - assert_eq!(call!(xor_ui16(4, 65096)), 65100); - assert_eq!(call!(xor_ui16(65096, 4)), 65100); - assert_eq!(call!(xor_ui16(4, 65534)), 65530); - assert_eq!(call!(xor_ui16(65534, 4)), 65530); - assert_eq!(call!(xor_ui16(4, 65535)), 65531); - assert_eq!(call!(xor_ui16(65535, 4)), 65531); - assert_eq!(call!(xor_ui16(2, 65534)), 65532); - assert_eq!(call!(xor_ui16(3, 65535)), 65532); - assert_eq!(call!(xor_ui16(65534, 2)), 65532); - assert_eq!(call!(xor_ui16(65535, 3)), 65532); - assert_eq!(call!(xor_ui16(2, 65535)), 65533); - assert_eq!(call!(xor_ui16(3, 65534)), 65533); - assert_eq!(call!(xor_ui16(65534, 3)), 65533); - assert_eq!(call!(xor_ui16(65535, 2)), 65533); - assert_eq!(call!(xor_ui16(0, 65534)), 65534); - assert_eq!(call!(xor_ui16(1, 65535)), 65534); - assert_eq!(call!(xor_ui16(65534, 0)), 65534); - assert_eq!(call!(xor_ui16(65535, 1)), 65534); - assert_eq!(call!(xor_ui16(0, 65535)), 65535); - assert_eq!(call!(xor_ui16(1, 65534)), 65535); - assert_eq!(call!(xor_ui16(65534, 1)), 65535); - assert_eq!(call!(xor_ui16(65535, 0)), 65535); - assert_eq!(call!(xor_ui32(0, 0)), 0); - assert_eq!(call!(xor_ui32(1, 1)), 0); - assert_eq!(call!(xor_ui32(2, 2)), 0); - assert_eq!(call!(xor_ui32(3, 3)), 0); - assert_eq!(call!(xor_ui32(4, 4)), 0); - assert_eq!(call!(xor_ui32(2119154652, 2119154652)), 0); - assert_eq!(call!(xor_ui32(3002788344, 3002788344)), 0); - assert_eq!(call!(xor_ui32(3482297128, 3482297128)), 0); - assert_eq!(call!(xor_ui32(4294967294, 4294967294)), 0); - assert_eq!(call!(xor_ui32(4294967295, 4294967295)), 0); - assert_eq!(call!(xor_ui32(0, 1)), 1); - assert_eq!(call!(xor_ui32(1, 0)), 1); - assert_eq!(call!(xor_ui32(2, 3)), 1); - assert_eq!(call!(xor_ui32(3, 2)), 1); - assert_eq!(call!(xor_ui32(4294967294, 4294967295)), 1); - assert_eq!(call!(xor_ui32(4294967295, 4294967294)), 1); - assert_eq!(call!(xor_ui32(0, 2)), 2); - assert_eq!(call!(xor_ui32(1, 3)), 2); - assert_eq!(call!(xor_ui32(2, 0)), 2); - assert_eq!(call!(xor_ui32(3, 1)), 2); - assert_eq!(call!(xor_ui32(0, 3)), 3); - assert_eq!(call!(xor_ui32(1, 2)), 3); - assert_eq!(call!(xor_ui32(2, 1)), 3); - assert_eq!(call!(xor_ui32(3, 0)), 3); - assert_eq!(call!(xor_ui32(0, 4)), 4); - assert_eq!(call!(xor_ui32(4, 0)), 4); - assert_eq!(call!(xor_ui32(1, 4)), 5); - assert_eq!(call!(xor_ui32(4, 1)), 5); - assert_eq!(call!(xor_ui32(2, 4)), 6); - assert_eq!(call!(xor_ui32(4, 2)), 6); - assert_eq!(call!(xor_ui32(3, 4)), 7); - assert_eq!(call!(xor_ui32(4, 3)), 7); - assert_eq!(call!(xor_ui32(3482297128, 4294967294)), 812670166); - assert_eq!(call!(xor_ui32(4294967294, 3482297128)), 812670166); - assert_eq!(call!(xor_ui32(3482297128, 4294967295)), 812670167); - assert_eq!(call!(xor_ui32(4294967295, 3482297128)), 812670167); - assert_eq!(call!(xor_ui32(3002788344, 4294967294)), 1292178950); - assert_eq!(call!(xor_ui32(4294967294, 3002788344)), 1292178950); - assert_eq!(call!(xor_ui32(3002788344, 4294967295)), 1292178951); - assert_eq!(call!(xor_ui32(4294967295, 3002788344)), 1292178951); - assert_eq!(call!(xor_ui32(3002788344, 3482297128)), 2104838864); - assert_eq!(call!(xor_ui32(3482297128, 3002788344)), 2104838864); - assert_eq!(call!(xor_ui32(4, 2119154652)), 2119154648); - assert_eq!(call!(xor_ui32(2119154652, 4)), 2119154648); - assert_eq!(call!(xor_ui32(0, 2119154652)), 2119154652); - assert_eq!(call!(xor_ui32(2119154652, 0)), 2119154652); - assert_eq!(call!(xor_ui32(1, 2119154652)), 2119154653); - assert_eq!(call!(xor_ui32(2119154652, 1)), 2119154653); - assert_eq!(call!(xor_ui32(2, 2119154652)), 2119154654); - assert_eq!(call!(xor_ui32(2119154652, 2)), 2119154654); - assert_eq!(call!(xor_ui32(3, 2119154652)), 2119154655); - assert_eq!(call!(xor_ui32(2119154652, 3)), 2119154655); - assert_eq!(call!(xor_ui32(2119154652, 4294967294)), 2175812642); - assert_eq!(call!(xor_ui32(4294967294, 2119154652)), 2175812642); - assert_eq!(call!(xor_ui32(2119154652, 4294967295)), 2175812643); - assert_eq!(call!(xor_ui32(4294967295, 2119154652)), 2175812643); - assert_eq!(call!(xor_ui32(2119154652, 3482297128)), 2982156532); - assert_eq!(call!(xor_ui32(3482297128, 2119154652)), 2982156532); - assert_eq!(call!(xor_ui32(0, 3002788344)), 3002788344); - assert_eq!(call!(xor_ui32(3002788344, 0)), 3002788344); - assert_eq!(call!(xor_ui32(1, 3002788344)), 3002788345); - assert_eq!(call!(xor_ui32(3002788344, 1)), 3002788345); - assert_eq!(call!(xor_ui32(2, 3002788344)), 3002788346); - assert_eq!(call!(xor_ui32(3002788344, 2)), 3002788346); - assert_eq!(call!(xor_ui32(3, 3002788344)), 3002788347); - assert_eq!(call!(xor_ui32(3002788344, 3)), 3002788347); - assert_eq!(call!(xor_ui32(4, 3002788344)), 3002788348); - assert_eq!(call!(xor_ui32(3002788344, 4)), 3002788348); - assert_eq!(call!(xor_ui32(2119154652, 3002788344)), 3434435108); - assert_eq!(call!(xor_ui32(3002788344, 2119154652)), 3434435108); - assert_eq!(call!(xor_ui32(0, 3482297128)), 3482297128); - assert_eq!(call!(xor_ui32(3482297128, 0)), 3482297128); - assert_eq!(call!(xor_ui32(1, 3482297128)), 3482297129); - assert_eq!(call!(xor_ui32(3482297128, 1)), 3482297129); - assert_eq!(call!(xor_ui32(2, 3482297128)), 3482297130); - assert_eq!(call!(xor_ui32(3482297128, 2)), 3482297130); - assert_eq!(call!(xor_ui32(3, 3482297128)), 3482297131); - assert_eq!(call!(xor_ui32(3482297128, 3)), 3482297131); - assert_eq!(call!(xor_ui32(4, 3482297128)), 3482297132); - assert_eq!(call!(xor_ui32(3482297128, 4)), 3482297132); - assert_eq!(call!(xor_ui32(4, 4294967294)), 4294967290); - assert_eq!(call!(xor_ui32(4294967294, 4)), 4294967290); - assert_eq!(call!(xor_ui32(4, 4294967295)), 4294967291); - assert_eq!(call!(xor_ui32(4294967295, 4)), 4294967291); - assert_eq!(call!(xor_ui32(2, 4294967294)), 4294967292); - assert_eq!(call!(xor_ui32(3, 4294967295)), 4294967292); - assert_eq!(call!(xor_ui32(4294967294, 2)), 4294967292); - assert_eq!(call!(xor_ui32(4294967295, 3)), 4294967292); - assert_eq!(call!(xor_ui32(2, 4294967295)), 4294967293); - assert_eq!(call!(xor_ui32(3, 4294967294)), 4294967293); - assert_eq!(call!(xor_ui32(4294967294, 3)), 4294967293); - assert_eq!(call!(xor_ui32(4294967295, 2)), 4294967293); - assert_eq!(call!(xor_ui32(0, 4294967294)), 4294967294); - assert_eq!(call!(xor_ui32(1, 4294967295)), 4294967294); - assert_eq!(call!(xor_ui32(4294967294, 0)), 4294967294); - assert_eq!(call!(xor_ui32(4294967295, 1)), 4294967294); - assert_eq!(call!(xor_ui32(0, 4294967295)), 4294967295); - assert_eq!(call!(xor_ui32(1, 4294967294)), 4294967295); - assert_eq!(call!(xor_ui32(4294967294, 1)), 4294967295); - assert_eq!(call!(xor_ui32(4294967295, 0)), 4294967295); - assert_eq!(call!(xor_ui64(0, 0)), 0); - assert_eq!(call!(xor_ui64(1, 1)), 0); - assert_eq!(call!(xor_ui64(2, 2)), 0); - assert_eq!(call!(xor_ui64(3, 3)), 0); - assert_eq!(call!(xor_ui64(4, 4)), 0); - assert_eq!(call!(xor_ui64(191084152064409600, 191084152064409600)), 0); - assert_eq!(call!(xor_ui64(11015955194427482112, 11015955194427482112)), 0); - assert_eq!(call!(xor_ui64(16990600415051759616, 16990600415051759616)), 0); - assert_eq!(call!(xor_ui64(18446744073709551614, 18446744073709551614)), 0); - assert_eq!(call!(xor_ui64(18446744073709551615, 18446744073709551615)), 0); - assert_eq!(call!(xor_ui64(0, 1)), 1); - assert_eq!(call!(xor_ui64(1, 0)), 1); - assert_eq!(call!(xor_ui64(2, 3)), 1); - assert_eq!(call!(xor_ui64(3, 2)), 1); - assert_eq!(call!(xor_ui64(18446744073709551614, 18446744073709551615)), 1); - assert_eq!(call!(xor_ui64(18446744073709551615, 18446744073709551614)), 1); - assert_eq!(call!(xor_ui64(0, 2)), 2); - assert_eq!(call!(xor_ui64(1, 3)), 2); - assert_eq!(call!(xor_ui64(2, 0)), 2); - assert_eq!(call!(xor_ui64(3, 1)), 2); - assert_eq!(call!(xor_ui64(0, 3)), 3); - assert_eq!(call!(xor_ui64(1, 2)), 3); - assert_eq!(call!(xor_ui64(2, 1)), 3); - assert_eq!(call!(xor_ui64(3, 0)), 3); - assert_eq!(call!(xor_ui64(0, 4)), 4); - assert_eq!(call!(xor_ui64(4, 0)), 4); - assert_eq!(call!(xor_ui64(1, 4)), 5); - assert_eq!(call!(xor_ui64(4, 1)), 5); - assert_eq!(call!(xor_ui64(2, 4)), 6); - assert_eq!(call!(xor_ui64(4, 2)), 6); - assert_eq!(call!(xor_ui64(3, 4)), 7); - assert_eq!(call!(xor_ui64(4, 3)), 7); - assert_eq!(call!(xor_ui64(0, 191084152064409600)), 191084152064409600); - assert_eq!(call!(xor_ui64(191084152064409600, 0)), 191084152064409600); - assert_eq!(call!(xor_ui64(1, 191084152064409600)), 191084152064409601); - assert_eq!(call!(xor_ui64(191084152064409600, 1)), 191084152064409601); - assert_eq!(call!(xor_ui64(2, 191084152064409600)), 191084152064409602); - assert_eq!(call!(xor_ui64(191084152064409600, 2)), 191084152064409602); - assert_eq!(call!(xor_ui64(3, 191084152064409600)), 191084152064409603); - assert_eq!(call!(xor_ui64(191084152064409600, 3)), 191084152064409603); - assert_eq!(call!(xor_ui64(4, 191084152064409600)), 191084152064409604); - assert_eq!(call!(xor_ui64(191084152064409600, 4)), 191084152064409604); - assert_eq!(call!(xor_ui64(16990600415051759616, 18446744073709551614)), 1456143658657791998); - assert_eq!(call!(xor_ui64(18446744073709551614, 16990600415051759616)), 1456143658657791998); - assert_eq!(call!(xor_ui64(16990600415051759616, 18446744073709551615)), 1456143658657791999); - assert_eq!(call!(xor_ui64(18446744073709551615, 16990600415051759616)), 1456143658657791999); - assert_eq!(call!(xor_ui64(11015955194427482112, 18446744073709551614)), 7430788879282069502); - assert_eq!(call!(xor_ui64(18446744073709551614, 11015955194427482112)), 7430788879282069502); - assert_eq!(call!(xor_ui64(11015955194427482112, 18446744073709551615)), 7430788879282069503); - assert_eq!(call!(xor_ui64(18446744073709551615, 11015955194427482112)), 7430788879282069503); - assert_eq!(call!(xor_ui64(11015955194427482112, 16990600415051759616)), 8298504554647642112); - assert_eq!(call!(xor_ui64(16990600415051759616, 11015955194427482112)), 8298504554647642112); - assert_eq!(call!(xor_ui64(0, 11015955194427482112)), 11015955194427482112); - assert_eq!(call!(xor_ui64(11015955194427482112, 0)), 11015955194427482112); - assert_eq!(call!(xor_ui64(1, 11015955194427482112)), 11015955194427482113); - assert_eq!(call!(xor_ui64(11015955194427482112, 1)), 11015955194427482113); - assert_eq!(call!(xor_ui64(2, 11015955194427482112)), 11015955194427482114); - assert_eq!(call!(xor_ui64(11015955194427482112, 2)), 11015955194427482114); - assert_eq!(call!(xor_ui64(3, 11015955194427482112)), 11015955194427482115); - assert_eq!(call!(xor_ui64(11015955194427482112, 3)), 11015955194427482115); - assert_eq!(call!(xor_ui64(4, 11015955194427482112)), 11015955194427482116); - assert_eq!(call!(xor_ui64(11015955194427482112, 4)), 11015955194427482116); - assert_eq!(call!(xor_ui64(191084152064409600, 11015955194427482112)), 11116668269601857536); - assert_eq!(call!(xor_ui64(11015955194427482112, 191084152064409600)), 11116668269601857536); - assert_eq!(call!(xor_ui64(191084152064409600, 16990600415051759616)), 16819927597248036864); - assert_eq!(call!(xor_ui64(16990600415051759616, 191084152064409600)), 16819927597248036864); - assert_eq!(call!(xor_ui64(0, 16990600415051759616)), 16990600415051759616); - assert_eq!(call!(xor_ui64(16990600415051759616, 0)), 16990600415051759616); - assert_eq!(call!(xor_ui64(1, 16990600415051759616)), 16990600415051759617); - assert_eq!(call!(xor_ui64(16990600415051759616, 1)), 16990600415051759617); - assert_eq!(call!(xor_ui64(2, 16990600415051759616)), 16990600415051759618); - assert_eq!(call!(xor_ui64(16990600415051759616, 2)), 16990600415051759618); - assert_eq!(call!(xor_ui64(3, 16990600415051759616)), 16990600415051759619); - assert_eq!(call!(xor_ui64(16990600415051759616, 3)), 16990600415051759619); - assert_eq!(call!(xor_ui64(4, 16990600415051759616)), 16990600415051759620); - assert_eq!(call!(xor_ui64(16990600415051759616, 4)), 16990600415051759620); - assert_eq!(call!(xor_ui64(191084152064409600, 18446744073709551614)), 18255659921645142014); - assert_eq!(call!(xor_ui64(18446744073709551614, 191084152064409600)), 18255659921645142014); - assert_eq!(call!(xor_ui64(191084152064409600, 18446744073709551615)), 18255659921645142015); - assert_eq!(call!(xor_ui64(18446744073709551615, 191084152064409600)), 18255659921645142015); - assert_eq!(call!(xor_ui64(4, 18446744073709551614)), 18446744073709551610); - assert_eq!(call!(xor_ui64(18446744073709551614, 4)), 18446744073709551610); - assert_eq!(call!(xor_ui64(4, 18446744073709551615)), 18446744073709551611); - assert_eq!(call!(xor_ui64(18446744073709551615, 4)), 18446744073709551611); - assert_eq!(call!(xor_ui64(2, 18446744073709551614)), 18446744073709551612); - assert_eq!(call!(xor_ui64(3, 18446744073709551615)), 18446744073709551612); - assert_eq!(call!(xor_ui64(18446744073709551614, 2)), 18446744073709551612); - assert_eq!(call!(xor_ui64(18446744073709551615, 3)), 18446744073709551612); - assert_eq!(call!(xor_ui64(2, 18446744073709551615)), 18446744073709551613); - assert_eq!(call!(xor_ui64(3, 18446744073709551614)), 18446744073709551613); - assert_eq!(call!(xor_ui64(18446744073709551614, 3)), 18446744073709551613); - assert_eq!(call!(xor_ui64(18446744073709551615, 2)), 18446744073709551613); - assert_eq!(call!(xor_ui64(0, 18446744073709551614)), 18446744073709551614); - assert_eq!(call!(xor_ui64(1, 18446744073709551615)), 18446744073709551614); - assert_eq!(call!(xor_ui64(18446744073709551614, 0)), 18446744073709551614); - assert_eq!(call!(xor_ui64(18446744073709551615, 1)), 18446744073709551614); - assert_eq!(call!(xor_ui64(0, 18446744073709551615)), 18446744073709551615); - assert_eq!(call!(xor_ui64(1, 18446744073709551614)), 18446744073709551615); - assert_eq!(call!(xor_ui64(18446744073709551614, 1)), 18446744073709551615); - assert_eq!(call!(xor_ui64(18446744073709551615, 0)), 18446744073709551615); - assert_eq!(call!(xor_ui8(0, 0)), 0); - assert_eq!(call!(xor_ui8(1, 1)), 0); - assert_eq!(call!(xor_ui8(2, 2)), 0); - assert_eq!(call!(xor_ui8(3, 3)), 0); - assert_eq!(call!(xor_ui8(4, 4)), 0); - assert_eq!(call!(xor_ui8(72, 72)), 0); - assert_eq!(call!(xor_ui8(100, 100)), 0); - assert_eq!(call!(xor_ui8(162, 162)), 0); - assert_eq!(call!(xor_ui8(254, 254)), 0); - assert_eq!(call!(xor_ui8(255, 255)), 0); - assert_eq!(call!(xor_ui8(0, 1)), 1); - assert_eq!(call!(xor_ui8(1, 0)), 1); - assert_eq!(call!(xor_ui8(2, 3)), 1); - assert_eq!(call!(xor_ui8(3, 2)), 1); - assert_eq!(call!(xor_ui8(254, 255)), 1); - assert_eq!(call!(xor_ui8(255, 254)), 1); - assert_eq!(call!(xor_ui8(0, 2)), 2); - assert_eq!(call!(xor_ui8(1, 3)), 2); - assert_eq!(call!(xor_ui8(2, 0)), 2); - assert_eq!(call!(xor_ui8(3, 1)), 2); - assert_eq!(call!(xor_ui8(0, 3)), 3); - assert_eq!(call!(xor_ui8(1, 2)), 3); - assert_eq!(call!(xor_ui8(2, 1)), 3); - assert_eq!(call!(xor_ui8(3, 0)), 3); - assert_eq!(call!(xor_ui8(0, 4)), 4); - assert_eq!(call!(xor_ui8(4, 0)), 4); - assert_eq!(call!(xor_ui8(1, 4)), 5); - assert_eq!(call!(xor_ui8(4, 1)), 5); - assert_eq!(call!(xor_ui8(2, 4)), 6); - assert_eq!(call!(xor_ui8(4, 2)), 6); - assert_eq!(call!(xor_ui8(3, 4)), 7); - assert_eq!(call!(xor_ui8(4, 3)), 7); - assert_eq!(call!(xor_ui8(72, 100)), 44); - assert_eq!(call!(xor_ui8(100, 72)), 44); - assert_eq!(call!(xor_ui8(0, 72)), 72); - assert_eq!(call!(xor_ui8(72, 0)), 72); - assert_eq!(call!(xor_ui8(1, 72)), 73); - assert_eq!(call!(xor_ui8(72, 1)), 73); - assert_eq!(call!(xor_ui8(2, 72)), 74); - assert_eq!(call!(xor_ui8(72, 2)), 74); - assert_eq!(call!(xor_ui8(3, 72)), 75); - assert_eq!(call!(xor_ui8(72, 3)), 75); - assert_eq!(call!(xor_ui8(4, 72)), 76); - assert_eq!(call!(xor_ui8(72, 4)), 76); - assert_eq!(call!(xor_ui8(162, 254)), 92); - assert_eq!(call!(xor_ui8(254, 162)), 92); - assert_eq!(call!(xor_ui8(162, 255)), 93); - assert_eq!(call!(xor_ui8(255, 162)), 93); - assert_eq!(call!(xor_ui8(4, 100)), 96); - assert_eq!(call!(xor_ui8(100, 4)), 96); - assert_eq!(call!(xor_ui8(0, 100)), 100); - assert_eq!(call!(xor_ui8(100, 0)), 100); - assert_eq!(call!(xor_ui8(1, 100)), 101); - assert_eq!(call!(xor_ui8(100, 1)), 101); - assert_eq!(call!(xor_ui8(2, 100)), 102); - assert_eq!(call!(xor_ui8(100, 2)), 102); - assert_eq!(call!(xor_ui8(3, 100)), 103); - assert_eq!(call!(xor_ui8(100, 3)), 103); - assert_eq!(call!(xor_ui8(100, 254)), 154); - assert_eq!(call!(xor_ui8(254, 100)), 154); - assert_eq!(call!(xor_ui8(100, 255)), 155); - assert_eq!(call!(xor_ui8(255, 100)), 155); - assert_eq!(call!(xor_ui8(2, 162)), 160); - assert_eq!(call!(xor_ui8(162, 2)), 160); - assert_eq!(call!(xor_ui8(3, 162)), 161); - assert_eq!(call!(xor_ui8(162, 3)), 161); - assert_eq!(call!(xor_ui8(0, 162)), 162); - assert_eq!(call!(xor_ui8(162, 0)), 162); - assert_eq!(call!(xor_ui8(1, 162)), 163); - assert_eq!(call!(xor_ui8(162, 1)), 163); - assert_eq!(call!(xor_ui8(4, 162)), 166); - assert_eq!(call!(xor_ui8(162, 4)), 166); - assert_eq!(call!(xor_ui8(72, 254)), 182); - assert_eq!(call!(xor_ui8(254, 72)), 182); - assert_eq!(call!(xor_ui8(72, 255)), 183); - assert_eq!(call!(xor_ui8(255, 72)), 183); - assert_eq!(call!(xor_ui8(100, 162)), 198); - assert_eq!(call!(xor_ui8(162, 100)), 198); - assert_eq!(call!(xor_ui8(72, 162)), 234); - assert_eq!(call!(xor_ui8(162, 72)), 234); - assert_eq!(call!(xor_ui8(4, 254)), 250); - assert_eq!(call!(xor_ui8(254, 4)), 250); - assert_eq!(call!(xor_ui8(4, 255)), 251); - assert_eq!(call!(xor_ui8(255, 4)), 251); - assert_eq!(call!(xor_ui8(2, 254)), 252); - assert_eq!(call!(xor_ui8(3, 255)), 252); - assert_eq!(call!(xor_ui8(254, 2)), 252); - assert_eq!(call!(xor_ui8(255, 3)), 252); - assert_eq!(call!(xor_ui8(2, 255)), 253); - assert_eq!(call!(xor_ui8(3, 254)), 253); - assert_eq!(call!(xor_ui8(254, 3)), 253); - assert_eq!(call!(xor_ui8(255, 2)), 253); - assert_eq!(call!(xor_ui8(0, 254)), 254); - assert_eq!(call!(xor_ui8(1, 255)), 254); - assert_eq!(call!(xor_ui8(254, 0)), 254); - assert_eq!(call!(xor_ui8(255, 1)), 254); - assert_eq!(call!(xor_ui8(0, 255)), 255); - assert_eq!(call!(xor_ui8(1, 254)), 255); - assert_eq!(call!(xor_ui8(254, 1)), 255); - assert_eq!(call!(xor_ui8(255, 0)), 255); - } + use crate::arctorustintbitops::*; + #[test] + fn it_works() { + assert_eq!(and_si16(-32768, -32768), -32768); + assert_eq!(and_si16(-32768, -32767), -32768); + assert_eq!(and_si16(-32768, -32547), -32768); + assert_eq!(and_si16(-32767, -32768), -32768); + assert_eq!(and_si16(-32547, -32768), -32768); + assert_eq!(and_si16(-32767, -32767), -32767); + assert_eq!(and_si16(-32767, -32547), -32767); + assert_eq!(and_si16(-32547, -32767), -32767); + assert_eq!(and_si16(-32547, -32547), -32547); + assert_eq!(and_si16(-32768, 0), 0); + assert_eq!(and_si16(-32768, 1), 0); + assert_eq!(and_si16(-32768, 2), 0); + assert_eq!(and_si16(-32768, 3), 0); + assert_eq!(and_si16(-32768, 4), 0); + assert_eq!(and_si16(-32768, 10486), 0); + assert_eq!(and_si16(-32768, 16514), 0); + assert_eq!(and_si16(-32768, 32766), 0); + assert_eq!(and_si16(-32768, 32767), 0); + assert_eq!(and_si16(-32767, 0), 0); + assert_eq!(and_si16(-32767, 2), 0); + assert_eq!(and_si16(-32767, 4), 0); + assert_eq!(and_si16(-32767, 10486), 0); + assert_eq!(and_si16(-32767, 16514), 0); + assert_eq!(and_si16(-32767, 32766), 0); + assert_eq!(and_si16(-32547, 0), 0); + assert_eq!(and_si16(-32547, 2), 0); + assert_eq!(and_si16(0, -32768), 0); + assert_eq!(and_si16(0, -32767), 0); + assert_eq!(and_si16(0, -32547), 0); + assert_eq!(and_si16(0, 0), 0); + assert_eq!(and_si16(0, 1), 0); + assert_eq!(and_si16(0, 2), 0); + assert_eq!(and_si16(0, 3), 0); + assert_eq!(and_si16(0, 4), 0); + assert_eq!(and_si16(0, 10486), 0); + assert_eq!(and_si16(0, 16514), 0); + assert_eq!(and_si16(0, 32766), 0); + assert_eq!(and_si16(0, 32767), 0); + assert_eq!(and_si16(1, -32768), 0); + assert_eq!(and_si16(1, 0), 0); + assert_eq!(and_si16(1, 2), 0); + assert_eq!(and_si16(1, 4), 0); + assert_eq!(and_si16(1, 10486), 0); + assert_eq!(and_si16(1, 16514), 0); + assert_eq!(and_si16(1, 32766), 0); + assert_eq!(and_si16(2, -32768), 0); + assert_eq!(and_si16(2, -32767), 0); + assert_eq!(and_si16(2, -32547), 0); + assert_eq!(and_si16(2, 0), 0); + assert_eq!(and_si16(2, 1), 0); + assert_eq!(and_si16(2, 4), 0); + assert_eq!(and_si16(3, -32768), 0); + assert_eq!(and_si16(3, 0), 0); + assert_eq!(and_si16(3, 4), 0); + assert_eq!(and_si16(4, -32768), 0); + assert_eq!(and_si16(4, -32767), 0); + assert_eq!(and_si16(4, 0), 0); + assert_eq!(and_si16(4, 1), 0); + assert_eq!(and_si16(4, 2), 0); + assert_eq!(and_si16(4, 3), 0); + assert_eq!(and_si16(4, 16514), 0); + assert_eq!(and_si16(10486, -32768), 0); + assert_eq!(and_si16(10486, -32767), 0); + assert_eq!(and_si16(10486, 0), 0); + assert_eq!(and_si16(10486, 1), 0); + assert_eq!(and_si16(16514, -32768), 0); + assert_eq!(and_si16(16514, -32767), 0); + assert_eq!(and_si16(16514, 0), 0); + assert_eq!(and_si16(16514, 1), 0); + assert_eq!(and_si16(16514, 4), 0); + assert_eq!(and_si16(32766, -32768), 0); + assert_eq!(and_si16(32766, -32767), 0); + assert_eq!(and_si16(32766, 0), 0); + assert_eq!(and_si16(32766, 1), 0); + assert_eq!(and_si16(32767, -32768), 0); + assert_eq!(and_si16(32767, 0), 0); + assert_eq!(and_si16(-32767, 1), 1); + assert_eq!(and_si16(-32767, 3), 1); + assert_eq!(and_si16(-32767, 32767), 1); + assert_eq!(and_si16(-32547, 1), 1); + assert_eq!(and_si16(-32547, 3), 1); + assert_eq!(and_si16(1, -32767), 1); + assert_eq!(and_si16(1, -32547), 1); + assert_eq!(and_si16(1, 1), 1); + assert_eq!(and_si16(1, 3), 1); + assert_eq!(and_si16(1, 32767), 1); + assert_eq!(and_si16(3, -32767), 1); + assert_eq!(and_si16(3, -32547), 1); + assert_eq!(and_si16(3, 1), 1); + assert_eq!(and_si16(32767, -32767), 1); + assert_eq!(and_si16(32767, 1), 1); + assert_eq!(and_si16(2, 2), 2); + assert_eq!(and_si16(2, 3), 2); + assert_eq!(and_si16(2, 10486), 2); + assert_eq!(and_si16(2, 16514), 2); + assert_eq!(and_si16(2, 32766), 2); + assert_eq!(and_si16(2, 32767), 2); + assert_eq!(and_si16(3, 2), 2); + assert_eq!(and_si16(3, 10486), 2); + assert_eq!(and_si16(3, 16514), 2); + assert_eq!(and_si16(3, 32766), 2); + assert_eq!(and_si16(10486, 2), 2); + assert_eq!(and_si16(10486, 3), 2); + assert_eq!(and_si16(16514, 2), 2); + assert_eq!(and_si16(16514, 3), 2); + assert_eq!(and_si16(32766, 2), 2); + assert_eq!(and_si16(32766, 3), 2); + assert_eq!(and_si16(32767, 2), 2); + assert_eq!(and_si16(3, 3), 3); + assert_eq!(and_si16(3, 32767), 3); + assert_eq!(and_si16(32767, 3), 3); + assert_eq!(and_si16(-32547, 4), 4); + assert_eq!(and_si16(4, -32547), 4); + assert_eq!(and_si16(4, 4), 4); + assert_eq!(and_si16(4, 10486), 4); + assert_eq!(and_si16(4, 32766), 4); + assert_eq!(and_si16(4, 32767), 4); + assert_eq!(and_si16(10486, 4), 4); + assert_eq!(and_si16(32766, 4), 4); + assert_eq!(and_si16(32767, 4), 4); + assert_eq!(and_si16(-32547, 16514), 128); + assert_eq!(and_si16(16514, -32547), 128); + assert_eq!(and_si16(10486, 16514), 130); + assert_eq!(and_si16(16514, 10486), 130); + assert_eq!(and_si16(-32547, 10486), 212); + assert_eq!(and_si16(10486, -32547), 212); + assert_eq!(and_si16(-32547, 32766), 220); + assert_eq!(and_si16(32766, -32547), 220); + assert_eq!(and_si16(-32547, 32767), 221); + assert_eq!(and_si16(32767, -32547), 221); + assert_eq!(and_si16(10486, 10486), 10486); + assert_eq!(and_si16(10486, 32766), 10486); + assert_eq!(and_si16(10486, 32767), 10486); + assert_eq!(and_si16(32766, 10486), 10486); + assert_eq!(and_si16(32767, 10486), 10486); + assert_eq!(and_si16(16514, 16514), 16514); + assert_eq!(and_si16(16514, 32766), 16514); + assert_eq!(and_si16(16514, 32767), 16514); + assert_eq!(and_si16(32766, 16514), 16514); + assert_eq!(and_si16(32767, 16514), 16514); + assert_eq!(and_si16(32766, 32766), 32766); + assert_eq!(and_si16(32766, 32767), 32766); + assert_eq!(and_si16(32767, 32766), 32766); + assert_eq!(and_si16(32767, 32767), 32767); + assert_eq!(and_si32(-2147483648, -2147483648), -2147483648); + assert_eq!(and_si32(-2147483648, -2147483647), -2147483648); + assert_eq!(and_si32(-2147483648, -1713183800), -2147483648); + assert_eq!(and_si32(-2147483648, -1252582164), -2147483648); + assert_eq!(and_si32(-2147483648, -1035405763), -2147483648); + assert_eq!(and_si32(-2147483647, -2147483648), -2147483648); + assert_eq!(and_si32(-2147483647, -1713183800), -2147483648); + assert_eq!(and_si32(-2147483647, -1252582164), -2147483648); + assert_eq!(and_si32(-1713183800, -2147483648), -2147483648); + assert_eq!(and_si32(-1713183800, -2147483647), -2147483648); + assert_eq!(and_si32(-1252582164, -2147483648), -2147483648); + assert_eq!(and_si32(-1252582164, -2147483647), -2147483648); + assert_eq!(and_si32(-1035405763, -2147483648), -2147483648); + assert_eq!(and_si32(-2147483647, -2147483647), -2147483647); + assert_eq!(and_si32(-2147483647, -1035405763), -2147483647); + assert_eq!(and_si32(-1035405763, -2147483647), -2147483647); + assert_eq!(and_si32(-1252582164, -1035405763), -2143284180); + assert_eq!(and_si32(-1035405763, -1252582164), -2143284180); + assert_eq!(and_si32(-1713183800, -1035405763), -2143231480); + assert_eq!(and_si32(-1035405763, -1713183800), -2143231480); + assert_eq!(and_si32(-1713183800, -1252582164), -1857945400); + assert_eq!(and_si32(-1252582164, -1713183800), -1857945400); + assert_eq!(and_si32(-1713183800, -1713183800), -1713183800); + assert_eq!(and_si32(-1252582164, -1252582164), -1252582164); + assert_eq!(and_si32(-1035405763, -1035405763), -1035405763); + assert_eq!(and_si32(-2147483648, 0), 0); + assert_eq!(and_si32(-2147483648, 1), 0); + assert_eq!(and_si32(-2147483648, 2), 0); + assert_eq!(and_si32(-2147483648, 3), 0); + assert_eq!(and_si32(-2147483648, 4), 0); + assert_eq!(and_si32(-2147483648, 2147483646), 0); + assert_eq!(and_si32(-2147483648, 2147483647), 0); + assert_eq!(and_si32(-2147483647, 0), 0); + assert_eq!(and_si32(-2147483647, 2), 0); + assert_eq!(and_si32(-2147483647, 4), 0); + assert_eq!(and_si32(-2147483647, 2147483646), 0); + assert_eq!(and_si32(-1713183800, 0), 0); + assert_eq!(and_si32(-1713183800, 1), 0); + assert_eq!(and_si32(-1713183800, 2), 0); + assert_eq!(and_si32(-1713183800, 3), 0); + assert_eq!(and_si32(-1713183800, 4), 0); + assert_eq!(and_si32(-1252582164, 0), 0); + assert_eq!(and_si32(-1252582164, 1), 0); + assert_eq!(and_si32(-1252582164, 2), 0); + assert_eq!(and_si32(-1252582164, 3), 0); + assert_eq!(and_si32(-1035405763, 0), 0); + assert_eq!(and_si32(-1035405763, 2), 0); + assert_eq!(and_si32(0, -2147483648), 0); + assert_eq!(and_si32(0, -2147483647), 0); + assert_eq!(and_si32(0, -1713183800), 0); + assert_eq!(and_si32(0, -1252582164), 0); + assert_eq!(and_si32(0, -1035405763), 0); + assert_eq!(and_si32(0, 0), 0); + assert_eq!(and_si32(0, 1), 0); + assert_eq!(and_si32(0, 2), 0); + assert_eq!(and_si32(0, 3), 0); + assert_eq!(and_si32(0, 4), 0); + assert_eq!(and_si32(0, 2147483646), 0); + assert_eq!(and_si32(0, 2147483647), 0); + assert_eq!(and_si32(1, -2147483648), 0); + assert_eq!(and_si32(1, -1713183800), 0); + assert_eq!(and_si32(1, -1252582164), 0); + assert_eq!(and_si32(1, 0), 0); + assert_eq!(and_si32(1, 2), 0); + assert_eq!(and_si32(1, 4), 0); + assert_eq!(and_si32(1, 2147483646), 0); + assert_eq!(and_si32(2, -2147483648), 0); + assert_eq!(and_si32(2, -2147483647), 0); + assert_eq!(and_si32(2, -1713183800), 0); + assert_eq!(and_si32(2, -1252582164), 0); + assert_eq!(and_si32(2, -1035405763), 0); + assert_eq!(and_si32(2, 0), 0); + assert_eq!(and_si32(2, 1), 0); + assert_eq!(and_si32(2, 4), 0); + assert_eq!(and_si32(3, -2147483648), 0); + assert_eq!(and_si32(3, -1713183800), 0); + assert_eq!(and_si32(3, -1252582164), 0); + assert_eq!(and_si32(3, 0), 0); + assert_eq!(and_si32(3, 4), 0); + assert_eq!(and_si32(4, -2147483648), 0); + assert_eq!(and_si32(4, -2147483647), 0); + assert_eq!(and_si32(4, -1713183800), 0); + assert_eq!(and_si32(4, 0), 0); + assert_eq!(and_si32(4, 1), 0); + assert_eq!(and_si32(4, 2), 0); + assert_eq!(and_si32(4, 3), 0); + assert_eq!(and_si32(2147483646, -2147483648), 0); + assert_eq!(and_si32(2147483646, -2147483647), 0); + assert_eq!(and_si32(2147483646, 0), 0); + assert_eq!(and_si32(2147483646, 1), 0); + assert_eq!(and_si32(2147483647, -2147483648), 0); + assert_eq!(and_si32(2147483647, 0), 0); + assert_eq!(and_si32(-2147483647, 1), 1); + assert_eq!(and_si32(-2147483647, 3), 1); + assert_eq!(and_si32(-2147483647, 2147483647), 1); + assert_eq!(and_si32(-1035405763, 1), 1); + assert_eq!(and_si32(-1035405763, 3), 1); + assert_eq!(and_si32(1, -2147483647), 1); + assert_eq!(and_si32(1, -1035405763), 1); + assert_eq!(and_si32(1, 1), 1); + assert_eq!(and_si32(1, 3), 1); + assert_eq!(and_si32(1, 2147483647), 1); + assert_eq!(and_si32(3, -2147483647), 1); + assert_eq!(and_si32(3, -1035405763), 1); + assert_eq!(and_si32(3, 1), 1); + assert_eq!(and_si32(2147483647, -2147483647), 1); + assert_eq!(and_si32(2147483647, 1), 1); + assert_eq!(and_si32(2, 2), 2); + assert_eq!(and_si32(2, 3), 2); + assert_eq!(and_si32(2, 2147483646), 2); + assert_eq!(and_si32(2, 2147483647), 2); + assert_eq!(and_si32(3, 2), 2); + assert_eq!(and_si32(3, 2147483646), 2); + assert_eq!(and_si32(2147483646, 2), 2); + assert_eq!(and_si32(2147483646, 3), 2); + assert_eq!(and_si32(2147483647, 2), 2); + assert_eq!(and_si32(3, 3), 3); + assert_eq!(and_si32(3, 2147483647), 3); + assert_eq!(and_si32(2147483647, 3), 3); + assert_eq!(and_si32(-1252582164, 4), 4); + assert_eq!(and_si32(-1035405763, 4), 4); + assert_eq!(and_si32(4, -1252582164), 4); + assert_eq!(and_si32(4, -1035405763), 4); + assert_eq!(and_si32(4, 4), 4); + assert_eq!(and_si32(4, 2147483646), 4); + assert_eq!(and_si32(4, 2147483647), 4); + assert_eq!(and_si32(2147483646, 4), 4); + assert_eq!(and_si32(2147483647, 4), 4); + assert_eq!(and_si32(-1713183800, 2147483646), 434299848); + assert_eq!(and_si32(-1713183800, 2147483647), 434299848); + assert_eq!(and_si32(2147483646, -1713183800), 434299848); + assert_eq!(and_si32(2147483647, -1713183800), 434299848); + assert_eq!(and_si32(-1252582164, 2147483646), 894901484); + assert_eq!(and_si32(-1252582164, 2147483647), 894901484); + assert_eq!(and_si32(2147483646, -1252582164), 894901484); + assert_eq!(and_si32(2147483647, -1252582164), 894901484); + assert_eq!(and_si32(-1035405763, 2147483646), 1112077884); + assert_eq!(and_si32(2147483646, -1035405763), 1112077884); + assert_eq!(and_si32(-1035405763, 2147483647), 1112077885); + assert_eq!(and_si32(2147483647, -1035405763), 1112077885); + assert_eq!(and_si32(2147483646, 2147483646), 2147483646); + assert_eq!(and_si32(2147483646, 2147483647), 2147483646); + assert_eq!(and_si32(2147483647, 2147483646), 2147483646); + assert_eq!(and_si32(2147483647, 2147483647), 2147483647); + assert_eq!( + and_si64(-9223372036854775808, -9223372036854775808), + -9223372036854775808 + ); + assert_eq!( + and_si64(-9223372036854775808, -9223372036854775807), + -9223372036854775808 + ); + assert_eq!( + and_si64(-9223372036854775808, -1741927215160008704), + -9223372036854775808 + ); + assert_eq!( + and_si64(-9223372036854775808, -1328271339354574848), + -9223372036854775808 + ); + assert_eq!( + and_si64(-9223372036854775807, -9223372036854775808), + -9223372036854775808 + ); + assert_eq!( + and_si64(-9223372036854775807, -1741927215160008704), + -9223372036854775808 + ); + assert_eq!( + and_si64(-9223372036854775807, -1328271339354574848), + -9223372036854775808 + ); + assert_eq!( + and_si64(-1741927215160008704, -9223372036854775808), + -9223372036854775808 + ); + assert_eq!( + and_si64(-1741927215160008704, -9223372036854775807), + -9223372036854775808 + ); + assert_eq!( + and_si64(-1328271339354574848, -9223372036854775808), + -9223372036854775808 + ); + assert_eq!( + and_si64(-1328271339354574848, -9223372036854775807), + -9223372036854775808 + ); + assert_eq!( + and_si64(-9223372036854775807, -9223372036854775807), + -9223372036854775807 + ); + assert_eq!( + and_si64(-1741927215160008704, -1328271339354574848), + -1904732091996692480 + ); + assert_eq!( + and_si64(-1328271339354574848, -1741927215160008704), + -1904732091996692480 + ); + assert_eq!( + and_si64(-1741927215160008704, -1741927215160008704), + -1741927215160008704 + ); + assert_eq!( + and_si64(-1328271339354574848, -1328271339354574848), + -1328271339354574848 + ); + assert_eq!(and_si64(-9223372036854775808, 0), 0); + assert_eq!(and_si64(-9223372036854775808, 1), 0); + assert_eq!(and_si64(-9223372036854775808, 2), 0); + assert_eq!(and_si64(-9223372036854775808, 3), 0); + assert_eq!(and_si64(-9223372036854775808, 4), 0); + assert_eq!(and_si64(-9223372036854775808, 5577148965131116544), 0); + assert_eq!(and_si64(-9223372036854775808, 9223372036854775806), 0); + assert_eq!(and_si64(-9223372036854775808, 9223372036854775807), 0); + assert_eq!(and_si64(-9223372036854775807, 0), 0); + assert_eq!(and_si64(-9223372036854775807, 2), 0); + assert_eq!(and_si64(-9223372036854775807, 4), 0); + assert_eq!(and_si64(-9223372036854775807, 5577148965131116544), 0); + assert_eq!(and_si64(-9223372036854775807, 9223372036854775806), 0); + assert_eq!(and_si64(-1741927215160008704, 0), 0); + assert_eq!(and_si64(-1741927215160008704, 1), 0); + assert_eq!(and_si64(-1741927215160008704, 2), 0); + assert_eq!(and_si64(-1741927215160008704, 3), 0); + assert_eq!(and_si64(-1741927215160008704, 4), 0); + assert_eq!(and_si64(-1328271339354574848, 0), 0); + assert_eq!(and_si64(-1328271339354574848, 1), 0); + assert_eq!(and_si64(-1328271339354574848, 2), 0); + assert_eq!(and_si64(-1328271339354574848, 3), 0); + assert_eq!(and_si64(-1328271339354574848, 4), 0); + assert_eq!(and_si64(0, -9223372036854775808), 0); + assert_eq!(and_si64(0, -9223372036854775807), 0); + assert_eq!(and_si64(0, -1741927215160008704), 0); + assert_eq!(and_si64(0, -1328271339354574848), 0); + assert_eq!(and_si64(0, 0), 0); + assert_eq!(and_si64(0, 1), 0); + assert_eq!(and_si64(0, 2), 0); + assert_eq!(and_si64(0, 3), 0); + assert_eq!(and_si64(0, 4), 0); + assert_eq!(and_si64(0, 5577148965131116544), 0); + assert_eq!(and_si64(0, 9223372036854775806), 0); + assert_eq!(and_si64(0, 9223372036854775807), 0); + assert_eq!(and_si64(1, -9223372036854775808), 0); + assert_eq!(and_si64(1, -1741927215160008704), 0); + assert_eq!(and_si64(1, -1328271339354574848), 0); + assert_eq!(and_si64(1, 0), 0); + assert_eq!(and_si64(1, 2), 0); + assert_eq!(and_si64(1, 4), 0); + assert_eq!(and_si64(1, 5577148965131116544), 0); + assert_eq!(and_si64(1, 9223372036854775806), 0); + assert_eq!(and_si64(2, -9223372036854775808), 0); + assert_eq!(and_si64(2, -9223372036854775807), 0); + assert_eq!(and_si64(2, -1741927215160008704), 0); + assert_eq!(and_si64(2, -1328271339354574848), 0); + assert_eq!(and_si64(2, 0), 0); + assert_eq!(and_si64(2, 1), 0); + assert_eq!(and_si64(2, 4), 0); + assert_eq!(and_si64(2, 5577148965131116544), 0); + assert_eq!(and_si64(3, -9223372036854775808), 0); + assert_eq!(and_si64(3, -1741927215160008704), 0); + assert_eq!(and_si64(3, -1328271339354574848), 0); + assert_eq!(and_si64(3, 0), 0); + assert_eq!(and_si64(3, 4), 0); + assert_eq!(and_si64(3, 5577148965131116544), 0); + assert_eq!(and_si64(4, -9223372036854775808), 0); + assert_eq!(and_si64(4, -9223372036854775807), 0); + assert_eq!(and_si64(4, -1741927215160008704), 0); + assert_eq!(and_si64(4, -1328271339354574848), 0); + assert_eq!(and_si64(4, 0), 0); + assert_eq!(and_si64(4, 1), 0); + assert_eq!(and_si64(4, 2), 0); + assert_eq!(and_si64(4, 3), 0); + assert_eq!(and_si64(4, 5577148965131116544), 0); + assert_eq!(and_si64(5577148965131116544, -9223372036854775808), 0); + assert_eq!(and_si64(5577148965131116544, -9223372036854775807), 0); + assert_eq!(and_si64(5577148965131116544, 0), 0); + assert_eq!(and_si64(5577148965131116544, 1), 0); + assert_eq!(and_si64(5577148965131116544, 2), 0); + assert_eq!(and_si64(5577148965131116544, 3), 0); + assert_eq!(and_si64(5577148965131116544, 4), 0); + assert_eq!(and_si64(9223372036854775806, -9223372036854775808), 0); + assert_eq!(and_si64(9223372036854775806, -9223372036854775807), 0); + assert_eq!(and_si64(9223372036854775806, 0), 0); + assert_eq!(and_si64(9223372036854775806, 1), 0); + assert_eq!(and_si64(9223372036854775807, -9223372036854775808), 0); + assert_eq!(and_si64(9223372036854775807, 0), 0); + assert_eq!(and_si64(-9223372036854775807, 1), 1); + assert_eq!(and_si64(-9223372036854775807, 3), 1); + assert_eq!(and_si64(-9223372036854775807, 9223372036854775807), 1); + assert_eq!(and_si64(1, -9223372036854775807), 1); + assert_eq!(and_si64(1, 1), 1); + assert_eq!(and_si64(1, 3), 1); + assert_eq!(and_si64(1, 9223372036854775807), 1); + assert_eq!(and_si64(3, -9223372036854775807), 1); + assert_eq!(and_si64(3, 1), 1); + assert_eq!(and_si64(9223372036854775807, -9223372036854775807), 1); + assert_eq!(and_si64(9223372036854775807, 1), 1); + assert_eq!(and_si64(2, 2), 2); + assert_eq!(and_si64(2, 3), 2); + assert_eq!(and_si64(2, 9223372036854775806), 2); + assert_eq!(and_si64(2, 9223372036854775807), 2); + assert_eq!(and_si64(3, 2), 2); + assert_eq!(and_si64(3, 9223372036854775806), 2); + assert_eq!(and_si64(9223372036854775806, 2), 2); + assert_eq!(and_si64(9223372036854775806, 3), 2); + assert_eq!(and_si64(9223372036854775807, 2), 2); + assert_eq!(and_si64(3, 3), 3); + assert_eq!(and_si64(3, 9223372036854775807), 3); + assert_eq!(and_si64(9223372036854775807, 3), 3); + assert_eq!(and_si64(4, 4), 4); + assert_eq!(and_si64(4, 9223372036854775806), 4); + assert_eq!(and_si64(4, 9223372036854775807), 4); + assert_eq!(and_si64(9223372036854775806, 4), 4); + assert_eq!(and_si64(9223372036854775807, 4), 4); + assert_eq!( + and_si64(-1741927215160008704, 5577148965131116544), + 4990554005496225792 + ); + assert_eq!( + and_si64(5577148965131116544, -1741927215160008704), + 4990554005496225792 + ); + assert_eq!( + and_si64(-1328271339354574848, 5577148965131116544), + 5548435020295708672 + ); + assert_eq!( + and_si64(5577148965131116544, -1328271339354574848), + 5548435020295708672 + ); + assert_eq!( + and_si64(5577148965131116544, 5577148965131116544), + 5577148965131116544 + ); + assert_eq!( + and_si64(5577148965131116544, 9223372036854775806), + 5577148965131116544 + ); + assert_eq!( + and_si64(5577148965131116544, 9223372036854775807), + 5577148965131116544 + ); + assert_eq!( + and_si64(9223372036854775806, 5577148965131116544), + 5577148965131116544 + ); + assert_eq!( + and_si64(9223372036854775807, 5577148965131116544), + 5577148965131116544 + ); + assert_eq!( + and_si64(-1741927215160008704, 9223372036854775806), + 7481444821694767104 + ); + assert_eq!( + and_si64(-1741927215160008704, 9223372036854775807), + 7481444821694767104 + ); + assert_eq!( + and_si64(9223372036854775806, -1741927215160008704), + 7481444821694767104 + ); + assert_eq!( + and_si64(9223372036854775807, -1741927215160008704), + 7481444821694767104 + ); + assert_eq!( + and_si64(-1328271339354574848, 9223372036854775806), + 7895100697500200960 + ); + assert_eq!( + and_si64(-1328271339354574848, 9223372036854775807), + 7895100697500200960 + ); + assert_eq!( + and_si64(9223372036854775806, -1328271339354574848), + 7895100697500200960 + ); + assert_eq!( + and_si64(9223372036854775807, -1328271339354574848), + 7895100697500200960 + ); + assert_eq!( + and_si64(9223372036854775806, 9223372036854775806), + 9223372036854775806 + ); + assert_eq!( + and_si64(9223372036854775806, 9223372036854775807), + 9223372036854775806 + ); + assert_eq!( + and_si64(9223372036854775807, 9223372036854775806), + 9223372036854775806 + ); + assert_eq!( + and_si64(9223372036854775807, 9223372036854775807), + 9223372036854775807 + ); + assert_eq!(and_si8(-128, -128), -128); + assert_eq!(and_si8(-128, -127), -128); + assert_eq!(and_si8(-127, -128), -128); + assert_eq!(and_si8(-127, -127), -127); + assert_eq!(and_si8(-128, 0), 0); + assert_eq!(and_si8(-128, 1), 0); + assert_eq!(and_si8(-128, 2), 0); + assert_eq!(and_si8(-128, 3), 0); + assert_eq!(and_si8(-128, 4), 0); + assert_eq!(and_si8(-128, 16), 0); + assert_eq!(and_si8(-128, 126), 0); + assert_eq!(and_si8(-128, 127), 0); + assert_eq!(and_si8(-127, 0), 0); + assert_eq!(and_si8(-127, 2), 0); + assert_eq!(and_si8(-127, 4), 0); + assert_eq!(and_si8(-127, 16), 0); + assert_eq!(and_si8(-127, 126), 0); + assert_eq!(and_si8(0, -128), 0); + assert_eq!(and_si8(0, -127), 0); + assert_eq!(and_si8(0, 0), 0); + assert_eq!(and_si8(0, 1), 0); + assert_eq!(and_si8(0, 2), 0); + assert_eq!(and_si8(0, 3), 0); + assert_eq!(and_si8(0, 4), 0); + assert_eq!(and_si8(0, 16), 0); + assert_eq!(and_si8(0, 126), 0); + assert_eq!(and_si8(0, 127), 0); + assert_eq!(and_si8(1, -128), 0); + assert_eq!(and_si8(1, 0), 0); + assert_eq!(and_si8(1, 2), 0); + assert_eq!(and_si8(1, 4), 0); + assert_eq!(and_si8(1, 16), 0); + assert_eq!(and_si8(1, 126), 0); + assert_eq!(and_si8(2, -128), 0); + assert_eq!(and_si8(2, -127), 0); + assert_eq!(and_si8(2, 0), 0); + assert_eq!(and_si8(2, 1), 0); + assert_eq!(and_si8(2, 4), 0); + assert_eq!(and_si8(2, 16), 0); + assert_eq!(and_si8(3, -128), 0); + assert_eq!(and_si8(3, 0), 0); + assert_eq!(and_si8(3, 4), 0); + assert_eq!(and_si8(3, 16), 0); + assert_eq!(and_si8(4, -128), 0); + assert_eq!(and_si8(4, -127), 0); + assert_eq!(and_si8(4, 0), 0); + assert_eq!(and_si8(4, 1), 0); + assert_eq!(and_si8(4, 2), 0); + assert_eq!(and_si8(4, 3), 0); + assert_eq!(and_si8(4, 16), 0); + assert_eq!(and_si8(16, -128), 0); + assert_eq!(and_si8(16, -127), 0); + assert_eq!(and_si8(16, 0), 0); + assert_eq!(and_si8(16, 1), 0); + assert_eq!(and_si8(16, 2), 0); + assert_eq!(and_si8(16, 3), 0); + assert_eq!(and_si8(16, 4), 0); + assert_eq!(and_si8(126, -128), 0); + assert_eq!(and_si8(126, -127), 0); + assert_eq!(and_si8(126, 0), 0); + assert_eq!(and_si8(126, 1), 0); + assert_eq!(and_si8(127, -128), 0); + assert_eq!(and_si8(127, 0), 0); + assert_eq!(and_si8(-127, 1), 1); + assert_eq!(and_si8(-127, 3), 1); + assert_eq!(and_si8(-127, 127), 1); + assert_eq!(and_si8(1, -127), 1); + assert_eq!(and_si8(1, 1), 1); + assert_eq!(and_si8(1, 3), 1); + assert_eq!(and_si8(1, 127), 1); + assert_eq!(and_si8(3, -127), 1); + assert_eq!(and_si8(3, 1), 1); + assert_eq!(and_si8(127, -127), 1); + assert_eq!(and_si8(127, 1), 1); + assert_eq!(and_si8(2, 2), 2); + assert_eq!(and_si8(2, 3), 2); + assert_eq!(and_si8(2, 126), 2); + assert_eq!(and_si8(2, 127), 2); + assert_eq!(and_si8(3, 2), 2); + assert_eq!(and_si8(3, 126), 2); + assert_eq!(and_si8(126, 2), 2); + assert_eq!(and_si8(126, 3), 2); + assert_eq!(and_si8(127, 2), 2); + assert_eq!(and_si8(3, 3), 3); + assert_eq!(and_si8(3, 127), 3); + assert_eq!(and_si8(127, 3), 3); + assert_eq!(and_si8(4, 4), 4); + assert_eq!(and_si8(4, 126), 4); + assert_eq!(and_si8(4, 127), 4); + assert_eq!(and_si8(126, 4), 4); + assert_eq!(and_si8(127, 4), 4); + assert_eq!(and_si8(16, 16), 16); + assert_eq!(and_si8(16, 126), 16); + assert_eq!(and_si8(16, 127), 16); + assert_eq!(and_si8(126, 16), 16); + assert_eq!(and_si8(127, 16), 16); + assert_eq!(and_si8(126, 126), 126); + assert_eq!(and_si8(126, 127), 126); + assert_eq!(and_si8(127, 126), 126); + assert_eq!(and_si8(127, 127), 127); + assert_eq!(and_ui16(0, 0), 0); + assert_eq!(and_ui16(0, 1), 0); + assert_eq!(and_ui16(0, 2), 0); + assert_eq!(and_ui16(0, 3), 0); + assert_eq!(and_ui16(0, 4), 0); + assert_eq!(and_ui16(0, 1717), 0); + assert_eq!(and_ui16(0, 17988), 0); + assert_eq!(and_ui16(0, 65096), 0); + assert_eq!(and_ui16(0, 65534), 0); + assert_eq!(and_ui16(0, 65535), 0); + assert_eq!(and_ui16(1, 0), 0); + assert_eq!(and_ui16(1, 2), 0); + assert_eq!(and_ui16(1, 4), 0); + assert_eq!(and_ui16(1, 17988), 0); + assert_eq!(and_ui16(1, 65096), 0); + assert_eq!(and_ui16(1, 65534), 0); + assert_eq!(and_ui16(2, 0), 0); + assert_eq!(and_ui16(2, 1), 0); + assert_eq!(and_ui16(2, 4), 0); + assert_eq!(and_ui16(2, 1717), 0); + assert_eq!(and_ui16(2, 17988), 0); + assert_eq!(and_ui16(2, 65096), 0); + assert_eq!(and_ui16(3, 0), 0); + assert_eq!(and_ui16(3, 4), 0); + assert_eq!(and_ui16(3, 17988), 0); + assert_eq!(and_ui16(3, 65096), 0); + assert_eq!(and_ui16(4, 0), 0); + assert_eq!(and_ui16(4, 1), 0); + assert_eq!(and_ui16(4, 2), 0); + assert_eq!(and_ui16(4, 3), 0); + assert_eq!(and_ui16(4, 65096), 0); + assert_eq!(and_ui16(1717, 0), 0); + assert_eq!(and_ui16(1717, 2), 0); + assert_eq!(and_ui16(17988, 0), 0); + assert_eq!(and_ui16(17988, 1), 0); + assert_eq!(and_ui16(17988, 2), 0); + assert_eq!(and_ui16(17988, 3), 0); + assert_eq!(and_ui16(65096, 0), 0); + assert_eq!(and_ui16(65096, 1), 0); + assert_eq!(and_ui16(65096, 2), 0); + assert_eq!(and_ui16(65096, 3), 0); + assert_eq!(and_ui16(65096, 4), 0); + assert_eq!(and_ui16(65534, 0), 0); + assert_eq!(and_ui16(65534, 1), 0); + assert_eq!(and_ui16(65535, 0), 0); + assert_eq!(and_ui16(1, 1), 1); + assert_eq!(and_ui16(1, 3), 1); + assert_eq!(and_ui16(1, 1717), 1); + assert_eq!(and_ui16(1, 65535), 1); + assert_eq!(and_ui16(3, 1), 1); + assert_eq!(and_ui16(3, 1717), 1); + assert_eq!(and_ui16(1717, 1), 1); + assert_eq!(and_ui16(1717, 3), 1); + assert_eq!(and_ui16(65535, 1), 1); + assert_eq!(and_ui16(2, 2), 2); + assert_eq!(and_ui16(2, 3), 2); + assert_eq!(and_ui16(2, 65534), 2); + assert_eq!(and_ui16(2, 65535), 2); + assert_eq!(and_ui16(3, 2), 2); + assert_eq!(and_ui16(3, 65534), 2); + assert_eq!(and_ui16(65534, 2), 2); + assert_eq!(and_ui16(65534, 3), 2); + assert_eq!(and_ui16(65535, 2), 2); + assert_eq!(and_ui16(3, 3), 3); + assert_eq!(and_ui16(3, 65535), 3); + assert_eq!(and_ui16(65535, 3), 3); + assert_eq!(and_ui16(4, 4), 4); + assert_eq!(and_ui16(4, 1717), 4); + assert_eq!(and_ui16(4, 17988), 4); + assert_eq!(and_ui16(4, 65534), 4); + assert_eq!(and_ui16(4, 65535), 4); + assert_eq!(and_ui16(1717, 4), 4); + assert_eq!(and_ui16(17988, 4), 4); + assert_eq!(and_ui16(65534, 4), 4); + assert_eq!(and_ui16(65535, 4), 4); + assert_eq!(and_ui16(1717, 65096), 1536); + assert_eq!(and_ui16(65096, 1717), 1536); + assert_eq!(and_ui16(1717, 17988), 1540); + assert_eq!(and_ui16(17988, 1717), 1540); + assert_eq!(and_ui16(1717, 65534), 1716); + assert_eq!(and_ui16(65534, 1717), 1716); + assert_eq!(and_ui16(1717, 1717), 1717); + assert_eq!(and_ui16(1717, 65535), 1717); + assert_eq!(and_ui16(65535, 1717), 1717); + assert_eq!(and_ui16(17988, 65096), 17984); + assert_eq!(and_ui16(65096, 17988), 17984); + assert_eq!(and_ui16(17988, 17988), 17988); + assert_eq!(and_ui16(17988, 65534), 17988); + assert_eq!(and_ui16(17988, 65535), 17988); + assert_eq!(and_ui16(65534, 17988), 17988); + assert_eq!(and_ui16(65535, 17988), 17988); + assert_eq!(and_ui16(65096, 65096), 65096); + assert_eq!(and_ui16(65096, 65534), 65096); + assert_eq!(and_ui16(65096, 65535), 65096); + assert_eq!(and_ui16(65534, 65096), 65096); + assert_eq!(and_ui16(65535, 65096), 65096); + assert_eq!(and_ui16(65534, 65534), 65534); + assert_eq!(and_ui16(65534, 65535), 65534); + assert_eq!(and_ui16(65535, 65534), 65534); + assert_eq!(and_ui16(65535, 65535), 65535); + assert_eq!(and_ui32(0, 0), 0); + assert_eq!(and_ui32(0, 1), 0); + assert_eq!(and_ui32(0, 2), 0); + assert_eq!(and_ui32(0, 3), 0); + assert_eq!(and_ui32(0, 4), 0); + assert_eq!(and_ui32(0, 2119154652), 0); + assert_eq!(and_ui32(0, 3002788344), 0); + assert_eq!(and_ui32(0, 3482297128), 0); + assert_eq!(and_ui32(0, 4294967294), 0); + assert_eq!(and_ui32(0, 4294967295), 0); + assert_eq!(and_ui32(1, 0), 0); + assert_eq!(and_ui32(1, 2), 0); + assert_eq!(and_ui32(1, 4), 0); + assert_eq!(and_ui32(1, 2119154652), 0); + assert_eq!(and_ui32(1, 3002788344), 0); + assert_eq!(and_ui32(1, 3482297128), 0); + assert_eq!(and_ui32(1, 4294967294), 0); + assert_eq!(and_ui32(2, 0), 0); + assert_eq!(and_ui32(2, 1), 0); + assert_eq!(and_ui32(2, 4), 0); + assert_eq!(and_ui32(2, 2119154652), 0); + assert_eq!(and_ui32(2, 3002788344), 0); + assert_eq!(and_ui32(2, 3482297128), 0); + assert_eq!(and_ui32(3, 0), 0); + assert_eq!(and_ui32(3, 4), 0); + assert_eq!(and_ui32(3, 2119154652), 0); + assert_eq!(and_ui32(3, 3002788344), 0); + assert_eq!(and_ui32(3, 3482297128), 0); + assert_eq!(and_ui32(4, 0), 0); + assert_eq!(and_ui32(4, 1), 0); + assert_eq!(and_ui32(4, 2), 0); + assert_eq!(and_ui32(4, 3), 0); + assert_eq!(and_ui32(4, 3002788344), 0); + assert_eq!(and_ui32(4, 3482297128), 0); + assert_eq!(and_ui32(2119154652, 0), 0); + assert_eq!(and_ui32(2119154652, 1), 0); + assert_eq!(and_ui32(2119154652, 2), 0); + assert_eq!(and_ui32(2119154652, 3), 0); + assert_eq!(and_ui32(3002788344, 0), 0); + assert_eq!(and_ui32(3002788344, 1), 0); + assert_eq!(and_ui32(3002788344, 2), 0); + assert_eq!(and_ui32(3002788344, 3), 0); + assert_eq!(and_ui32(3002788344, 4), 0); + assert_eq!(and_ui32(3482297128, 0), 0); + assert_eq!(and_ui32(3482297128, 1), 0); + assert_eq!(and_ui32(3482297128, 2), 0); + assert_eq!(and_ui32(3482297128, 3), 0); + assert_eq!(and_ui32(3482297128, 4), 0); + assert_eq!(and_ui32(4294967294, 0), 0); + assert_eq!(and_ui32(4294967294, 1), 0); + assert_eq!(and_ui32(4294967295, 0), 0); + assert_eq!(and_ui32(1, 1), 1); + assert_eq!(and_ui32(1, 3), 1); + assert_eq!(and_ui32(1, 4294967295), 1); + assert_eq!(and_ui32(3, 1), 1); + assert_eq!(and_ui32(4294967295, 1), 1); + assert_eq!(and_ui32(2, 2), 2); + assert_eq!(and_ui32(2, 3), 2); + assert_eq!(and_ui32(2, 4294967294), 2); + assert_eq!(and_ui32(2, 4294967295), 2); + assert_eq!(and_ui32(3, 2), 2); + assert_eq!(and_ui32(3, 4294967294), 2); + assert_eq!(and_ui32(4294967294, 2), 2); + assert_eq!(and_ui32(4294967294, 3), 2); + assert_eq!(and_ui32(4294967295, 2), 2); + assert_eq!(and_ui32(3, 3), 3); + assert_eq!(and_ui32(3, 4294967295), 3); + assert_eq!(and_ui32(4294967295, 3), 3); + assert_eq!(and_ui32(4, 4), 4); + assert_eq!(and_ui32(4, 2119154652), 4); + assert_eq!(and_ui32(4, 4294967294), 4); + assert_eq!(and_ui32(4, 4294967295), 4); + assert_eq!(and_ui32(2119154652, 4), 4); + assert_eq!(and_ui32(4294967294, 4), 4); + assert_eq!(and_ui32(4294967295, 4), 4); + assert_eq!(and_ui32(2119154652, 3002788344), 843753944); + assert_eq!(and_ui32(3002788344, 2119154652), 843753944); + assert_eq!(and_ui32(2119154652, 3482297128), 1309647624); + assert_eq!(and_ui32(3482297128, 2119154652), 1309647624); + assert_eq!(and_ui32(2119154652, 2119154652), 2119154652); + assert_eq!(and_ui32(2119154652, 4294967294), 2119154652); + assert_eq!(and_ui32(2119154652, 4294967295), 2119154652); + assert_eq!(and_ui32(4294967294, 2119154652), 2119154652); + assert_eq!(and_ui32(4294967295, 2119154652), 2119154652); + assert_eq!(and_ui32(3002788344, 3482297128), 2190123304); + assert_eq!(and_ui32(3482297128, 3002788344), 2190123304); + assert_eq!(and_ui32(3002788344, 3002788344), 3002788344); + assert_eq!(and_ui32(3002788344, 4294967294), 3002788344); + assert_eq!(and_ui32(3002788344, 4294967295), 3002788344); + assert_eq!(and_ui32(4294967294, 3002788344), 3002788344); + assert_eq!(and_ui32(4294967295, 3002788344), 3002788344); + assert_eq!(and_ui32(3482297128, 3482297128), 3482297128); + assert_eq!(and_ui32(3482297128, 4294967294), 3482297128); + assert_eq!(and_ui32(3482297128, 4294967295), 3482297128); + assert_eq!(and_ui32(4294967294, 3482297128), 3482297128); + assert_eq!(and_ui32(4294967295, 3482297128), 3482297128); + assert_eq!(and_ui32(4294967294, 4294967294), 4294967294); + assert_eq!(and_ui32(4294967294, 4294967295), 4294967294); + assert_eq!(and_ui32(4294967295, 4294967294), 4294967294); + assert_eq!(and_ui32(4294967295, 4294967295), 4294967295); + assert_eq!(and_ui64(0, 0), 0); + assert_eq!(and_ui64(0, 1), 0); + assert_eq!(and_ui64(0, 2), 0); + assert_eq!(and_ui64(0, 3), 0); + assert_eq!(and_ui64(0, 4), 0); + assert_eq!(and_ui64(0, 191084152064409600), 0); + assert_eq!(and_ui64(0, 11015955194427482112), 0); + assert_eq!(and_ui64(0, 16990600415051759616), 0); + assert_eq!(and_ui64(0, 18446744073709551614), 0); + assert_eq!(and_ui64(0, 18446744073709551615), 0); + assert_eq!(and_ui64(1, 0), 0); + assert_eq!(and_ui64(1, 2), 0); + assert_eq!(and_ui64(1, 4), 0); + assert_eq!(and_ui64(1, 191084152064409600), 0); + assert_eq!(and_ui64(1, 11015955194427482112), 0); + assert_eq!(and_ui64(1, 16990600415051759616), 0); + assert_eq!(and_ui64(1, 18446744073709551614), 0); + assert_eq!(and_ui64(2, 0), 0); + assert_eq!(and_ui64(2, 1), 0); + assert_eq!(and_ui64(2, 4), 0); + assert_eq!(and_ui64(2, 191084152064409600), 0); + assert_eq!(and_ui64(2, 11015955194427482112), 0); + assert_eq!(and_ui64(2, 16990600415051759616), 0); + assert_eq!(and_ui64(3, 0), 0); + assert_eq!(and_ui64(3, 4), 0); + assert_eq!(and_ui64(3, 191084152064409600), 0); + assert_eq!(and_ui64(3, 11015955194427482112), 0); + assert_eq!(and_ui64(3, 16990600415051759616), 0); + assert_eq!(and_ui64(4, 0), 0); + assert_eq!(and_ui64(4, 1), 0); + assert_eq!(and_ui64(4, 2), 0); + assert_eq!(and_ui64(4, 3), 0); + assert_eq!(and_ui64(4, 191084152064409600), 0); + assert_eq!(and_ui64(4, 11015955194427482112), 0); + assert_eq!(and_ui64(4, 16990600415051759616), 0); + assert_eq!(and_ui64(191084152064409600, 0), 0); + assert_eq!(and_ui64(191084152064409600, 1), 0); + assert_eq!(and_ui64(191084152064409600, 2), 0); + assert_eq!(and_ui64(191084152064409600, 3), 0); + assert_eq!(and_ui64(191084152064409600, 4), 0); + assert_eq!(and_ui64(11015955194427482112, 0), 0); + assert_eq!(and_ui64(11015955194427482112, 1), 0); + assert_eq!(and_ui64(11015955194427482112, 2), 0); + assert_eq!(and_ui64(11015955194427482112, 3), 0); + assert_eq!(and_ui64(11015955194427482112, 4), 0); + assert_eq!(and_ui64(16990600415051759616, 0), 0); + assert_eq!(and_ui64(16990600415051759616, 1), 0); + assert_eq!(and_ui64(16990600415051759616, 2), 0); + assert_eq!(and_ui64(16990600415051759616, 3), 0); + assert_eq!(and_ui64(16990600415051759616, 4), 0); + assert_eq!(and_ui64(18446744073709551614, 0), 0); + assert_eq!(and_ui64(18446744073709551614, 1), 0); + assert_eq!(and_ui64(18446744073709551615, 0), 0); + assert_eq!(and_ui64(1, 1), 1); + assert_eq!(and_ui64(1, 3), 1); + assert_eq!(and_ui64(1, 18446744073709551615), 1); + assert_eq!(and_ui64(3, 1), 1); + assert_eq!(and_ui64(18446744073709551615, 1), 1); + assert_eq!(and_ui64(2, 2), 2); + assert_eq!(and_ui64(2, 3), 2); + assert_eq!(and_ui64(2, 18446744073709551614), 2); + assert_eq!(and_ui64(2, 18446744073709551615), 2); + assert_eq!(and_ui64(3, 2), 2); + assert_eq!(and_ui64(3, 18446744073709551614), 2); + assert_eq!(and_ui64(18446744073709551614, 2), 2); + assert_eq!(and_ui64(18446744073709551614, 3), 2); + assert_eq!(and_ui64(18446744073709551615, 2), 2); + assert_eq!(and_ui64(3, 3), 3); + assert_eq!(and_ui64(3, 18446744073709551615), 3); + assert_eq!(and_ui64(18446744073709551615, 3), 3); + assert_eq!(and_ui64(4, 4), 4); + assert_eq!(and_ui64(4, 18446744073709551614), 4); + assert_eq!(and_ui64(4, 18446744073709551615), 4); + assert_eq!(and_ui64(18446744073709551614, 4), 4); + assert_eq!(and_ui64(18446744073709551615, 4), 4); + assert_eq!( + and_ui64(191084152064409600, 11015955194427482112), + 45185538445017088 + ); + assert_eq!( + and_ui64(11015955194427482112, 191084152064409600), + 45185538445017088 + ); + assert_eq!( + and_ui64(191084152064409600, 16990600415051759616), + 180878484934066176 + ); + assert_eq!( + and_ui64(16990600415051759616, 191084152064409600), + 180878484934066176 + ); + assert_eq!( + and_ui64(191084152064409600, 191084152064409600), + 191084152064409600 + ); + assert_eq!( + and_ui64(191084152064409600, 18446744073709551614), + 191084152064409600 + ); + assert_eq!( + and_ui64(191084152064409600, 18446744073709551615), + 191084152064409600 + ); + assert_eq!( + and_ui64(18446744073709551614, 191084152064409600), + 191084152064409600 + ); + assert_eq!( + and_ui64(18446744073709551615, 191084152064409600), + 191084152064409600 + ); + assert_eq!( + and_ui64(11015955194427482112, 16990600415051759616), + 9854025527415799808 + ); + assert_eq!( + and_ui64(16990600415051759616, 11015955194427482112), + 9854025527415799808 + ); + assert_eq!( + and_ui64(11015955194427482112, 11015955194427482112), + 11015955194427482112 + ); + assert_eq!( + and_ui64(11015955194427482112, 18446744073709551614), + 11015955194427482112 + ); + assert_eq!( + and_ui64(11015955194427482112, 18446744073709551615), + 11015955194427482112 + ); + assert_eq!( + and_ui64(18446744073709551614, 11015955194427482112), + 11015955194427482112 + ); + assert_eq!( + and_ui64(18446744073709551615, 11015955194427482112), + 11015955194427482112 + ); + assert_eq!( + and_ui64(16990600415051759616, 16990600415051759616), + 16990600415051759616 + ); + assert_eq!( + and_ui64(16990600415051759616, 18446744073709551614), + 16990600415051759616 + ); + assert_eq!( + and_ui64(16990600415051759616, 18446744073709551615), + 16990600415051759616 + ); + assert_eq!( + and_ui64(18446744073709551614, 16990600415051759616), + 16990600415051759616 + ); + assert_eq!( + and_ui64(18446744073709551615, 16990600415051759616), + 16990600415051759616 + ); + assert_eq!( + and_ui64(18446744073709551614, 18446744073709551614), + 18446744073709551614 + ); + assert_eq!( + and_ui64(18446744073709551614, 18446744073709551615), + 18446744073709551614 + ); + assert_eq!( + and_ui64(18446744073709551615, 18446744073709551614), + 18446744073709551614 + ); + assert_eq!( + and_ui64(18446744073709551615, 18446744073709551615), + 18446744073709551615 + ); + assert_eq!(and_ui8(0, 0), 0); + assert_eq!(and_ui8(0, 1), 0); + assert_eq!(and_ui8(0, 2), 0); + assert_eq!(and_ui8(0, 3), 0); + assert_eq!(and_ui8(0, 4), 0); + assert_eq!(and_ui8(0, 72), 0); + assert_eq!(and_ui8(0, 100), 0); + assert_eq!(and_ui8(0, 162), 0); + assert_eq!(and_ui8(0, 254), 0); + assert_eq!(and_ui8(0, 255), 0); + assert_eq!(and_ui8(1, 0), 0); + assert_eq!(and_ui8(1, 2), 0); + assert_eq!(and_ui8(1, 4), 0); + assert_eq!(and_ui8(1, 72), 0); + assert_eq!(and_ui8(1, 100), 0); + assert_eq!(and_ui8(1, 162), 0); + assert_eq!(and_ui8(1, 254), 0); + assert_eq!(and_ui8(2, 0), 0); + assert_eq!(and_ui8(2, 1), 0); + assert_eq!(and_ui8(2, 4), 0); + assert_eq!(and_ui8(2, 72), 0); + assert_eq!(and_ui8(2, 100), 0); + assert_eq!(and_ui8(3, 0), 0); + assert_eq!(and_ui8(3, 4), 0); + assert_eq!(and_ui8(3, 72), 0); + assert_eq!(and_ui8(3, 100), 0); + assert_eq!(and_ui8(4, 0), 0); + assert_eq!(and_ui8(4, 1), 0); + assert_eq!(and_ui8(4, 2), 0); + assert_eq!(and_ui8(4, 3), 0); + assert_eq!(and_ui8(4, 72), 0); + assert_eq!(and_ui8(4, 162), 0); + assert_eq!(and_ui8(72, 0), 0); + assert_eq!(and_ui8(72, 1), 0); + assert_eq!(and_ui8(72, 2), 0); + assert_eq!(and_ui8(72, 3), 0); + assert_eq!(and_ui8(72, 4), 0); + assert_eq!(and_ui8(72, 162), 0); + assert_eq!(and_ui8(100, 0), 0); + assert_eq!(and_ui8(100, 1), 0); + assert_eq!(and_ui8(100, 2), 0); + assert_eq!(and_ui8(100, 3), 0); + assert_eq!(and_ui8(162, 0), 0); + assert_eq!(and_ui8(162, 1), 0); + assert_eq!(and_ui8(162, 4), 0); + assert_eq!(and_ui8(162, 72), 0); + assert_eq!(and_ui8(254, 0), 0); + assert_eq!(and_ui8(254, 1), 0); + assert_eq!(and_ui8(255, 0), 0); + assert_eq!(and_ui8(1, 1), 1); + assert_eq!(and_ui8(1, 3), 1); + assert_eq!(and_ui8(1, 255), 1); + assert_eq!(and_ui8(3, 1), 1); + assert_eq!(and_ui8(255, 1), 1); + assert_eq!(and_ui8(2, 2), 2); + assert_eq!(and_ui8(2, 3), 2); + assert_eq!(and_ui8(2, 162), 2); + assert_eq!(and_ui8(2, 254), 2); + assert_eq!(and_ui8(2, 255), 2); + assert_eq!(and_ui8(3, 2), 2); + assert_eq!(and_ui8(3, 162), 2); + assert_eq!(and_ui8(3, 254), 2); + assert_eq!(and_ui8(162, 2), 2); + assert_eq!(and_ui8(162, 3), 2); + assert_eq!(and_ui8(254, 2), 2); + assert_eq!(and_ui8(254, 3), 2); + assert_eq!(and_ui8(255, 2), 2); + assert_eq!(and_ui8(3, 3), 3); + assert_eq!(and_ui8(3, 255), 3); + assert_eq!(and_ui8(255, 3), 3); + assert_eq!(and_ui8(4, 4), 4); + assert_eq!(and_ui8(4, 100), 4); + assert_eq!(and_ui8(4, 254), 4); + assert_eq!(and_ui8(4, 255), 4); + assert_eq!(and_ui8(100, 4), 4); + assert_eq!(and_ui8(254, 4), 4); + assert_eq!(and_ui8(255, 4), 4); + assert_eq!(and_ui8(100, 162), 32); + assert_eq!(and_ui8(162, 100), 32); + assert_eq!(and_ui8(72, 100), 64); + assert_eq!(and_ui8(100, 72), 64); + assert_eq!(and_ui8(72, 72), 72); + assert_eq!(and_ui8(72, 254), 72); + assert_eq!(and_ui8(72, 255), 72); + assert_eq!(and_ui8(254, 72), 72); + assert_eq!(and_ui8(255, 72), 72); + assert_eq!(and_ui8(100, 100), 100); + assert_eq!(and_ui8(100, 254), 100); + assert_eq!(and_ui8(100, 255), 100); + assert_eq!(and_ui8(254, 100), 100); + assert_eq!(and_ui8(255, 100), 100); + assert_eq!(and_ui8(162, 162), 162); + assert_eq!(and_ui8(162, 254), 162); + assert_eq!(and_ui8(162, 255), 162); + assert_eq!(and_ui8(254, 162), 162); + assert_eq!(and_ui8(255, 162), 162); + assert_eq!(and_ui8(254, 254), 254); + assert_eq!(and_ui8(254, 255), 254); + assert_eq!(and_ui8(255, 254), 254); + assert_eq!(and_ui8(255, 255), 255); + assert_eq!(or_si16(-32768, -32768), -32768); + assert_eq!(or_si16(-32768, 0), -32768); + assert_eq!(or_si16(0, -32768), -32768); + assert_eq!(or_si16(-32768, -32767), -32767); + assert_eq!(or_si16(-32768, 1), -32767); + assert_eq!(or_si16(-32767, -32768), -32767); + assert_eq!(or_si16(-32767, -32767), -32767); + assert_eq!(or_si16(-32767, 0), -32767); + assert_eq!(or_si16(-32767, 1), -32767); + assert_eq!(or_si16(0, -32767), -32767); + assert_eq!(or_si16(1, -32768), -32767); + assert_eq!(or_si16(1, -32767), -32767); + assert_eq!(or_si16(-32768, 2), -32766); + assert_eq!(or_si16(2, -32768), -32766); + assert_eq!(or_si16(-32768, 3), -32765); + assert_eq!(or_si16(-32767, 2), -32765); + assert_eq!(or_si16(-32767, 3), -32765); + assert_eq!(or_si16(2, -32767), -32765); + assert_eq!(or_si16(3, -32768), -32765); + assert_eq!(or_si16(3, -32767), -32765); + assert_eq!(or_si16(-32768, 4), -32764); + assert_eq!(or_si16(4, -32768), -32764); + assert_eq!(or_si16(-32767, 4), -32763); + assert_eq!(or_si16(4, -32767), -32763); + assert_eq!(or_si16(-32768, -32547), -32547); + assert_eq!(or_si16(-32767, -32547), -32547); + assert_eq!(or_si16(-32547, -32768), -32547); + assert_eq!(or_si16(-32547, -32767), -32547); + assert_eq!(or_si16(-32547, -32547), -32547); + assert_eq!(or_si16(-32547, 0), -32547); + assert_eq!(or_si16(-32547, 1), -32547); + assert_eq!(or_si16(-32547, 4), -32547); + assert_eq!(or_si16(0, -32547), -32547); + assert_eq!(or_si16(1, -32547), -32547); + assert_eq!(or_si16(4, -32547), -32547); + assert_eq!(or_si16(-32547, 2), -32545); + assert_eq!(or_si16(-32547, 3), -32545); + assert_eq!(or_si16(2, -32547), -32545); + assert_eq!(or_si16(3, -32547), -32545); + assert_eq!(or_si16(-32768, 10486), -22282); + assert_eq!(or_si16(10486, -32768), -22282); + assert_eq!(or_si16(-32767, 10486), -22281); + assert_eq!(or_si16(10486, -32767), -22281); + assert_eq!(or_si16(-32547, 10486), -22273); + assert_eq!(or_si16(10486, -32547), -22273); + assert_eq!(or_si16(-32768, 16514), -16254); + assert_eq!(or_si16(16514, -32768), -16254); + assert_eq!(or_si16(-32767, 16514), -16253); + assert_eq!(or_si16(16514, -32767), -16253); + assert_eq!(or_si16(-32547, 16514), -16161); + assert_eq!(or_si16(16514, -32547), -16161); + assert_eq!(or_si16(-32768, 32766), -2); + assert_eq!(or_si16(32766, -32768), -2); + assert_eq!(or_si16(-32768, 32767), -1); + assert_eq!(or_si16(-32767, 32766), -1); + assert_eq!(or_si16(-32767, 32767), -1); + assert_eq!(or_si16(-32547, 32766), -1); + assert_eq!(or_si16(-32547, 32767), -1); + assert_eq!(or_si16(32766, -32767), -1); + assert_eq!(or_si16(32766, -32547), -1); + assert_eq!(or_si16(32767, -32768), -1); + assert_eq!(or_si16(32767, -32767), -1); + assert_eq!(or_si16(32767, -32547), -1); + assert_eq!(or_si16(0, 0), 0); + assert_eq!(or_si16(0, 1), 1); + assert_eq!(or_si16(1, 0), 1); + assert_eq!(or_si16(1, 1), 1); + assert_eq!(or_si16(0, 2), 2); + assert_eq!(or_si16(2, 0), 2); + assert_eq!(or_si16(2, 2), 2); + assert_eq!(or_si16(0, 3), 3); + assert_eq!(or_si16(1, 2), 3); + assert_eq!(or_si16(1, 3), 3); + assert_eq!(or_si16(2, 1), 3); + assert_eq!(or_si16(2, 3), 3); + assert_eq!(or_si16(3, 0), 3); + assert_eq!(or_si16(3, 1), 3); + assert_eq!(or_si16(3, 2), 3); + assert_eq!(or_si16(3, 3), 3); + assert_eq!(or_si16(0, 4), 4); + assert_eq!(or_si16(4, 0), 4); + assert_eq!(or_si16(4, 4), 4); + assert_eq!(or_si16(1, 4), 5); + assert_eq!(or_si16(4, 1), 5); + assert_eq!(or_si16(2, 4), 6); + assert_eq!(or_si16(4, 2), 6); + assert_eq!(or_si16(3, 4), 7); + assert_eq!(or_si16(4, 3), 7); + assert_eq!(or_si16(0, 10486), 10486); + assert_eq!(or_si16(2, 10486), 10486); + assert_eq!(or_si16(4, 10486), 10486); + assert_eq!(or_si16(10486, 0), 10486); + assert_eq!(or_si16(10486, 2), 10486); + assert_eq!(or_si16(10486, 4), 10486); + assert_eq!(or_si16(10486, 10486), 10486); + assert_eq!(or_si16(1, 10486), 10487); + assert_eq!(or_si16(3, 10486), 10487); + assert_eq!(or_si16(10486, 1), 10487); + assert_eq!(or_si16(10486, 3), 10487); + assert_eq!(or_si16(0, 16514), 16514); + assert_eq!(or_si16(2, 16514), 16514); + assert_eq!(or_si16(16514, 0), 16514); + assert_eq!(or_si16(16514, 2), 16514); + assert_eq!(or_si16(16514, 16514), 16514); + assert_eq!(or_si16(1, 16514), 16515); + assert_eq!(or_si16(3, 16514), 16515); + assert_eq!(or_si16(16514, 1), 16515); + assert_eq!(or_si16(16514, 3), 16515); + assert_eq!(or_si16(4, 16514), 16518); + assert_eq!(or_si16(16514, 4), 16518); + assert_eq!(or_si16(10486, 16514), 26870); + assert_eq!(or_si16(16514, 10486), 26870); + assert_eq!(or_si16(0, 32766), 32766); + assert_eq!(or_si16(2, 32766), 32766); + assert_eq!(or_si16(4, 32766), 32766); + assert_eq!(or_si16(10486, 32766), 32766); + assert_eq!(or_si16(16514, 32766), 32766); + assert_eq!(or_si16(32766, 0), 32766); + assert_eq!(or_si16(32766, 2), 32766); + assert_eq!(or_si16(32766, 4), 32766); + assert_eq!(or_si16(32766, 10486), 32766); + assert_eq!(or_si16(32766, 16514), 32766); + assert_eq!(or_si16(32766, 32766), 32766); + assert_eq!(or_si16(0, 32767), 32767); + assert_eq!(or_si16(1, 32766), 32767); + assert_eq!(or_si16(1, 32767), 32767); + assert_eq!(or_si16(2, 32767), 32767); + assert_eq!(or_si16(3, 32766), 32767); + assert_eq!(or_si16(3, 32767), 32767); + assert_eq!(or_si16(4, 32767), 32767); + assert_eq!(or_si16(10486, 32767), 32767); + assert_eq!(or_si16(16514, 32767), 32767); + assert_eq!(or_si16(32766, 1), 32767); + assert_eq!(or_si16(32766, 3), 32767); + assert_eq!(or_si16(32766, 32767), 32767); + assert_eq!(or_si16(32767, 0), 32767); + assert_eq!(or_si16(32767, 1), 32767); + assert_eq!(or_si16(32767, 2), 32767); + assert_eq!(or_si16(32767, 3), 32767); + assert_eq!(or_si16(32767, 4), 32767); + assert_eq!(or_si16(32767, 10486), 32767); + assert_eq!(or_si16(32767, 16514), 32767); + assert_eq!(or_si16(32767, 32766), 32767); + assert_eq!(or_si16(32767, 32767), 32767); + assert_eq!(or_si32(-2147483648, -2147483648), -2147483648); + assert_eq!(or_si32(-2147483648, 0), -2147483648); + assert_eq!(or_si32(0, -2147483648), -2147483648); + assert_eq!(or_si32(-2147483648, -2147483647), -2147483647); + assert_eq!(or_si32(-2147483648, 1), -2147483647); + assert_eq!(or_si32(-2147483647, -2147483648), -2147483647); + assert_eq!(or_si32(-2147483647, -2147483647), -2147483647); + assert_eq!(or_si32(-2147483647, 0), -2147483647); + assert_eq!(or_si32(-2147483647, 1), -2147483647); + assert_eq!(or_si32(0, -2147483647), -2147483647); + assert_eq!(or_si32(1, -2147483648), -2147483647); + assert_eq!(or_si32(1, -2147483647), -2147483647); + assert_eq!(or_si32(-2147483648, 2), -2147483646); + assert_eq!(or_si32(2, -2147483648), -2147483646); + assert_eq!(or_si32(-2147483648, 3), -2147483645); + assert_eq!(or_si32(-2147483647, 2), -2147483645); + assert_eq!(or_si32(-2147483647, 3), -2147483645); + assert_eq!(or_si32(2, -2147483647), -2147483645); + assert_eq!(or_si32(3, -2147483648), -2147483645); + assert_eq!(or_si32(3, -2147483647), -2147483645); + assert_eq!(or_si32(-2147483648, 4), -2147483644); + assert_eq!(or_si32(4, -2147483648), -2147483644); + assert_eq!(or_si32(-2147483647, 4), -2147483643); + assert_eq!(or_si32(4, -2147483647), -2147483643); + assert_eq!(or_si32(-2147483648, -1713183800), -1713183800); + assert_eq!(or_si32(-1713183800, -2147483648), -1713183800); + assert_eq!(or_si32(-1713183800, -1713183800), -1713183800); + assert_eq!(or_si32(-1713183800, 0), -1713183800); + assert_eq!(or_si32(0, -1713183800), -1713183800); + assert_eq!(or_si32(-2147483647, -1713183800), -1713183799); + assert_eq!(or_si32(-1713183800, -2147483647), -1713183799); + assert_eq!(or_si32(-1713183800, 1), -1713183799); + assert_eq!(or_si32(1, -1713183800), -1713183799); + assert_eq!(or_si32(-1713183800, 2), -1713183798); + assert_eq!(or_si32(2, -1713183800), -1713183798); + assert_eq!(or_si32(-1713183800, 3), -1713183797); + assert_eq!(or_si32(3, -1713183800), -1713183797); + assert_eq!(or_si32(-1713183800, 4), -1713183796); + assert_eq!(or_si32(4, -1713183800), -1713183796); + assert_eq!(or_si32(-2147483648, -1252582164), -1252582164); + assert_eq!(or_si32(-1252582164, -2147483648), -1252582164); + assert_eq!(or_si32(-1252582164, -1252582164), -1252582164); + assert_eq!(or_si32(-1252582164, 0), -1252582164); + assert_eq!(or_si32(-1252582164, 4), -1252582164); + assert_eq!(or_si32(0, -1252582164), -1252582164); + assert_eq!(or_si32(4, -1252582164), -1252582164); + assert_eq!(or_si32(-2147483647, -1252582164), -1252582163); + assert_eq!(or_si32(-1252582164, -2147483647), -1252582163); + assert_eq!(or_si32(-1252582164, 1), -1252582163); + assert_eq!(or_si32(1, -1252582164), -1252582163); + assert_eq!(or_si32(-1252582164, 2), -1252582162); + assert_eq!(or_si32(2, -1252582164), -1252582162); + assert_eq!(or_si32(-1252582164, 3), -1252582161); + assert_eq!(or_si32(3, -1252582164), -1252582161); + assert_eq!(or_si32(-1713183800, -1252582164), -1107820564); + assert_eq!(or_si32(-1252582164, -1713183800), -1107820564); + assert_eq!(or_si32(-2147483648, -1035405763), -1035405763); + assert_eq!(or_si32(-2147483647, -1035405763), -1035405763); + assert_eq!(or_si32(-1035405763, -2147483648), -1035405763); + assert_eq!(or_si32(-1035405763, -2147483647), -1035405763); + assert_eq!(or_si32(-1035405763, -1035405763), -1035405763); + assert_eq!(or_si32(-1035405763, 0), -1035405763); + assert_eq!(or_si32(-1035405763, 1), -1035405763); + assert_eq!(or_si32(-1035405763, 4), -1035405763); + assert_eq!(or_si32(0, -1035405763), -1035405763); + assert_eq!(or_si32(1, -1035405763), -1035405763); + assert_eq!(or_si32(4, -1035405763), -1035405763); + assert_eq!(or_si32(-1035405763, 2), -1035405761); + assert_eq!(or_si32(-1035405763, 3), -1035405761); + assert_eq!(or_si32(2, -1035405763), -1035405761); + assert_eq!(or_si32(3, -1035405763), -1035405761); + assert_eq!(or_si32(-1713183800, -1035405763), -605358083); + assert_eq!(or_si32(-1035405763, -1713183800), -605358083); + assert_eq!(or_si32(-1252582164, -1035405763), -144703747); + assert_eq!(or_si32(-1035405763, -1252582164), -144703747); + assert_eq!(or_si32(-2147483648, 2147483646), -2); + assert_eq!(or_si32(-1713183800, 2147483646), -2); + assert_eq!(or_si32(-1252582164, 2147483646), -2); + assert_eq!(or_si32(2147483646, -2147483648), -2); + assert_eq!(or_si32(2147483646, -1713183800), -2); + assert_eq!(or_si32(2147483646, -1252582164), -2); + assert_eq!(or_si32(-2147483648, 2147483647), -1); + assert_eq!(or_si32(-2147483647, 2147483646), -1); + assert_eq!(or_si32(-2147483647, 2147483647), -1); + assert_eq!(or_si32(-1713183800, 2147483647), -1); + assert_eq!(or_si32(-1252582164, 2147483647), -1); + assert_eq!(or_si32(-1035405763, 2147483646), -1); + assert_eq!(or_si32(-1035405763, 2147483647), -1); + assert_eq!(or_si32(2147483646, -2147483647), -1); + assert_eq!(or_si32(2147483646, -1035405763), -1); + assert_eq!(or_si32(2147483647, -2147483648), -1); + assert_eq!(or_si32(2147483647, -2147483647), -1); + assert_eq!(or_si32(2147483647, -1713183800), -1); + assert_eq!(or_si32(2147483647, -1252582164), -1); + assert_eq!(or_si32(2147483647, -1035405763), -1); + assert_eq!(or_si32(0, 0), 0); + assert_eq!(or_si32(0, 1), 1); + assert_eq!(or_si32(1, 0), 1); + assert_eq!(or_si32(1, 1), 1); + assert_eq!(or_si32(0, 2), 2); + assert_eq!(or_si32(2, 0), 2); + assert_eq!(or_si32(2, 2), 2); + assert_eq!(or_si32(0, 3), 3); + assert_eq!(or_si32(1, 2), 3); + assert_eq!(or_si32(1, 3), 3); + assert_eq!(or_si32(2, 1), 3); + assert_eq!(or_si32(2, 3), 3); + assert_eq!(or_si32(3, 0), 3); + assert_eq!(or_si32(3, 1), 3); + assert_eq!(or_si32(3, 2), 3); + assert_eq!(or_si32(3, 3), 3); + assert_eq!(or_si32(0, 4), 4); + assert_eq!(or_si32(4, 0), 4); + assert_eq!(or_si32(4, 4), 4); + assert_eq!(or_si32(1, 4), 5); + assert_eq!(or_si32(4, 1), 5); + assert_eq!(or_si32(2, 4), 6); + assert_eq!(or_si32(4, 2), 6); + assert_eq!(or_si32(3, 4), 7); + assert_eq!(or_si32(4, 3), 7); + assert_eq!(or_si32(0, 2147483646), 2147483646); + assert_eq!(or_si32(2, 2147483646), 2147483646); + assert_eq!(or_si32(4, 2147483646), 2147483646); + assert_eq!(or_si32(2147483646, 0), 2147483646); + assert_eq!(or_si32(2147483646, 2), 2147483646); + assert_eq!(or_si32(2147483646, 4), 2147483646); + assert_eq!(or_si32(2147483646, 2147483646), 2147483646); + assert_eq!(or_si32(0, 2147483647), 2147483647); + assert_eq!(or_si32(1, 2147483646), 2147483647); + assert_eq!(or_si32(1, 2147483647), 2147483647); + assert_eq!(or_si32(2, 2147483647), 2147483647); + assert_eq!(or_si32(3, 2147483646), 2147483647); + assert_eq!(or_si32(3, 2147483647), 2147483647); + assert_eq!(or_si32(4, 2147483647), 2147483647); + assert_eq!(or_si32(2147483646, 1), 2147483647); + assert_eq!(or_si32(2147483646, 3), 2147483647); + assert_eq!(or_si32(2147483646, 2147483647), 2147483647); + assert_eq!(or_si32(2147483647, 0), 2147483647); + assert_eq!(or_si32(2147483647, 1), 2147483647); + assert_eq!(or_si32(2147483647, 2), 2147483647); + assert_eq!(or_si32(2147483647, 3), 2147483647); + assert_eq!(or_si32(2147483647, 4), 2147483647); + assert_eq!(or_si32(2147483647, 2147483646), 2147483647); + assert_eq!(or_si32(2147483647, 2147483647), 2147483647); + assert_eq!( + or_si64(-9223372036854775808, -9223372036854775808), + -9223372036854775808 + ); + assert_eq!(or_si64(-9223372036854775808, 0), -9223372036854775808); + assert_eq!(or_si64(0, -9223372036854775808), -9223372036854775808); + assert_eq!( + or_si64(-9223372036854775808, -9223372036854775807), + -9223372036854775807 + ); + assert_eq!(or_si64(-9223372036854775808, 1), -9223372036854775807); + assert_eq!( + or_si64(-9223372036854775807, -9223372036854775808), + -9223372036854775807 + ); + assert_eq!( + or_si64(-9223372036854775807, -9223372036854775807), + -9223372036854775807 + ); + assert_eq!(or_si64(-9223372036854775807, 0), -9223372036854775807); + assert_eq!(or_si64(-9223372036854775807, 1), -9223372036854775807); + assert_eq!(or_si64(0, -9223372036854775807), -9223372036854775807); + assert_eq!(or_si64(1, -9223372036854775808), -9223372036854775807); + assert_eq!(or_si64(1, -9223372036854775807), -9223372036854775807); + assert_eq!(or_si64(-9223372036854775808, 2), -9223372036854775806); + assert_eq!(or_si64(2, -9223372036854775808), -9223372036854775806); + assert_eq!(or_si64(-9223372036854775808, 3), -9223372036854775805); + assert_eq!(or_si64(-9223372036854775807, 2), -9223372036854775805); + assert_eq!(or_si64(-9223372036854775807, 3), -9223372036854775805); + assert_eq!(or_si64(2, -9223372036854775807), -9223372036854775805); + assert_eq!(or_si64(3, -9223372036854775808), -9223372036854775805); + assert_eq!(or_si64(3, -9223372036854775807), -9223372036854775805); + assert_eq!(or_si64(-9223372036854775808, 4), -9223372036854775804); + assert_eq!(or_si64(4, -9223372036854775808), -9223372036854775804); + assert_eq!(or_si64(-9223372036854775807, 4), -9223372036854775803); + assert_eq!(or_si64(4, -9223372036854775807), -9223372036854775803); + assert_eq!( + or_si64(-9223372036854775808, 5577148965131116544), + -3646223071723659264 + ); + assert_eq!( + or_si64(5577148965131116544, -9223372036854775808), + -3646223071723659264 + ); + assert_eq!( + or_si64(-9223372036854775807, 5577148965131116544), + -3646223071723659263 + ); + assert_eq!( + or_si64(5577148965131116544, -9223372036854775807), + -3646223071723659263 + ); + assert_eq!( + or_si64(-9223372036854775808, -1741927215160008704), + -1741927215160008704 + ); + assert_eq!( + or_si64(-1741927215160008704, -9223372036854775808), + -1741927215160008704 + ); + assert_eq!( + or_si64(-1741927215160008704, -1741927215160008704), + -1741927215160008704 + ); + assert_eq!(or_si64(-1741927215160008704, 0), -1741927215160008704); + assert_eq!(or_si64(0, -1741927215160008704), -1741927215160008704); + assert_eq!( + or_si64(-9223372036854775807, -1741927215160008704), + -1741927215160008703 + ); + assert_eq!( + or_si64(-1741927215160008704, -9223372036854775807), + -1741927215160008703 + ); + assert_eq!(or_si64(-1741927215160008704, 1), -1741927215160008703); + assert_eq!(or_si64(1, -1741927215160008704), -1741927215160008703); + assert_eq!(or_si64(-1741927215160008704, 2), -1741927215160008702); + assert_eq!(or_si64(2, -1741927215160008704), -1741927215160008702); + assert_eq!(or_si64(-1741927215160008704, 3), -1741927215160008701); + assert_eq!(or_si64(3, -1741927215160008704), -1741927215160008701); + assert_eq!(or_si64(-1741927215160008704, 4), -1741927215160008700); + assert_eq!(or_si64(4, -1741927215160008704), -1741927215160008700); + assert_eq!( + or_si64(-9223372036854775808, -1328271339354574848), + -1328271339354574848 + ); + assert_eq!( + or_si64(-1328271339354574848, -9223372036854775808), + -1328271339354574848 + ); + assert_eq!( + or_si64(-1328271339354574848, -1328271339354574848), + -1328271339354574848 + ); + assert_eq!(or_si64(-1328271339354574848, 0), -1328271339354574848); + assert_eq!(or_si64(0, -1328271339354574848), -1328271339354574848); + assert_eq!( + or_si64(-9223372036854775807, -1328271339354574848), + -1328271339354574847 + ); + assert_eq!( + or_si64(-1328271339354574848, -9223372036854775807), + -1328271339354574847 + ); + assert_eq!(or_si64(-1328271339354574848, 1), -1328271339354574847); + assert_eq!(or_si64(1, -1328271339354574848), -1328271339354574847); + assert_eq!(or_si64(-1328271339354574848, 2), -1328271339354574846); + assert_eq!(or_si64(2, -1328271339354574848), -1328271339354574846); + assert_eq!(or_si64(-1328271339354574848, 3), -1328271339354574845); + assert_eq!(or_si64(3, -1328271339354574848), -1328271339354574845); + assert_eq!(or_si64(-1328271339354574848, 4), -1328271339354574844); + assert_eq!(or_si64(4, -1328271339354574848), -1328271339354574844); + assert_eq!( + or_si64(-1328271339354574848, 5577148965131116544), + -1299557394519166976 + ); + assert_eq!( + or_si64(5577148965131116544, -1328271339354574848), + -1299557394519166976 + ); + assert_eq!( + or_si64(-1741927215160008704, -1328271339354574848), + -1165466462517891072 + ); + assert_eq!( + or_si64(-1328271339354574848, -1741927215160008704), + -1165466462517891072 + ); + assert_eq!( + or_si64(-1741927215160008704, 5577148965131116544), + -1155332255525117952 + ); + assert_eq!( + or_si64(5577148965131116544, -1741927215160008704), + -1155332255525117952 + ); + assert_eq!(or_si64(-9223372036854775808, 9223372036854775806), -2); + assert_eq!(or_si64(-1741927215160008704, 9223372036854775806), -2); + assert_eq!(or_si64(-1328271339354574848, 9223372036854775806), -2); + assert_eq!(or_si64(9223372036854775806, -9223372036854775808), -2); + assert_eq!(or_si64(9223372036854775806, -1741927215160008704), -2); + assert_eq!(or_si64(9223372036854775806, -1328271339354574848), -2); + assert_eq!(or_si64(-9223372036854775808, 9223372036854775807), -1); + assert_eq!(or_si64(-9223372036854775807, 9223372036854775806), -1); + assert_eq!(or_si64(-9223372036854775807, 9223372036854775807), -1); + assert_eq!(or_si64(-1741927215160008704, 9223372036854775807), -1); + assert_eq!(or_si64(-1328271339354574848, 9223372036854775807), -1); + assert_eq!(or_si64(9223372036854775806, -9223372036854775807), -1); + assert_eq!(or_si64(9223372036854775807, -9223372036854775808), -1); + assert_eq!(or_si64(9223372036854775807, -9223372036854775807), -1); + assert_eq!(or_si64(9223372036854775807, -1741927215160008704), -1); + assert_eq!(or_si64(9223372036854775807, -1328271339354574848), -1); + assert_eq!(or_si64(0, 0), 0); + assert_eq!(or_si64(0, 1), 1); + assert_eq!(or_si64(1, 0), 1); + assert_eq!(or_si64(1, 1), 1); + assert_eq!(or_si64(0, 2), 2); + assert_eq!(or_si64(2, 0), 2); + assert_eq!(or_si64(2, 2), 2); + assert_eq!(or_si64(0, 3), 3); + assert_eq!(or_si64(1, 2), 3); + assert_eq!(or_si64(1, 3), 3); + assert_eq!(or_si64(2, 1), 3); + assert_eq!(or_si64(2, 3), 3); + assert_eq!(or_si64(3, 0), 3); + assert_eq!(or_si64(3, 1), 3); + assert_eq!(or_si64(3, 2), 3); + assert_eq!(or_si64(3, 3), 3); + assert_eq!(or_si64(0, 4), 4); + assert_eq!(or_si64(4, 0), 4); + assert_eq!(or_si64(4, 4), 4); + assert_eq!(or_si64(1, 4), 5); + assert_eq!(or_si64(4, 1), 5); + assert_eq!(or_si64(2, 4), 6); + assert_eq!(or_si64(4, 2), 6); + assert_eq!(or_si64(3, 4), 7); + assert_eq!(or_si64(4, 3), 7); + assert_eq!(or_si64(0, 5577148965131116544), 5577148965131116544); + assert_eq!(or_si64(5577148965131116544, 0), 5577148965131116544); + assert_eq!( + or_si64(5577148965131116544, 5577148965131116544), + 5577148965131116544 + ); + assert_eq!(or_si64(1, 5577148965131116544), 5577148965131116545); + assert_eq!(or_si64(5577148965131116544, 1), 5577148965131116545); + assert_eq!(or_si64(2, 5577148965131116544), 5577148965131116546); + assert_eq!(or_si64(5577148965131116544, 2), 5577148965131116546); + assert_eq!(or_si64(3, 5577148965131116544), 5577148965131116547); + assert_eq!(or_si64(5577148965131116544, 3), 5577148965131116547); + assert_eq!(or_si64(4, 5577148965131116544), 5577148965131116548); + assert_eq!(or_si64(5577148965131116544, 4), 5577148965131116548); + assert_eq!(or_si64(0, 9223372036854775806), 9223372036854775806); + assert_eq!(or_si64(2, 9223372036854775806), 9223372036854775806); + assert_eq!(or_si64(4, 9223372036854775806), 9223372036854775806); + assert_eq!( + or_si64(5577148965131116544, 9223372036854775806), + 9223372036854775806 + ); + assert_eq!(or_si64(9223372036854775806, 0), 9223372036854775806); + assert_eq!(or_si64(9223372036854775806, 2), 9223372036854775806); + assert_eq!(or_si64(9223372036854775806, 4), 9223372036854775806); + assert_eq!( + or_si64(9223372036854775806, 5577148965131116544), + 9223372036854775806 + ); + assert_eq!( + or_si64(9223372036854775806, 9223372036854775806), + 9223372036854775806 + ); + assert_eq!(or_si64(0, 9223372036854775807), 9223372036854775807); + assert_eq!(or_si64(1, 9223372036854775806), 9223372036854775807); + assert_eq!(or_si64(1, 9223372036854775807), 9223372036854775807); + assert_eq!(or_si64(2, 9223372036854775807), 9223372036854775807); + assert_eq!(or_si64(3, 9223372036854775806), 9223372036854775807); + assert_eq!(or_si64(3, 9223372036854775807), 9223372036854775807); + assert_eq!(or_si64(4, 9223372036854775807), 9223372036854775807); + assert_eq!( + or_si64(5577148965131116544, 9223372036854775807), + 9223372036854775807 + ); + assert_eq!(or_si64(9223372036854775806, 1), 9223372036854775807); + assert_eq!(or_si64(9223372036854775806, 3), 9223372036854775807); + assert_eq!( + or_si64(9223372036854775806, 9223372036854775807), + 9223372036854775807 + ); + assert_eq!(or_si64(9223372036854775807, 0), 9223372036854775807); + assert_eq!(or_si64(9223372036854775807, 1), 9223372036854775807); + assert_eq!(or_si64(9223372036854775807, 2), 9223372036854775807); + assert_eq!(or_si64(9223372036854775807, 3), 9223372036854775807); + assert_eq!(or_si64(9223372036854775807, 4), 9223372036854775807); + assert_eq!( + or_si64(9223372036854775807, 5577148965131116544), + 9223372036854775807 + ); + assert_eq!( + or_si64(9223372036854775807, 9223372036854775806), + 9223372036854775807 + ); + assert_eq!( + or_si64(9223372036854775807, 9223372036854775807), + 9223372036854775807 + ); + assert_eq!(or_si8(-128, -128), -128); + assert_eq!(or_si8(-128, 0), -128); + assert_eq!(or_si8(0, -128), -128); + assert_eq!(or_si8(-128, -127), -127); + assert_eq!(or_si8(-128, 1), -127); + assert_eq!(or_si8(-127, -128), -127); + assert_eq!(or_si8(-127, -127), -127); + assert_eq!(or_si8(-127, 0), -127); + assert_eq!(or_si8(-127, 1), -127); + assert_eq!(or_si8(0, -127), -127); + assert_eq!(or_si8(1, -128), -127); + assert_eq!(or_si8(1, -127), -127); + assert_eq!(or_si8(-128, 2), -126); + assert_eq!(or_si8(2, -128), -126); + assert_eq!(or_si8(-128, 3), -125); + assert_eq!(or_si8(-127, 2), -125); + assert_eq!(or_si8(-127, 3), -125); + assert_eq!(or_si8(2, -127), -125); + assert_eq!(or_si8(3, -128), -125); + assert_eq!(or_si8(3, -127), -125); + assert_eq!(or_si8(-128, 4), -124); + assert_eq!(or_si8(4, -128), -124); + assert_eq!(or_si8(-127, 4), -123); + assert_eq!(or_si8(4, -127), -123); + assert_eq!(or_si8(-128, 16), -112); + assert_eq!(or_si8(16, -128), -112); + assert_eq!(or_si8(-127, 16), -111); + assert_eq!(or_si8(16, -127), -111); + assert_eq!(or_si8(-128, 126), -2); + assert_eq!(or_si8(126, -128), -2); + assert_eq!(or_si8(-128, 127), -1); + assert_eq!(or_si8(-127, 126), -1); + assert_eq!(or_si8(-127, 127), -1); + assert_eq!(or_si8(126, -127), -1); + assert_eq!(or_si8(127, -128), -1); + assert_eq!(or_si8(127, -127), -1); + assert_eq!(or_si8(0, 0), 0); + assert_eq!(or_si8(0, 1), 1); + assert_eq!(or_si8(1, 0), 1); + assert_eq!(or_si8(1, 1), 1); + assert_eq!(or_si8(0, 2), 2); + assert_eq!(or_si8(2, 0), 2); + assert_eq!(or_si8(2, 2), 2); + assert_eq!(or_si8(0, 3), 3); + assert_eq!(or_si8(1, 2), 3); + assert_eq!(or_si8(1, 3), 3); + assert_eq!(or_si8(2, 1), 3); + assert_eq!(or_si8(2, 3), 3); + assert_eq!(or_si8(3, 0), 3); + assert_eq!(or_si8(3, 1), 3); + assert_eq!(or_si8(3, 2), 3); + assert_eq!(or_si8(3, 3), 3); + assert_eq!(or_si8(0, 4), 4); + assert_eq!(or_si8(4, 0), 4); + assert_eq!(or_si8(4, 4), 4); + assert_eq!(or_si8(1, 4), 5); + assert_eq!(or_si8(4, 1), 5); + assert_eq!(or_si8(2, 4), 6); + assert_eq!(or_si8(4, 2), 6); + assert_eq!(or_si8(3, 4), 7); + assert_eq!(or_si8(4, 3), 7); + assert_eq!(or_si8(0, 16), 16); + assert_eq!(or_si8(16, 0), 16); + assert_eq!(or_si8(16, 16), 16); + assert_eq!(or_si8(1, 16), 17); + assert_eq!(or_si8(16, 1), 17); + assert_eq!(or_si8(2, 16), 18); + assert_eq!(or_si8(16, 2), 18); + assert_eq!(or_si8(3, 16), 19); + assert_eq!(or_si8(16, 3), 19); + assert_eq!(or_si8(4, 16), 20); + assert_eq!(or_si8(16, 4), 20); + assert_eq!(or_si8(0, 126), 126); + assert_eq!(or_si8(2, 126), 126); + assert_eq!(or_si8(4, 126), 126); + assert_eq!(or_si8(16, 126), 126); + assert_eq!(or_si8(126, 0), 126); + assert_eq!(or_si8(126, 2), 126); + assert_eq!(or_si8(126, 4), 126); + assert_eq!(or_si8(126, 16), 126); + assert_eq!(or_si8(126, 126), 126); + assert_eq!(or_si8(0, 127), 127); + assert_eq!(or_si8(1, 126), 127); + assert_eq!(or_si8(1, 127), 127); + assert_eq!(or_si8(2, 127), 127); + assert_eq!(or_si8(3, 126), 127); + assert_eq!(or_si8(3, 127), 127); + assert_eq!(or_si8(4, 127), 127); + assert_eq!(or_si8(16, 127), 127); + assert_eq!(or_si8(126, 1), 127); + assert_eq!(or_si8(126, 3), 127); + assert_eq!(or_si8(126, 127), 127); + assert_eq!(or_si8(127, 0), 127); + assert_eq!(or_si8(127, 1), 127); + assert_eq!(or_si8(127, 2), 127); + assert_eq!(or_si8(127, 3), 127); + assert_eq!(or_si8(127, 4), 127); + assert_eq!(or_si8(127, 16), 127); + assert_eq!(or_si8(127, 126), 127); + assert_eq!(or_si8(127, 127), 127); + assert_eq!(or_ui16(0, 0), 0); + assert_eq!(or_ui16(0, 1), 1); + assert_eq!(or_ui16(1, 0), 1); + assert_eq!(or_ui16(1, 1), 1); + assert_eq!(or_ui16(0, 2), 2); + assert_eq!(or_ui16(2, 0), 2); + assert_eq!(or_ui16(2, 2), 2); + assert_eq!(or_ui16(0, 3), 3); + assert_eq!(or_ui16(1, 2), 3); + assert_eq!(or_ui16(1, 3), 3); + assert_eq!(or_ui16(2, 1), 3); + assert_eq!(or_ui16(2, 3), 3); + assert_eq!(or_ui16(3, 0), 3); + assert_eq!(or_ui16(3, 1), 3); + assert_eq!(or_ui16(3, 2), 3); + assert_eq!(or_ui16(3, 3), 3); + assert_eq!(or_ui16(0, 4), 4); + assert_eq!(or_ui16(4, 0), 4); + assert_eq!(or_ui16(4, 4), 4); + assert_eq!(or_ui16(1, 4), 5); + assert_eq!(or_ui16(4, 1), 5); + assert_eq!(or_ui16(2, 4), 6); + assert_eq!(or_ui16(4, 2), 6); + assert_eq!(or_ui16(3, 4), 7); + assert_eq!(or_ui16(4, 3), 7); + assert_eq!(or_ui16(0, 1717), 1717); + assert_eq!(or_ui16(1, 1717), 1717); + assert_eq!(or_ui16(4, 1717), 1717); + assert_eq!(or_ui16(1717, 0), 1717); + assert_eq!(or_ui16(1717, 1), 1717); + assert_eq!(or_ui16(1717, 4), 1717); + assert_eq!(or_ui16(1717, 1717), 1717); + assert_eq!(or_ui16(2, 1717), 1719); + assert_eq!(or_ui16(3, 1717), 1719); + assert_eq!(or_ui16(1717, 2), 1719); + assert_eq!(or_ui16(1717, 3), 1719); + assert_eq!(or_ui16(0, 17988), 17988); + assert_eq!(or_ui16(4, 17988), 17988); + assert_eq!(or_ui16(17988, 0), 17988); + assert_eq!(or_ui16(17988, 4), 17988); + assert_eq!(or_ui16(17988, 17988), 17988); + assert_eq!(or_ui16(1, 17988), 17989); + assert_eq!(or_ui16(17988, 1), 17989); + assert_eq!(or_ui16(2, 17988), 17990); + assert_eq!(or_ui16(17988, 2), 17990); + assert_eq!(or_ui16(3, 17988), 17991); + assert_eq!(or_ui16(17988, 3), 17991); + assert_eq!(or_ui16(1717, 17988), 18165); + assert_eq!(or_ui16(17988, 1717), 18165); + assert_eq!(or_ui16(0, 65096), 65096); + assert_eq!(or_ui16(65096, 0), 65096); + assert_eq!(or_ui16(65096, 65096), 65096); + assert_eq!(or_ui16(1, 65096), 65097); + assert_eq!(or_ui16(65096, 1), 65097); + assert_eq!(or_ui16(2, 65096), 65098); + assert_eq!(or_ui16(65096, 2), 65098); + assert_eq!(or_ui16(3, 65096), 65099); + assert_eq!(or_ui16(65096, 3), 65099); + assert_eq!(or_ui16(4, 65096), 65100); + assert_eq!(or_ui16(17988, 65096), 65100); + assert_eq!(or_ui16(65096, 4), 65100); + assert_eq!(or_ui16(65096, 17988), 65100); + assert_eq!(or_ui16(1717, 65096), 65277); + assert_eq!(or_ui16(65096, 1717), 65277); + assert_eq!(or_ui16(0, 65534), 65534); + assert_eq!(or_ui16(2, 65534), 65534); + assert_eq!(or_ui16(4, 65534), 65534); + assert_eq!(or_ui16(17988, 65534), 65534); + assert_eq!(or_ui16(65096, 65534), 65534); + assert_eq!(or_ui16(65534, 0), 65534); + assert_eq!(or_ui16(65534, 2), 65534); + assert_eq!(or_ui16(65534, 4), 65534); + assert_eq!(or_ui16(65534, 17988), 65534); + assert_eq!(or_ui16(65534, 65096), 65534); + assert_eq!(or_ui16(65534, 65534), 65534); + assert_eq!(or_ui16(0, 65535), 65535); + assert_eq!(or_ui16(1, 65534), 65535); + assert_eq!(or_ui16(1, 65535), 65535); + assert_eq!(or_ui16(2, 65535), 65535); + assert_eq!(or_ui16(3, 65534), 65535); + assert_eq!(or_ui16(3, 65535), 65535); + assert_eq!(or_ui16(4, 65535), 65535); + assert_eq!(or_ui16(1717, 65534), 65535); + assert_eq!(or_ui16(1717, 65535), 65535); + assert_eq!(or_ui16(17988, 65535), 65535); + assert_eq!(or_ui16(65096, 65535), 65535); + assert_eq!(or_ui16(65534, 1), 65535); + assert_eq!(or_ui16(65534, 3), 65535); + assert_eq!(or_ui16(65534, 1717), 65535); + assert_eq!(or_ui16(65534, 65535), 65535); + assert_eq!(or_ui16(65535, 0), 65535); + assert_eq!(or_ui16(65535, 1), 65535); + assert_eq!(or_ui16(65535, 2), 65535); + assert_eq!(or_ui16(65535, 3), 65535); + assert_eq!(or_ui16(65535, 4), 65535); + assert_eq!(or_ui16(65535, 1717), 65535); + assert_eq!(or_ui16(65535, 17988), 65535); + assert_eq!(or_ui16(65535, 65096), 65535); + assert_eq!(or_ui16(65535, 65534), 65535); + assert_eq!(or_ui16(65535, 65535), 65535); + assert_eq!(or_ui32(0, 0), 0); + assert_eq!(or_ui32(0, 1), 1); + assert_eq!(or_ui32(1, 0), 1); + assert_eq!(or_ui32(1, 1), 1); + assert_eq!(or_ui32(0, 2), 2); + assert_eq!(or_ui32(2, 0), 2); + assert_eq!(or_ui32(2, 2), 2); + assert_eq!(or_ui32(0, 3), 3); + assert_eq!(or_ui32(1, 2), 3); + assert_eq!(or_ui32(1, 3), 3); + assert_eq!(or_ui32(2, 1), 3); + assert_eq!(or_ui32(2, 3), 3); + assert_eq!(or_ui32(3, 0), 3); + assert_eq!(or_ui32(3, 1), 3); + assert_eq!(or_ui32(3, 2), 3); + assert_eq!(or_ui32(3, 3), 3); + assert_eq!(or_ui32(0, 4), 4); + assert_eq!(or_ui32(4, 0), 4); + assert_eq!(or_ui32(4, 4), 4); + assert_eq!(or_ui32(1, 4), 5); + assert_eq!(or_ui32(4, 1), 5); + assert_eq!(or_ui32(2, 4), 6); + assert_eq!(or_ui32(4, 2), 6); + assert_eq!(or_ui32(3, 4), 7); + assert_eq!(or_ui32(4, 3), 7); + assert_eq!(or_ui32(0, 2119154652), 2119154652); + assert_eq!(or_ui32(4, 2119154652), 2119154652); + assert_eq!(or_ui32(2119154652, 0), 2119154652); + assert_eq!(or_ui32(2119154652, 4), 2119154652); + assert_eq!(or_ui32(2119154652, 2119154652), 2119154652); + assert_eq!(or_ui32(1, 2119154652), 2119154653); + assert_eq!(or_ui32(2119154652, 1), 2119154653); + assert_eq!(or_ui32(2, 2119154652), 2119154654); + assert_eq!(or_ui32(2119154652, 2), 2119154654); + assert_eq!(or_ui32(3, 2119154652), 2119154655); + assert_eq!(or_ui32(2119154652, 3), 2119154655); + assert_eq!(or_ui32(0, 3002788344), 3002788344); + assert_eq!(or_ui32(3002788344, 0), 3002788344); + assert_eq!(or_ui32(3002788344, 3002788344), 3002788344); + assert_eq!(or_ui32(1, 3002788344), 3002788345); + assert_eq!(or_ui32(3002788344, 1), 3002788345); + assert_eq!(or_ui32(2, 3002788344), 3002788346); + assert_eq!(or_ui32(3002788344, 2), 3002788346); + assert_eq!(or_ui32(3, 3002788344), 3002788347); + assert_eq!(or_ui32(3002788344, 3), 3002788347); + assert_eq!(or_ui32(4, 3002788344), 3002788348); + assert_eq!(or_ui32(3002788344, 4), 3002788348); + assert_eq!(or_ui32(0, 3482297128), 3482297128); + assert_eq!(or_ui32(3482297128, 0), 3482297128); + assert_eq!(or_ui32(3482297128, 3482297128), 3482297128); + assert_eq!(or_ui32(1, 3482297128), 3482297129); + assert_eq!(or_ui32(3482297128, 1), 3482297129); + assert_eq!(or_ui32(2, 3482297128), 3482297130); + assert_eq!(or_ui32(3482297128, 2), 3482297130); + assert_eq!(or_ui32(3, 3482297128), 3482297131); + assert_eq!(or_ui32(3482297128, 3), 3482297131); + assert_eq!(or_ui32(4, 3482297128), 3482297132); + assert_eq!(or_ui32(3482297128, 4), 3482297132); + assert_eq!(or_ui32(2119154652, 3002788344), 4278189052); + assert_eq!(or_ui32(3002788344, 2119154652), 4278189052); + assert_eq!(or_ui32(2119154652, 3482297128), 4291804156); + assert_eq!(or_ui32(3482297128, 2119154652), 4291804156); + assert_eq!(or_ui32(3002788344, 3482297128), 4294962168); + assert_eq!(or_ui32(3482297128, 3002788344), 4294962168); + assert_eq!(or_ui32(0, 4294967294), 4294967294); + assert_eq!(or_ui32(2, 4294967294), 4294967294); + assert_eq!(or_ui32(4, 4294967294), 4294967294); + assert_eq!(or_ui32(2119154652, 4294967294), 4294967294); + assert_eq!(or_ui32(3002788344, 4294967294), 4294967294); + assert_eq!(or_ui32(3482297128, 4294967294), 4294967294); + assert_eq!(or_ui32(4294967294, 0), 4294967294); + assert_eq!(or_ui32(4294967294, 2), 4294967294); + assert_eq!(or_ui32(4294967294, 4), 4294967294); + assert_eq!(or_ui32(4294967294, 2119154652), 4294967294); + assert_eq!(or_ui32(4294967294, 3002788344), 4294967294); + assert_eq!(or_ui32(4294967294, 3482297128), 4294967294); + assert_eq!(or_ui32(4294967294, 4294967294), 4294967294); + assert_eq!(or_ui32(0, 4294967295), 4294967295); + assert_eq!(or_ui32(1, 4294967294), 4294967295); + assert_eq!(or_ui32(1, 4294967295), 4294967295); + assert_eq!(or_ui32(2, 4294967295), 4294967295); + assert_eq!(or_ui32(3, 4294967294), 4294967295); + assert_eq!(or_ui32(3, 4294967295), 4294967295); + assert_eq!(or_ui32(4, 4294967295), 4294967295); + assert_eq!(or_ui32(2119154652, 4294967295), 4294967295); + assert_eq!(or_ui32(3002788344, 4294967295), 4294967295); + assert_eq!(or_ui32(3482297128, 4294967295), 4294967295); + assert_eq!(or_ui32(4294967294, 1), 4294967295); + assert_eq!(or_ui32(4294967294, 3), 4294967295); + assert_eq!(or_ui32(4294967294, 4294967295), 4294967295); + assert_eq!(or_ui32(4294967295, 0), 4294967295); + assert_eq!(or_ui32(4294967295, 1), 4294967295); + assert_eq!(or_ui32(4294967295, 2), 4294967295); + assert_eq!(or_ui32(4294967295, 3), 4294967295); + assert_eq!(or_ui32(4294967295, 4), 4294967295); + assert_eq!(or_ui32(4294967295, 2119154652), 4294967295); + assert_eq!(or_ui32(4294967295, 3002788344), 4294967295); + assert_eq!(or_ui32(4294967295, 3482297128), 4294967295); + assert_eq!(or_ui32(4294967295, 4294967294), 4294967295); + assert_eq!(or_ui32(4294967295, 4294967295), 4294967295); + assert_eq!(or_ui64(0, 0), 0); + assert_eq!(or_ui64(0, 1), 1); + assert_eq!(or_ui64(1, 0), 1); + assert_eq!(or_ui64(1, 1), 1); + assert_eq!(or_ui64(0, 2), 2); + assert_eq!(or_ui64(2, 0), 2); + assert_eq!(or_ui64(2, 2), 2); + assert_eq!(or_ui64(0, 3), 3); + assert_eq!(or_ui64(1, 2), 3); + assert_eq!(or_ui64(1, 3), 3); + assert_eq!(or_ui64(2, 1), 3); + assert_eq!(or_ui64(2, 3), 3); + assert_eq!(or_ui64(3, 0), 3); + assert_eq!(or_ui64(3, 1), 3); + assert_eq!(or_ui64(3, 2), 3); + assert_eq!(or_ui64(3, 3), 3); + assert_eq!(or_ui64(0, 4), 4); + assert_eq!(or_ui64(4, 0), 4); + assert_eq!(or_ui64(4, 4), 4); + assert_eq!(or_ui64(1, 4), 5); + assert_eq!(or_ui64(4, 1), 5); + assert_eq!(or_ui64(2, 4), 6); + assert_eq!(or_ui64(4, 2), 6); + assert_eq!(or_ui64(3, 4), 7); + assert_eq!(or_ui64(4, 3), 7); + assert_eq!(or_ui64(0, 191084152064409600), 191084152064409600); + assert_eq!(or_ui64(191084152064409600, 0), 191084152064409600); + assert_eq!( + or_ui64(191084152064409600, 191084152064409600), + 191084152064409600 + ); + assert_eq!(or_ui64(1, 191084152064409600), 191084152064409601); + assert_eq!(or_ui64(191084152064409600, 1), 191084152064409601); + assert_eq!(or_ui64(2, 191084152064409600), 191084152064409602); + assert_eq!(or_ui64(191084152064409600, 2), 191084152064409602); + assert_eq!(or_ui64(3, 191084152064409600), 191084152064409603); + assert_eq!(or_ui64(191084152064409600, 3), 191084152064409603); + assert_eq!(or_ui64(4, 191084152064409600), 191084152064409604); + assert_eq!(or_ui64(191084152064409600, 4), 191084152064409604); + assert_eq!(or_ui64(0, 11015955194427482112), 11015955194427482112); + assert_eq!(or_ui64(11015955194427482112, 0), 11015955194427482112); + assert_eq!( + or_ui64(11015955194427482112, 11015955194427482112), + 11015955194427482112 + ); + assert_eq!(or_ui64(1, 11015955194427482112), 11015955194427482113); + assert_eq!(or_ui64(11015955194427482112, 1), 11015955194427482113); + assert_eq!(or_ui64(2, 11015955194427482112), 11015955194427482114); + assert_eq!(or_ui64(11015955194427482112, 2), 11015955194427482114); + assert_eq!(or_ui64(3, 11015955194427482112), 11015955194427482115); + assert_eq!(or_ui64(11015955194427482112, 3), 11015955194427482115); + assert_eq!(or_ui64(4, 11015955194427482112), 11015955194427482116); + assert_eq!(or_ui64(11015955194427482112, 4), 11015955194427482116); + assert_eq!( + or_ui64(191084152064409600, 11015955194427482112), + 11161853808046874624 + ); + assert_eq!( + or_ui64(11015955194427482112, 191084152064409600), + 11161853808046874624 + ); + assert_eq!(or_ui64(0, 16990600415051759616), 16990600415051759616); + assert_eq!(or_ui64(16990600415051759616, 0), 16990600415051759616); + assert_eq!( + or_ui64(16990600415051759616, 16990600415051759616), + 16990600415051759616 + ); + assert_eq!(or_ui64(1, 16990600415051759616), 16990600415051759617); + assert_eq!(or_ui64(16990600415051759616, 1), 16990600415051759617); + assert_eq!(or_ui64(2, 16990600415051759616), 16990600415051759618); + assert_eq!(or_ui64(16990600415051759616, 2), 16990600415051759618); + assert_eq!(or_ui64(3, 16990600415051759616), 16990600415051759619); + assert_eq!(or_ui64(16990600415051759616, 3), 16990600415051759619); + assert_eq!(or_ui64(4, 16990600415051759616), 16990600415051759620); + assert_eq!(or_ui64(16990600415051759616, 4), 16990600415051759620); + assert_eq!( + or_ui64(191084152064409600, 16990600415051759616), + 17000806082182103040 + ); + assert_eq!( + or_ui64(16990600415051759616, 191084152064409600), + 17000806082182103040 + ); + assert_eq!( + or_ui64(11015955194427482112, 16990600415051759616), + 18152530082063441920 + ); + assert_eq!( + or_ui64(16990600415051759616, 11015955194427482112), + 18152530082063441920 + ); + assert_eq!(or_ui64(0, 18446744073709551614), 18446744073709551614); + assert_eq!(or_ui64(2, 18446744073709551614), 18446744073709551614); + assert_eq!(or_ui64(4, 18446744073709551614), 18446744073709551614); + assert_eq!( + or_ui64(191084152064409600, 18446744073709551614), + 18446744073709551614 + ); + assert_eq!( + or_ui64(11015955194427482112, 18446744073709551614), + 18446744073709551614 + ); + assert_eq!( + or_ui64(16990600415051759616, 18446744073709551614), + 18446744073709551614 + ); + assert_eq!(or_ui64(18446744073709551614, 0), 18446744073709551614); + assert_eq!(or_ui64(18446744073709551614, 2), 18446744073709551614); + assert_eq!(or_ui64(18446744073709551614, 4), 18446744073709551614); + assert_eq!( + or_ui64(18446744073709551614, 191084152064409600), + 18446744073709551614 + ); + assert_eq!( + or_ui64(18446744073709551614, 11015955194427482112), + 18446744073709551614 + ); + assert_eq!( + or_ui64(18446744073709551614, 16990600415051759616), + 18446744073709551614 + ); + assert_eq!( + or_ui64(18446744073709551614, 18446744073709551614), + 18446744073709551614 + ); + assert_eq!(or_ui64(0, 18446744073709551615), 18446744073709551615); + assert_eq!(or_ui64(1, 18446744073709551614), 18446744073709551615); + assert_eq!(or_ui64(1, 18446744073709551615), 18446744073709551615); + assert_eq!(or_ui64(2, 18446744073709551615), 18446744073709551615); + assert_eq!(or_ui64(3, 18446744073709551614), 18446744073709551615); + assert_eq!(or_ui64(3, 18446744073709551615), 18446744073709551615); + assert_eq!(or_ui64(4, 18446744073709551615), 18446744073709551615); + assert_eq!( + or_ui64(191084152064409600, 18446744073709551615), + 18446744073709551615 + ); + assert_eq!( + or_ui64(11015955194427482112, 18446744073709551615), + 18446744073709551615 + ); + assert_eq!( + or_ui64(16990600415051759616, 18446744073709551615), + 18446744073709551615 + ); + assert_eq!(or_ui64(18446744073709551614, 1), 18446744073709551615); + assert_eq!(or_ui64(18446744073709551614, 3), 18446744073709551615); + assert_eq!( + or_ui64(18446744073709551614, 18446744073709551615), + 18446744073709551615 + ); + assert_eq!(or_ui64(18446744073709551615, 0), 18446744073709551615); + assert_eq!(or_ui64(18446744073709551615, 1), 18446744073709551615); + assert_eq!(or_ui64(18446744073709551615, 2), 18446744073709551615); + assert_eq!(or_ui64(18446744073709551615, 3), 18446744073709551615); + assert_eq!(or_ui64(18446744073709551615, 4), 18446744073709551615); + assert_eq!( + or_ui64(18446744073709551615, 191084152064409600), + 18446744073709551615 + ); + assert_eq!( + or_ui64(18446744073709551615, 11015955194427482112), + 18446744073709551615 + ); + assert_eq!( + or_ui64(18446744073709551615, 16990600415051759616), + 18446744073709551615 + ); + assert_eq!( + or_ui64(18446744073709551615, 18446744073709551614), + 18446744073709551615 + ); + assert_eq!( + or_ui64(18446744073709551615, 18446744073709551615), + 18446744073709551615 + ); + assert_eq!(or_ui8(0, 0), 0); + assert_eq!(or_ui8(0, 1), 1); + assert_eq!(or_ui8(1, 0), 1); + assert_eq!(or_ui8(1, 1), 1); + assert_eq!(or_ui8(0, 2), 2); + assert_eq!(or_ui8(2, 0), 2); + assert_eq!(or_ui8(2, 2), 2); + assert_eq!(or_ui8(0, 3), 3); + assert_eq!(or_ui8(1, 2), 3); + assert_eq!(or_ui8(1, 3), 3); + assert_eq!(or_ui8(2, 1), 3); + assert_eq!(or_ui8(2, 3), 3); + assert_eq!(or_ui8(3, 0), 3); + assert_eq!(or_ui8(3, 1), 3); + assert_eq!(or_ui8(3, 2), 3); + assert_eq!(or_ui8(3, 3), 3); + assert_eq!(or_ui8(0, 4), 4); + assert_eq!(or_ui8(4, 0), 4); + assert_eq!(or_ui8(4, 4), 4); + assert_eq!(or_ui8(1, 4), 5); + assert_eq!(or_ui8(4, 1), 5); + assert_eq!(or_ui8(2, 4), 6); + assert_eq!(or_ui8(4, 2), 6); + assert_eq!(or_ui8(3, 4), 7); + assert_eq!(or_ui8(4, 3), 7); + assert_eq!(or_ui8(0, 72), 72); + assert_eq!(or_ui8(72, 0), 72); + assert_eq!(or_ui8(72, 72), 72); + assert_eq!(or_ui8(1, 72), 73); + assert_eq!(or_ui8(72, 1), 73); + assert_eq!(or_ui8(2, 72), 74); + assert_eq!(or_ui8(72, 2), 74); + assert_eq!(or_ui8(3, 72), 75); + assert_eq!(or_ui8(72, 3), 75); + assert_eq!(or_ui8(4, 72), 76); + assert_eq!(or_ui8(72, 4), 76); + assert_eq!(or_ui8(0, 100), 100); + assert_eq!(or_ui8(4, 100), 100); + assert_eq!(or_ui8(100, 0), 100); + assert_eq!(or_ui8(100, 4), 100); + assert_eq!(or_ui8(100, 100), 100); + assert_eq!(or_ui8(1, 100), 101); + assert_eq!(or_ui8(100, 1), 101); + assert_eq!(or_ui8(2, 100), 102); + assert_eq!(or_ui8(100, 2), 102); + assert_eq!(or_ui8(3, 100), 103); + assert_eq!(or_ui8(100, 3), 103); + assert_eq!(or_ui8(72, 100), 108); + assert_eq!(or_ui8(100, 72), 108); + assert_eq!(or_ui8(0, 162), 162); + assert_eq!(or_ui8(2, 162), 162); + assert_eq!(or_ui8(162, 0), 162); + assert_eq!(or_ui8(162, 2), 162); + assert_eq!(or_ui8(162, 162), 162); + assert_eq!(or_ui8(1, 162), 163); + assert_eq!(or_ui8(3, 162), 163); + assert_eq!(or_ui8(162, 1), 163); + assert_eq!(or_ui8(162, 3), 163); + assert_eq!(or_ui8(4, 162), 166); + assert_eq!(or_ui8(162, 4), 166); + assert_eq!(or_ui8(100, 162), 230); + assert_eq!(or_ui8(162, 100), 230); + assert_eq!(or_ui8(72, 162), 234); + assert_eq!(or_ui8(162, 72), 234); + assert_eq!(or_ui8(0, 254), 254); + assert_eq!(or_ui8(2, 254), 254); + assert_eq!(or_ui8(4, 254), 254); + assert_eq!(or_ui8(72, 254), 254); + assert_eq!(or_ui8(100, 254), 254); + assert_eq!(or_ui8(162, 254), 254); + assert_eq!(or_ui8(254, 0), 254); + assert_eq!(or_ui8(254, 2), 254); + assert_eq!(or_ui8(254, 4), 254); + assert_eq!(or_ui8(254, 72), 254); + assert_eq!(or_ui8(254, 100), 254); + assert_eq!(or_ui8(254, 162), 254); + assert_eq!(or_ui8(254, 254), 254); + assert_eq!(or_ui8(0, 255), 255); + assert_eq!(or_ui8(1, 254), 255); + assert_eq!(or_ui8(1, 255), 255); + assert_eq!(or_ui8(2, 255), 255); + assert_eq!(or_ui8(3, 254), 255); + assert_eq!(or_ui8(3, 255), 255); + assert_eq!(or_ui8(4, 255), 255); + assert_eq!(or_ui8(72, 255), 255); + assert_eq!(or_ui8(100, 255), 255); + assert_eq!(or_ui8(162, 255), 255); + assert_eq!(or_ui8(254, 1), 255); + assert_eq!(or_ui8(254, 3), 255); + assert_eq!(or_ui8(254, 255), 255); + assert_eq!(or_ui8(255, 0), 255); + assert_eq!(or_ui8(255, 1), 255); + assert_eq!(or_ui8(255, 2), 255); + assert_eq!(or_ui8(255, 3), 255); + assert_eq!(or_ui8(255, 4), 255); + assert_eq!(or_ui8(255, 72), 255); + assert_eq!(or_ui8(255, 100), 255); + assert_eq!(or_ui8(255, 162), 255); + assert_eq!(or_ui8(255, 254), 255); + assert_eq!(or_ui8(255, 255), 255); + assert_eq!(xor_si16(-32768, 0), -32768); + assert_eq!(xor_si16(-32767, 1), -32768); + assert_eq!(xor_si16(0, -32768), -32768); + assert_eq!(xor_si16(1, -32767), -32768); + assert_eq!(xor_si16(-32768, 1), -32767); + assert_eq!(xor_si16(-32767, 0), -32767); + assert_eq!(xor_si16(0, -32767), -32767); + assert_eq!(xor_si16(1, -32768), -32767); + assert_eq!(xor_si16(-32768, 2), -32766); + assert_eq!(xor_si16(-32767, 3), -32766); + assert_eq!(xor_si16(2, -32768), -32766); + assert_eq!(xor_si16(3, -32767), -32766); + assert_eq!(xor_si16(-32768, 3), -32765); + assert_eq!(xor_si16(-32767, 2), -32765); + assert_eq!(xor_si16(2, -32767), -32765); + assert_eq!(xor_si16(3, -32768), -32765); + assert_eq!(xor_si16(-32768, 4), -32764); + assert_eq!(xor_si16(4, -32768), -32764); + assert_eq!(xor_si16(-32767, 4), -32763); + assert_eq!(xor_si16(4, -32767), -32763); + assert_eq!(xor_si16(-32547, 4), -32551); + assert_eq!(xor_si16(4, -32547), -32551); + assert_eq!(xor_si16(-32547, 1), -32548); + assert_eq!(xor_si16(1, -32547), -32548); + assert_eq!(xor_si16(-32547, 0), -32547); + assert_eq!(xor_si16(0, -32547), -32547); + assert_eq!(xor_si16(-32547, 3), -32546); + assert_eq!(xor_si16(3, -32547), -32546); + assert_eq!(xor_si16(-32547, 2), -32545); + assert_eq!(xor_si16(2, -32547), -32545); + assert_eq!(xor_si16(-32547, 10486), -22485); + assert_eq!(xor_si16(10486, -32547), -22485); + assert_eq!(xor_si16(-32768, 10486), -22282); + assert_eq!(xor_si16(10486, -32768), -22282); + assert_eq!(xor_si16(-32767, 10486), -22281); + assert_eq!(xor_si16(10486, -32767), -22281); + assert_eq!(xor_si16(-32547, 16514), -16289); + assert_eq!(xor_si16(16514, -32547), -16289); + assert_eq!(xor_si16(-32768, 16514), -16254); + assert_eq!(xor_si16(16514, -32768), -16254); + assert_eq!(xor_si16(-32767, 16514), -16253); + assert_eq!(xor_si16(16514, -32767), -16253); + assert_eq!(xor_si16(-32547, 32767), -222); + assert_eq!(xor_si16(32767, -32547), -222); + assert_eq!(xor_si16(-32547, 32766), -221); + assert_eq!(xor_si16(32766, -32547), -221); + assert_eq!(xor_si16(-32768, 32766), -2); + assert_eq!(xor_si16(-32767, 32767), -2); + assert_eq!(xor_si16(32766, -32768), -2); + assert_eq!(xor_si16(32767, -32767), -2); + assert_eq!(xor_si16(-32768, 32767), -1); + assert_eq!(xor_si16(-32767, 32766), -1); + assert_eq!(xor_si16(32766, -32767), -1); + assert_eq!(xor_si16(32767, -32768), -1); + assert_eq!(xor_si16(-32768, -32768), 0); + assert_eq!(xor_si16(-32767, -32767), 0); + assert_eq!(xor_si16(-32547, -32547), 0); + assert_eq!(xor_si16(0, 0), 0); + assert_eq!(xor_si16(1, 1), 0); + assert_eq!(xor_si16(2, 2), 0); + assert_eq!(xor_si16(3, 3), 0); + assert_eq!(xor_si16(4, 4), 0); + assert_eq!(xor_si16(10486, 10486), 0); + assert_eq!(xor_si16(16514, 16514), 0); + assert_eq!(xor_si16(32766, 32766), 0); + assert_eq!(xor_si16(32767, 32767), 0); + assert_eq!(xor_si16(-32768, -32767), 1); + assert_eq!(xor_si16(-32767, -32768), 1); + assert_eq!(xor_si16(0, 1), 1); + assert_eq!(xor_si16(1, 0), 1); + assert_eq!(xor_si16(2, 3), 1); + assert_eq!(xor_si16(3, 2), 1); + assert_eq!(xor_si16(32766, 32767), 1); + assert_eq!(xor_si16(32767, 32766), 1); + assert_eq!(xor_si16(0, 2), 2); + assert_eq!(xor_si16(1, 3), 2); + assert_eq!(xor_si16(2, 0), 2); + assert_eq!(xor_si16(3, 1), 2); + assert_eq!(xor_si16(0, 3), 3); + assert_eq!(xor_si16(1, 2), 3); + assert_eq!(xor_si16(2, 1), 3); + assert_eq!(xor_si16(3, 0), 3); + assert_eq!(xor_si16(0, 4), 4); + assert_eq!(xor_si16(4, 0), 4); + assert_eq!(xor_si16(1, 4), 5); + assert_eq!(xor_si16(4, 1), 5); + assert_eq!(xor_si16(2, 4), 6); + assert_eq!(xor_si16(4, 2), 6); + assert_eq!(xor_si16(3, 4), 7); + assert_eq!(xor_si16(4, 3), 7); + assert_eq!(xor_si16(-32767, -32547), 220); + assert_eq!(xor_si16(-32547, -32767), 220); + assert_eq!(xor_si16(-32768, -32547), 221); + assert_eq!(xor_si16(-32547, -32768), 221); + assert_eq!(xor_si16(4, 10486), 10482); + assert_eq!(xor_si16(10486, 4), 10482); + assert_eq!(xor_si16(2, 10486), 10484); + assert_eq!(xor_si16(10486, 2), 10484); + assert_eq!(xor_si16(3, 10486), 10485); + assert_eq!(xor_si16(10486, 3), 10485); + assert_eq!(xor_si16(0, 10486), 10486); + assert_eq!(xor_si16(10486, 0), 10486); + assert_eq!(xor_si16(1, 10486), 10487); + assert_eq!(xor_si16(10486, 1), 10487); + assert_eq!(xor_si16(16514, 32766), 16252); + assert_eq!(xor_si16(32766, 16514), 16252); + assert_eq!(xor_si16(16514, 32767), 16253); + assert_eq!(xor_si16(32767, 16514), 16253); + assert_eq!(xor_si16(2, 16514), 16512); + assert_eq!(xor_si16(16514, 2), 16512); + assert_eq!(xor_si16(3, 16514), 16513); + assert_eq!(xor_si16(16514, 3), 16513); + assert_eq!(xor_si16(0, 16514), 16514); + assert_eq!(xor_si16(16514, 0), 16514); + assert_eq!(xor_si16(1, 16514), 16515); + assert_eq!(xor_si16(16514, 1), 16515); + assert_eq!(xor_si16(4, 16514), 16518); + assert_eq!(xor_si16(16514, 4), 16518); + assert_eq!(xor_si16(10486, 32766), 22280); + assert_eq!(xor_si16(32766, 10486), 22280); + assert_eq!(xor_si16(10486, 32767), 22281); + assert_eq!(xor_si16(32767, 10486), 22281); + assert_eq!(xor_si16(10486, 16514), 26740); + assert_eq!(xor_si16(16514, 10486), 26740); + assert_eq!(xor_si16(4, 32766), 32762); + assert_eq!(xor_si16(32766, 4), 32762); + assert_eq!(xor_si16(4, 32767), 32763); + assert_eq!(xor_si16(32767, 4), 32763); + assert_eq!(xor_si16(2, 32766), 32764); + assert_eq!(xor_si16(3, 32767), 32764); + assert_eq!(xor_si16(32766, 2), 32764); + assert_eq!(xor_si16(32767, 3), 32764); + assert_eq!(xor_si16(2, 32767), 32765); + assert_eq!(xor_si16(3, 32766), 32765); + assert_eq!(xor_si16(32766, 3), 32765); + assert_eq!(xor_si16(32767, 2), 32765); + assert_eq!(xor_si16(0, 32766), 32766); + assert_eq!(xor_si16(1, 32767), 32766); + assert_eq!(xor_si16(32766, 0), 32766); + assert_eq!(xor_si16(32767, 1), 32766); + assert_eq!(xor_si16(0, 32767), 32767); + assert_eq!(xor_si16(1, 32766), 32767); + assert_eq!(xor_si16(32766, 1), 32767); + assert_eq!(xor_si16(32767, 0), 32767); + assert_eq!(xor_si32(-2147483648, 0), -2147483648); + assert_eq!(xor_si32(-2147483647, 1), -2147483648); + assert_eq!(xor_si32(0, -2147483648), -2147483648); + assert_eq!(xor_si32(1, -2147483647), -2147483648); + assert_eq!(xor_si32(-2147483648, 1), -2147483647); + assert_eq!(xor_si32(-2147483647, 0), -2147483647); + assert_eq!(xor_si32(0, -2147483647), -2147483647); + assert_eq!(xor_si32(1, -2147483648), -2147483647); + assert_eq!(xor_si32(-2147483648, 2), -2147483646); + assert_eq!(xor_si32(-2147483647, 3), -2147483646); + assert_eq!(xor_si32(2, -2147483648), -2147483646); + assert_eq!(xor_si32(3, -2147483647), -2147483646); + assert_eq!(xor_si32(-2147483648, 3), -2147483645); + assert_eq!(xor_si32(-2147483647, 2), -2147483645); + assert_eq!(xor_si32(2, -2147483647), -2147483645); + assert_eq!(xor_si32(3, -2147483648), -2147483645); + assert_eq!(xor_si32(-2147483648, 4), -2147483644); + assert_eq!(xor_si32(4, -2147483648), -2147483644); + assert_eq!(xor_si32(-2147483647, 4), -2147483643); + assert_eq!(xor_si32(4, -2147483647), -2147483643); + assert_eq!(xor_si32(-1713183800, 0), -1713183800); + assert_eq!(xor_si32(0, -1713183800), -1713183800); + assert_eq!(xor_si32(-1713183800, 1), -1713183799); + assert_eq!(xor_si32(1, -1713183800), -1713183799); + assert_eq!(xor_si32(-1713183800, 2), -1713183798); + assert_eq!(xor_si32(2, -1713183800), -1713183798); + assert_eq!(xor_si32(-1713183800, 3), -1713183797); + assert_eq!(xor_si32(3, -1713183800), -1713183797); + assert_eq!(xor_si32(-1713183800, 4), -1713183796); + assert_eq!(xor_si32(4, -1713183800), -1713183796); + assert_eq!(xor_si32(-1252582164, 4), -1252582168); + assert_eq!(xor_si32(4, -1252582164), -1252582168); + assert_eq!(xor_si32(-1252582164, 0), -1252582164); + assert_eq!(xor_si32(0, -1252582164), -1252582164); + assert_eq!(xor_si32(-1252582164, 1), -1252582163); + assert_eq!(xor_si32(1, -1252582164), -1252582163); + assert_eq!(xor_si32(-1252582164, 2), -1252582162); + assert_eq!(xor_si32(2, -1252582164), -1252582162); + assert_eq!(xor_si32(-1252582164, 3), -1252582161); + assert_eq!(xor_si32(3, -1252582164), -1252582161); + assert_eq!(xor_si32(-1035405763, 2147483647), -1112077886); + assert_eq!(xor_si32(2147483647, -1035405763), -1112077886); + assert_eq!(xor_si32(-1035405763, 2147483646), -1112077885); + assert_eq!(xor_si32(2147483646, -1035405763), -1112077885); + assert_eq!(xor_si32(-1035405763, 4), -1035405767); + assert_eq!(xor_si32(4, -1035405763), -1035405767); + assert_eq!(xor_si32(-1035405763, 1), -1035405764); + assert_eq!(xor_si32(1, -1035405763), -1035405764); + assert_eq!(xor_si32(-1035405763, 0), -1035405763); + assert_eq!(xor_si32(0, -1035405763), -1035405763); + assert_eq!(xor_si32(-1035405763, 3), -1035405762); + assert_eq!(xor_si32(3, -1035405763), -1035405762); + assert_eq!(xor_si32(-1035405763, 2), -1035405761); + assert_eq!(xor_si32(2, -1035405763), -1035405761); + assert_eq!(xor_si32(-1252582164, 2147483646), -894901486); + assert_eq!(xor_si32(2147483646, -1252582164), -894901486); + assert_eq!(xor_si32(-1252582164, 2147483647), -894901485); + assert_eq!(xor_si32(2147483647, -1252582164), -894901485); + assert_eq!(xor_si32(-1713183800, 2147483646), -434299850); + assert_eq!(xor_si32(2147483646, -1713183800), -434299850); + assert_eq!(xor_si32(-1713183800, 2147483647), -434299849); + assert_eq!(xor_si32(2147483647, -1713183800), -434299849); + assert_eq!(xor_si32(-2147483648, 2147483646), -2); + assert_eq!(xor_si32(-2147483647, 2147483647), -2); + assert_eq!(xor_si32(2147483646, -2147483648), -2); + assert_eq!(xor_si32(2147483647, -2147483647), -2); + assert_eq!(xor_si32(-2147483648, 2147483647), -1); + assert_eq!(xor_si32(-2147483647, 2147483646), -1); + assert_eq!(xor_si32(2147483646, -2147483647), -1); + assert_eq!(xor_si32(2147483647, -2147483648), -1); + assert_eq!(xor_si32(-2147483648, -2147483648), 0); + assert_eq!(xor_si32(-2147483647, -2147483647), 0); + assert_eq!(xor_si32(-1713183800, -1713183800), 0); + assert_eq!(xor_si32(-1252582164, -1252582164), 0); + assert_eq!(xor_si32(-1035405763, -1035405763), 0); + assert_eq!(xor_si32(0, 0), 0); + assert_eq!(xor_si32(1, 1), 0); + assert_eq!(xor_si32(2, 2), 0); + assert_eq!(xor_si32(3, 3), 0); + assert_eq!(xor_si32(4, 4), 0); + assert_eq!(xor_si32(2147483646, 2147483646), 0); + assert_eq!(xor_si32(2147483647, 2147483647), 0); + assert_eq!(xor_si32(-2147483648, -2147483647), 1); + assert_eq!(xor_si32(-2147483647, -2147483648), 1); + assert_eq!(xor_si32(0, 1), 1); + assert_eq!(xor_si32(1, 0), 1); + assert_eq!(xor_si32(2, 3), 1); + assert_eq!(xor_si32(3, 2), 1); + assert_eq!(xor_si32(2147483646, 2147483647), 1); + assert_eq!(xor_si32(2147483647, 2147483646), 1); + assert_eq!(xor_si32(0, 2), 2); + assert_eq!(xor_si32(1, 3), 2); + assert_eq!(xor_si32(2, 0), 2); + assert_eq!(xor_si32(3, 1), 2); + assert_eq!(xor_si32(0, 3), 3); + assert_eq!(xor_si32(1, 2), 3); + assert_eq!(xor_si32(2, 1), 3); + assert_eq!(xor_si32(3, 0), 3); + assert_eq!(xor_si32(0, 4), 4); + assert_eq!(xor_si32(4, 0), 4); + assert_eq!(xor_si32(1, 4), 5); + assert_eq!(xor_si32(4, 1), 5); + assert_eq!(xor_si32(2, 4), 6); + assert_eq!(xor_si32(4, 2), 6); + assert_eq!(xor_si32(3, 4), 7); + assert_eq!(xor_si32(4, 3), 7); + assert_eq!(xor_si32(-2147483648, -1713183800), 434299848); + assert_eq!(xor_si32(-1713183800, -2147483648), 434299848); + assert_eq!(xor_si32(-2147483647, -1713183800), 434299849); + assert_eq!(xor_si32(-1713183800, -2147483647), 434299849); + assert_eq!(xor_si32(-1713183800, -1252582164), 750124836); + assert_eq!(xor_si32(-1252582164, -1713183800), 750124836); + assert_eq!(xor_si32(-2147483648, -1252582164), 894901484); + assert_eq!(xor_si32(-1252582164, -2147483648), 894901484); + assert_eq!(xor_si32(-2147483647, -1252582164), 894901485); + assert_eq!(xor_si32(-1252582164, -2147483647), 894901485); + assert_eq!(xor_si32(-2147483647, -1035405763), 1112077884); + assert_eq!(xor_si32(-1035405763, -2147483647), 1112077884); + assert_eq!(xor_si32(-2147483648, -1035405763), 1112077885); + assert_eq!(xor_si32(-1035405763, -2147483648), 1112077885); + assert_eq!(xor_si32(-1713183800, -1035405763), 1537873397); + assert_eq!(xor_si32(-1035405763, -1713183800), 1537873397); + assert_eq!(xor_si32(-1252582164, -1035405763), 1998580433); + assert_eq!(xor_si32(-1035405763, -1252582164), 1998580433); + assert_eq!(xor_si32(4, 2147483646), 2147483642); + assert_eq!(xor_si32(2147483646, 4), 2147483642); + assert_eq!(xor_si32(4, 2147483647), 2147483643); + assert_eq!(xor_si32(2147483647, 4), 2147483643); + assert_eq!(xor_si32(2, 2147483646), 2147483644); + assert_eq!(xor_si32(3, 2147483647), 2147483644); + assert_eq!(xor_si32(2147483646, 2), 2147483644); + assert_eq!(xor_si32(2147483647, 3), 2147483644); + assert_eq!(xor_si32(2, 2147483647), 2147483645); + assert_eq!(xor_si32(3, 2147483646), 2147483645); + assert_eq!(xor_si32(2147483646, 3), 2147483645); + assert_eq!(xor_si32(2147483647, 2), 2147483645); + assert_eq!(xor_si32(0, 2147483646), 2147483646); + assert_eq!(xor_si32(1, 2147483647), 2147483646); + assert_eq!(xor_si32(2147483646, 0), 2147483646); + assert_eq!(xor_si32(2147483647, 1), 2147483646); + assert_eq!(xor_si32(0, 2147483647), 2147483647); + assert_eq!(xor_si32(1, 2147483646), 2147483647); + assert_eq!(xor_si32(2147483646, 1), 2147483647); + assert_eq!(xor_si32(2147483647, 0), 2147483647); + assert_eq!(xor_si64(-9223372036854775808, 0), -9223372036854775808); + assert_eq!(xor_si64(-9223372036854775807, 1), -9223372036854775808); + assert_eq!(xor_si64(0, -9223372036854775808), -9223372036854775808); + assert_eq!(xor_si64(1, -9223372036854775807), -9223372036854775808); + assert_eq!(xor_si64(-9223372036854775808, 1), -9223372036854775807); + assert_eq!(xor_si64(-9223372036854775807, 0), -9223372036854775807); + assert_eq!(xor_si64(0, -9223372036854775807), -9223372036854775807); + assert_eq!(xor_si64(1, -9223372036854775808), -9223372036854775807); + assert_eq!(xor_si64(-9223372036854775808, 2), -9223372036854775806); + assert_eq!(xor_si64(-9223372036854775807, 3), -9223372036854775806); + assert_eq!(xor_si64(2, -9223372036854775808), -9223372036854775806); + assert_eq!(xor_si64(3, -9223372036854775807), -9223372036854775806); + assert_eq!(xor_si64(-9223372036854775808, 3), -9223372036854775805); + assert_eq!(xor_si64(-9223372036854775807, 2), -9223372036854775805); + assert_eq!(xor_si64(2, -9223372036854775807), -9223372036854775805); + assert_eq!(xor_si64(3, -9223372036854775808), -9223372036854775805); + assert_eq!(xor_si64(-9223372036854775808, 4), -9223372036854775804); + assert_eq!(xor_si64(4, -9223372036854775808), -9223372036854775804); + assert_eq!(xor_si64(-9223372036854775807, 4), -9223372036854775803); + assert_eq!(xor_si64(4, -9223372036854775807), -9223372036854775803); + assert_eq!( + xor_si64(-1328271339354574848, 9223372036854775806), + -7895100697500200962 + ); + assert_eq!( + xor_si64(9223372036854775806, -1328271339354574848), + -7895100697500200962 + ); + assert_eq!( + xor_si64(-1328271339354574848, 9223372036854775807), + -7895100697500200961 + ); + assert_eq!( + xor_si64(9223372036854775807, -1328271339354574848), + -7895100697500200961 + ); + assert_eq!( + xor_si64(-1741927215160008704, 9223372036854775806), + -7481444821694767106 + ); + assert_eq!( + xor_si64(9223372036854775806, -1741927215160008704), + -7481444821694767106 + ); + assert_eq!( + xor_si64(-1741927215160008704, 9223372036854775807), + -7481444821694767105 + ); + assert_eq!( + xor_si64(9223372036854775807, -1741927215160008704), + -7481444821694767105 + ); + assert_eq!( + xor_si64(-1328271339354574848, 5577148965131116544), + -6847992414814875648 + ); + assert_eq!( + xor_si64(5577148965131116544, -1328271339354574848), + -6847992414814875648 + ); + assert_eq!( + xor_si64(-1741927215160008704, 5577148965131116544), + -6145886261021343744 + ); + assert_eq!( + xor_si64(5577148965131116544, -1741927215160008704), + -6145886261021343744 + ); + assert_eq!( + xor_si64(-9223372036854775808, 5577148965131116544), + -3646223071723659264 + ); + assert_eq!( + xor_si64(5577148965131116544, -9223372036854775808), + -3646223071723659264 + ); + assert_eq!( + xor_si64(-9223372036854775807, 5577148965131116544), + -3646223071723659263 + ); + assert_eq!( + xor_si64(5577148965131116544, -9223372036854775807), + -3646223071723659263 + ); + assert_eq!(xor_si64(-1741927215160008704, 0), -1741927215160008704); + assert_eq!(xor_si64(0, -1741927215160008704), -1741927215160008704); + assert_eq!(xor_si64(-1741927215160008704, 1), -1741927215160008703); + assert_eq!(xor_si64(1, -1741927215160008704), -1741927215160008703); + assert_eq!(xor_si64(-1741927215160008704, 2), -1741927215160008702); + assert_eq!(xor_si64(2, -1741927215160008704), -1741927215160008702); + assert_eq!(xor_si64(-1741927215160008704, 3), -1741927215160008701); + assert_eq!(xor_si64(3, -1741927215160008704), -1741927215160008701); + assert_eq!(xor_si64(-1741927215160008704, 4), -1741927215160008700); + assert_eq!(xor_si64(4, -1741927215160008704), -1741927215160008700); + assert_eq!(xor_si64(-1328271339354574848, 0), -1328271339354574848); + assert_eq!(xor_si64(0, -1328271339354574848), -1328271339354574848); + assert_eq!(xor_si64(-1328271339354574848, 1), -1328271339354574847); + assert_eq!(xor_si64(1, -1328271339354574848), -1328271339354574847); + assert_eq!(xor_si64(-1328271339354574848, 2), -1328271339354574846); + assert_eq!(xor_si64(2, -1328271339354574848), -1328271339354574846); + assert_eq!(xor_si64(-1328271339354574848, 3), -1328271339354574845); + assert_eq!(xor_si64(3, -1328271339354574848), -1328271339354574845); + assert_eq!(xor_si64(-1328271339354574848, 4), -1328271339354574844); + assert_eq!(xor_si64(4, -1328271339354574848), -1328271339354574844); + assert_eq!(xor_si64(-9223372036854775808, 9223372036854775806), -2); + assert_eq!(xor_si64(-9223372036854775807, 9223372036854775807), -2); + assert_eq!(xor_si64(9223372036854775806, -9223372036854775808), -2); + assert_eq!(xor_si64(9223372036854775807, -9223372036854775807), -2); + assert_eq!(xor_si64(-9223372036854775808, 9223372036854775807), -1); + assert_eq!(xor_si64(-9223372036854775807, 9223372036854775806), -1); + assert_eq!(xor_si64(9223372036854775806, -9223372036854775807), -1); + assert_eq!(xor_si64(9223372036854775807, -9223372036854775808), -1); + assert_eq!(xor_si64(-9223372036854775808, -9223372036854775808), 0); + assert_eq!(xor_si64(-9223372036854775807, -9223372036854775807), 0); + assert_eq!(xor_si64(-1741927215160008704, -1741927215160008704), 0); + assert_eq!(xor_si64(-1328271339354574848, -1328271339354574848), 0); + assert_eq!(xor_si64(0, 0), 0); + assert_eq!(xor_si64(1, 1), 0); + assert_eq!(xor_si64(2, 2), 0); + assert_eq!(xor_si64(3, 3), 0); + assert_eq!(xor_si64(4, 4), 0); + assert_eq!(xor_si64(5577148965131116544, 5577148965131116544), 0); + assert_eq!(xor_si64(9223372036854775806, 9223372036854775806), 0); + assert_eq!(xor_si64(9223372036854775807, 9223372036854775807), 0); + assert_eq!(xor_si64(-9223372036854775808, -9223372036854775807), 1); + assert_eq!(xor_si64(-9223372036854775807, -9223372036854775808), 1); + assert_eq!(xor_si64(0, 1), 1); + assert_eq!(xor_si64(1, 0), 1); + assert_eq!(xor_si64(2, 3), 1); + assert_eq!(xor_si64(3, 2), 1); + assert_eq!(xor_si64(9223372036854775806, 9223372036854775807), 1); + assert_eq!(xor_si64(9223372036854775807, 9223372036854775806), 1); + assert_eq!(xor_si64(0, 2), 2); + assert_eq!(xor_si64(1, 3), 2); + assert_eq!(xor_si64(2, 0), 2); + assert_eq!(xor_si64(3, 1), 2); + assert_eq!(xor_si64(0, 3), 3); + assert_eq!(xor_si64(1, 2), 3); + assert_eq!(xor_si64(2, 1), 3); + assert_eq!(xor_si64(3, 0), 3); + assert_eq!(xor_si64(0, 4), 4); + assert_eq!(xor_si64(4, 0), 4); + assert_eq!(xor_si64(1, 4), 5); + assert_eq!(xor_si64(4, 1), 5); + assert_eq!(xor_si64(2, 4), 6); + assert_eq!(xor_si64(4, 2), 6); + assert_eq!(xor_si64(3, 4), 7); + assert_eq!(xor_si64(4, 3), 7); + assert_eq!( + xor_si64(-1741927215160008704, -1328271339354574848), + 739265629478801408 + ); + assert_eq!( + xor_si64(-1328271339354574848, -1741927215160008704), + 739265629478801408 + ); + assert_eq!( + xor_si64(5577148965131116544, 9223372036854775806), + 3646223071723659262 + ); + assert_eq!( + xor_si64(9223372036854775806, 5577148965131116544), + 3646223071723659262 + ); + assert_eq!( + xor_si64(5577148965131116544, 9223372036854775807), + 3646223071723659263 + ); + assert_eq!( + xor_si64(9223372036854775807, 5577148965131116544), + 3646223071723659263 + ); + assert_eq!(xor_si64(0, 5577148965131116544), 5577148965131116544); + assert_eq!(xor_si64(5577148965131116544, 0), 5577148965131116544); + assert_eq!(xor_si64(1, 5577148965131116544), 5577148965131116545); + assert_eq!(xor_si64(5577148965131116544, 1), 5577148965131116545); + assert_eq!(xor_si64(2, 5577148965131116544), 5577148965131116546); + assert_eq!(xor_si64(5577148965131116544, 2), 5577148965131116546); + assert_eq!(xor_si64(3, 5577148965131116544), 5577148965131116547); + assert_eq!(xor_si64(5577148965131116544, 3), 5577148965131116547); + assert_eq!(xor_si64(4, 5577148965131116544), 5577148965131116548); + assert_eq!(xor_si64(5577148965131116544, 4), 5577148965131116548); + assert_eq!( + xor_si64(-9223372036854775808, -1741927215160008704), + 7481444821694767104 + ); + assert_eq!( + xor_si64(-1741927215160008704, -9223372036854775808), + 7481444821694767104 + ); + assert_eq!( + xor_si64(-9223372036854775807, -1741927215160008704), + 7481444821694767105 + ); + assert_eq!( + xor_si64(-1741927215160008704, -9223372036854775807), + 7481444821694767105 + ); + assert_eq!( + xor_si64(-9223372036854775808, -1328271339354574848), + 7895100697500200960 + ); + assert_eq!( + xor_si64(-1328271339354574848, -9223372036854775808), + 7895100697500200960 + ); + assert_eq!( + xor_si64(-9223372036854775807, -1328271339354574848), + 7895100697500200961 + ); + assert_eq!( + xor_si64(-1328271339354574848, -9223372036854775807), + 7895100697500200961 + ); + assert_eq!(xor_si64(4, 9223372036854775806), 9223372036854775802); + assert_eq!(xor_si64(9223372036854775806, 4), 9223372036854775802); + assert_eq!(xor_si64(4, 9223372036854775807), 9223372036854775803); + assert_eq!(xor_si64(9223372036854775807, 4), 9223372036854775803); + assert_eq!(xor_si64(2, 9223372036854775806), 9223372036854775804); + assert_eq!(xor_si64(3, 9223372036854775807), 9223372036854775804); + assert_eq!(xor_si64(9223372036854775806, 2), 9223372036854775804); + assert_eq!(xor_si64(9223372036854775807, 3), 9223372036854775804); + assert_eq!(xor_si64(2, 9223372036854775807), 9223372036854775805); + assert_eq!(xor_si64(3, 9223372036854775806), 9223372036854775805); + assert_eq!(xor_si64(9223372036854775806, 3), 9223372036854775805); + assert_eq!(xor_si64(9223372036854775807, 2), 9223372036854775805); + assert_eq!(xor_si64(0, 9223372036854775806), 9223372036854775806); + assert_eq!(xor_si64(1, 9223372036854775807), 9223372036854775806); + assert_eq!(xor_si64(9223372036854775806, 0), 9223372036854775806); + assert_eq!(xor_si64(9223372036854775807, 1), 9223372036854775806); + assert_eq!(xor_si64(0, 9223372036854775807), 9223372036854775807); + assert_eq!(xor_si64(1, 9223372036854775806), 9223372036854775807); + assert_eq!(xor_si64(9223372036854775806, 1), 9223372036854775807); + assert_eq!(xor_si64(9223372036854775807, 0), 9223372036854775807); + assert_eq!(xor_si8(-128, 0), -128); + assert_eq!(xor_si8(-127, 1), -128); + assert_eq!(xor_si8(0, -128), -128); + assert_eq!(xor_si8(1, -127), -128); + assert_eq!(xor_si8(-128, 1), -127); + assert_eq!(xor_si8(-127, 0), -127); + assert_eq!(xor_si8(0, -127), -127); + assert_eq!(xor_si8(1, -128), -127); + assert_eq!(xor_si8(-128, 2), -126); + assert_eq!(xor_si8(-127, 3), -126); + assert_eq!(xor_si8(2, -128), -126); + assert_eq!(xor_si8(3, -127), -126); + assert_eq!(xor_si8(-128, 3), -125); + assert_eq!(xor_si8(-127, 2), -125); + assert_eq!(xor_si8(2, -127), -125); + assert_eq!(xor_si8(3, -128), -125); + assert_eq!(xor_si8(-128, 4), -124); + assert_eq!(xor_si8(4, -128), -124); + assert_eq!(xor_si8(-127, 4), -123); + assert_eq!(xor_si8(4, -127), -123); + assert_eq!(xor_si8(-128, 16), -112); + assert_eq!(xor_si8(16, -128), -112); + assert_eq!(xor_si8(-127, 16), -111); + assert_eq!(xor_si8(16, -127), -111); + assert_eq!(xor_si8(-128, 126), -2); + assert_eq!(xor_si8(-127, 127), -2); + assert_eq!(xor_si8(126, -128), -2); + assert_eq!(xor_si8(127, -127), -2); + assert_eq!(xor_si8(-128, 127), -1); + assert_eq!(xor_si8(-127, 126), -1); + assert_eq!(xor_si8(126, -127), -1); + assert_eq!(xor_si8(127, -128), -1); + assert_eq!(xor_si8(-128, -128), 0); + assert_eq!(xor_si8(-127, -127), 0); + assert_eq!(xor_si8(0, 0), 0); + assert_eq!(xor_si8(1, 1), 0); + assert_eq!(xor_si8(2, 2), 0); + assert_eq!(xor_si8(3, 3), 0); + assert_eq!(xor_si8(4, 4), 0); + assert_eq!(xor_si8(16, 16), 0); + assert_eq!(xor_si8(126, 126), 0); + assert_eq!(xor_si8(127, 127), 0); + assert_eq!(xor_si8(-128, -127), 1); + assert_eq!(xor_si8(-127, -128), 1); + assert_eq!(xor_si8(0, 1), 1); + assert_eq!(xor_si8(1, 0), 1); + assert_eq!(xor_si8(2, 3), 1); + assert_eq!(xor_si8(3, 2), 1); + assert_eq!(xor_si8(126, 127), 1); + assert_eq!(xor_si8(127, 126), 1); + assert_eq!(xor_si8(0, 2), 2); + assert_eq!(xor_si8(1, 3), 2); + assert_eq!(xor_si8(2, 0), 2); + assert_eq!(xor_si8(3, 1), 2); + assert_eq!(xor_si8(0, 3), 3); + assert_eq!(xor_si8(1, 2), 3); + assert_eq!(xor_si8(2, 1), 3); + assert_eq!(xor_si8(3, 0), 3); + assert_eq!(xor_si8(0, 4), 4); + assert_eq!(xor_si8(4, 0), 4); + assert_eq!(xor_si8(1, 4), 5); + assert_eq!(xor_si8(4, 1), 5); + assert_eq!(xor_si8(2, 4), 6); + assert_eq!(xor_si8(4, 2), 6); + assert_eq!(xor_si8(3, 4), 7); + assert_eq!(xor_si8(4, 3), 7); + assert_eq!(xor_si8(0, 16), 16); + assert_eq!(xor_si8(16, 0), 16); + assert_eq!(xor_si8(1, 16), 17); + assert_eq!(xor_si8(16, 1), 17); + assert_eq!(xor_si8(2, 16), 18); + assert_eq!(xor_si8(16, 2), 18); + assert_eq!(xor_si8(3, 16), 19); + assert_eq!(xor_si8(16, 3), 19); + assert_eq!(xor_si8(4, 16), 20); + assert_eq!(xor_si8(16, 4), 20); + assert_eq!(xor_si8(16, 126), 110); + assert_eq!(xor_si8(126, 16), 110); + assert_eq!(xor_si8(16, 127), 111); + assert_eq!(xor_si8(127, 16), 111); + assert_eq!(xor_si8(4, 126), 122); + assert_eq!(xor_si8(126, 4), 122); + assert_eq!(xor_si8(4, 127), 123); + assert_eq!(xor_si8(127, 4), 123); + assert_eq!(xor_si8(2, 126), 124); + assert_eq!(xor_si8(3, 127), 124); + assert_eq!(xor_si8(126, 2), 124); + assert_eq!(xor_si8(127, 3), 124); + assert_eq!(xor_si8(2, 127), 125); + assert_eq!(xor_si8(3, 126), 125); + assert_eq!(xor_si8(126, 3), 125); + assert_eq!(xor_si8(127, 2), 125); + assert_eq!(xor_si8(0, 126), 126); + assert_eq!(xor_si8(1, 127), 126); + assert_eq!(xor_si8(126, 0), 126); + assert_eq!(xor_si8(127, 1), 126); + assert_eq!(xor_si8(0, 127), 127); + assert_eq!(xor_si8(1, 126), 127); + assert_eq!(xor_si8(126, 1), 127); + assert_eq!(xor_si8(127, 0), 127); + assert_eq!(xor_ui16(0, 0), 0); + assert_eq!(xor_ui16(1, 1), 0); + assert_eq!(xor_ui16(2, 2), 0); + assert_eq!(xor_ui16(3, 3), 0); + assert_eq!(xor_ui16(4, 4), 0); + assert_eq!(xor_ui16(1717, 1717), 0); + assert_eq!(xor_ui16(17988, 17988), 0); + assert_eq!(xor_ui16(65096, 65096), 0); + assert_eq!(xor_ui16(65534, 65534), 0); + assert_eq!(xor_ui16(65535, 65535), 0); + assert_eq!(xor_ui16(0, 1), 1); + assert_eq!(xor_ui16(1, 0), 1); + assert_eq!(xor_ui16(2, 3), 1); + assert_eq!(xor_ui16(3, 2), 1); + assert_eq!(xor_ui16(65534, 65535), 1); + assert_eq!(xor_ui16(65535, 65534), 1); + assert_eq!(xor_ui16(0, 2), 2); + assert_eq!(xor_ui16(1, 3), 2); + assert_eq!(xor_ui16(2, 0), 2); + assert_eq!(xor_ui16(3, 1), 2); + assert_eq!(xor_ui16(0, 3), 3); + assert_eq!(xor_ui16(1, 2), 3); + assert_eq!(xor_ui16(2, 1), 3); + assert_eq!(xor_ui16(3, 0), 3); + assert_eq!(xor_ui16(0, 4), 4); + assert_eq!(xor_ui16(4, 0), 4); + assert_eq!(xor_ui16(1, 4), 5); + assert_eq!(xor_ui16(4, 1), 5); + assert_eq!(xor_ui16(2, 4), 6); + assert_eq!(xor_ui16(4, 2), 6); + assert_eq!(xor_ui16(3, 4), 7); + assert_eq!(xor_ui16(4, 3), 7); + assert_eq!(xor_ui16(65096, 65534), 438); + assert_eq!(xor_ui16(65534, 65096), 438); + assert_eq!(xor_ui16(65096, 65535), 439); + assert_eq!(xor_ui16(65535, 65096), 439); + assert_eq!(xor_ui16(4, 1717), 1713); + assert_eq!(xor_ui16(1717, 4), 1713); + assert_eq!(xor_ui16(1, 1717), 1716); + assert_eq!(xor_ui16(1717, 1), 1716); + assert_eq!(xor_ui16(0, 1717), 1717); + assert_eq!(xor_ui16(1717, 0), 1717); + assert_eq!(xor_ui16(3, 1717), 1718); + assert_eq!(xor_ui16(1717, 3), 1718); + assert_eq!(xor_ui16(2, 1717), 1719); + assert_eq!(xor_ui16(1717, 2), 1719); + assert_eq!(xor_ui16(1717, 17988), 16625); + assert_eq!(xor_ui16(17988, 1717), 16625); + assert_eq!(xor_ui16(4, 17988), 17984); + assert_eq!(xor_ui16(17988, 4), 17984); + assert_eq!(xor_ui16(0, 17988), 17988); + assert_eq!(xor_ui16(17988, 0), 17988); + assert_eq!(xor_ui16(1, 17988), 17989); + assert_eq!(xor_ui16(17988, 1), 17989); + assert_eq!(xor_ui16(2, 17988), 17990); + assert_eq!(xor_ui16(17988, 2), 17990); + assert_eq!(xor_ui16(3, 17988), 17991); + assert_eq!(xor_ui16(17988, 3), 17991); + assert_eq!(xor_ui16(17988, 65096), 47116); + assert_eq!(xor_ui16(65096, 17988), 47116); + assert_eq!(xor_ui16(17988, 65534), 47546); + assert_eq!(xor_ui16(65534, 17988), 47546); + assert_eq!(xor_ui16(17988, 65535), 47547); + assert_eq!(xor_ui16(65535, 17988), 47547); + assert_eq!(xor_ui16(1717, 65096), 63741); + assert_eq!(xor_ui16(65096, 1717), 63741); + assert_eq!(xor_ui16(1717, 65535), 63818); + assert_eq!(xor_ui16(65535, 1717), 63818); + assert_eq!(xor_ui16(1717, 65534), 63819); + assert_eq!(xor_ui16(65534, 1717), 63819); + assert_eq!(xor_ui16(0, 65096), 65096); + assert_eq!(xor_ui16(65096, 0), 65096); + assert_eq!(xor_ui16(1, 65096), 65097); + assert_eq!(xor_ui16(65096, 1), 65097); + assert_eq!(xor_ui16(2, 65096), 65098); + assert_eq!(xor_ui16(65096, 2), 65098); + assert_eq!(xor_ui16(3, 65096), 65099); + assert_eq!(xor_ui16(65096, 3), 65099); + assert_eq!(xor_ui16(4, 65096), 65100); + assert_eq!(xor_ui16(65096, 4), 65100); + assert_eq!(xor_ui16(4, 65534), 65530); + assert_eq!(xor_ui16(65534, 4), 65530); + assert_eq!(xor_ui16(4, 65535), 65531); + assert_eq!(xor_ui16(65535, 4), 65531); + assert_eq!(xor_ui16(2, 65534), 65532); + assert_eq!(xor_ui16(3, 65535), 65532); + assert_eq!(xor_ui16(65534, 2), 65532); + assert_eq!(xor_ui16(65535, 3), 65532); + assert_eq!(xor_ui16(2, 65535), 65533); + assert_eq!(xor_ui16(3, 65534), 65533); + assert_eq!(xor_ui16(65534, 3), 65533); + assert_eq!(xor_ui16(65535, 2), 65533); + assert_eq!(xor_ui16(0, 65534), 65534); + assert_eq!(xor_ui16(1, 65535), 65534); + assert_eq!(xor_ui16(65534, 0), 65534); + assert_eq!(xor_ui16(65535, 1), 65534); + assert_eq!(xor_ui16(0, 65535), 65535); + assert_eq!(xor_ui16(1, 65534), 65535); + assert_eq!(xor_ui16(65534, 1), 65535); + assert_eq!(xor_ui16(65535, 0), 65535); + assert_eq!(xor_ui32(0, 0), 0); + assert_eq!(xor_ui32(1, 1), 0); + assert_eq!(xor_ui32(2, 2), 0); + assert_eq!(xor_ui32(3, 3), 0); + assert_eq!(xor_ui32(4, 4), 0); + assert_eq!(xor_ui32(2119154652, 2119154652), 0); + assert_eq!(xor_ui32(3002788344, 3002788344), 0); + assert_eq!(xor_ui32(3482297128, 3482297128), 0); + assert_eq!(xor_ui32(4294967294, 4294967294), 0); + assert_eq!(xor_ui32(4294967295, 4294967295), 0); + assert_eq!(xor_ui32(0, 1), 1); + assert_eq!(xor_ui32(1, 0), 1); + assert_eq!(xor_ui32(2, 3), 1); + assert_eq!(xor_ui32(3, 2), 1); + assert_eq!(xor_ui32(4294967294, 4294967295), 1); + assert_eq!(xor_ui32(4294967295, 4294967294), 1); + assert_eq!(xor_ui32(0, 2), 2); + assert_eq!(xor_ui32(1, 3), 2); + assert_eq!(xor_ui32(2, 0), 2); + assert_eq!(xor_ui32(3, 1), 2); + assert_eq!(xor_ui32(0, 3), 3); + assert_eq!(xor_ui32(1, 2), 3); + assert_eq!(xor_ui32(2, 1), 3); + assert_eq!(xor_ui32(3, 0), 3); + assert_eq!(xor_ui32(0, 4), 4); + assert_eq!(xor_ui32(4, 0), 4); + assert_eq!(xor_ui32(1, 4), 5); + assert_eq!(xor_ui32(4, 1), 5); + assert_eq!(xor_ui32(2, 4), 6); + assert_eq!(xor_ui32(4, 2), 6); + assert_eq!(xor_ui32(3, 4), 7); + assert_eq!(xor_ui32(4, 3), 7); + assert_eq!(xor_ui32(3482297128, 4294967294), 812670166); + assert_eq!(xor_ui32(4294967294, 3482297128), 812670166); + assert_eq!(xor_ui32(3482297128, 4294967295), 812670167); + assert_eq!(xor_ui32(4294967295, 3482297128), 812670167); + assert_eq!(xor_ui32(3002788344, 4294967294), 1292178950); + assert_eq!(xor_ui32(4294967294, 3002788344), 1292178950); + assert_eq!(xor_ui32(3002788344, 4294967295), 1292178951); + assert_eq!(xor_ui32(4294967295, 3002788344), 1292178951); + assert_eq!(xor_ui32(3002788344, 3482297128), 2104838864); + assert_eq!(xor_ui32(3482297128, 3002788344), 2104838864); + assert_eq!(xor_ui32(4, 2119154652), 2119154648); + assert_eq!(xor_ui32(2119154652, 4), 2119154648); + assert_eq!(xor_ui32(0, 2119154652), 2119154652); + assert_eq!(xor_ui32(2119154652, 0), 2119154652); + assert_eq!(xor_ui32(1, 2119154652), 2119154653); + assert_eq!(xor_ui32(2119154652, 1), 2119154653); + assert_eq!(xor_ui32(2, 2119154652), 2119154654); + assert_eq!(xor_ui32(2119154652, 2), 2119154654); + assert_eq!(xor_ui32(3, 2119154652), 2119154655); + assert_eq!(xor_ui32(2119154652, 3), 2119154655); + assert_eq!(xor_ui32(2119154652, 4294967294), 2175812642); + assert_eq!(xor_ui32(4294967294, 2119154652), 2175812642); + assert_eq!(xor_ui32(2119154652, 4294967295), 2175812643); + assert_eq!(xor_ui32(4294967295, 2119154652), 2175812643); + assert_eq!(xor_ui32(2119154652, 3482297128), 2982156532); + assert_eq!(xor_ui32(3482297128, 2119154652), 2982156532); + assert_eq!(xor_ui32(0, 3002788344), 3002788344); + assert_eq!(xor_ui32(3002788344, 0), 3002788344); + assert_eq!(xor_ui32(1, 3002788344), 3002788345); + assert_eq!(xor_ui32(3002788344, 1), 3002788345); + assert_eq!(xor_ui32(2, 3002788344), 3002788346); + assert_eq!(xor_ui32(3002788344, 2), 3002788346); + assert_eq!(xor_ui32(3, 3002788344), 3002788347); + assert_eq!(xor_ui32(3002788344, 3), 3002788347); + assert_eq!(xor_ui32(4, 3002788344), 3002788348); + assert_eq!(xor_ui32(3002788344, 4), 3002788348); + assert_eq!(xor_ui32(2119154652, 3002788344), 3434435108); + assert_eq!(xor_ui32(3002788344, 2119154652), 3434435108); + assert_eq!(xor_ui32(0, 3482297128), 3482297128); + assert_eq!(xor_ui32(3482297128, 0), 3482297128); + assert_eq!(xor_ui32(1, 3482297128), 3482297129); + assert_eq!(xor_ui32(3482297128, 1), 3482297129); + assert_eq!(xor_ui32(2, 3482297128), 3482297130); + assert_eq!(xor_ui32(3482297128, 2), 3482297130); + assert_eq!(xor_ui32(3, 3482297128), 3482297131); + assert_eq!(xor_ui32(3482297128, 3), 3482297131); + assert_eq!(xor_ui32(4, 3482297128), 3482297132); + assert_eq!(xor_ui32(3482297128, 4), 3482297132); + assert_eq!(xor_ui32(4, 4294967294), 4294967290); + assert_eq!(xor_ui32(4294967294, 4), 4294967290); + assert_eq!(xor_ui32(4, 4294967295), 4294967291); + assert_eq!(xor_ui32(4294967295, 4), 4294967291); + assert_eq!(xor_ui32(2, 4294967294), 4294967292); + assert_eq!(xor_ui32(3, 4294967295), 4294967292); + assert_eq!(xor_ui32(4294967294, 2), 4294967292); + assert_eq!(xor_ui32(4294967295, 3), 4294967292); + assert_eq!(xor_ui32(2, 4294967295), 4294967293); + assert_eq!(xor_ui32(3, 4294967294), 4294967293); + assert_eq!(xor_ui32(4294967294, 3), 4294967293); + assert_eq!(xor_ui32(4294967295, 2), 4294967293); + assert_eq!(xor_ui32(0, 4294967294), 4294967294); + assert_eq!(xor_ui32(1, 4294967295), 4294967294); + assert_eq!(xor_ui32(4294967294, 0), 4294967294); + assert_eq!(xor_ui32(4294967295, 1), 4294967294); + assert_eq!(xor_ui32(0, 4294967295), 4294967295); + assert_eq!(xor_ui32(1, 4294967294), 4294967295); + assert_eq!(xor_ui32(4294967294, 1), 4294967295); + assert_eq!(xor_ui32(4294967295, 0), 4294967295); + assert_eq!(xor_ui64(0, 0), 0); + assert_eq!(xor_ui64(1, 1), 0); + assert_eq!(xor_ui64(2, 2), 0); + assert_eq!(xor_ui64(3, 3), 0); + assert_eq!(xor_ui64(4, 4), 0); + assert_eq!(xor_ui64(191084152064409600, 191084152064409600), 0); + assert_eq!(xor_ui64(11015955194427482112, 11015955194427482112), 0); + assert_eq!(xor_ui64(16990600415051759616, 16990600415051759616), 0); + assert_eq!(xor_ui64(18446744073709551614, 18446744073709551614), 0); + assert_eq!(xor_ui64(18446744073709551615, 18446744073709551615), 0); + assert_eq!(xor_ui64(0, 1), 1); + assert_eq!(xor_ui64(1, 0), 1); + assert_eq!(xor_ui64(2, 3), 1); + assert_eq!(xor_ui64(3, 2), 1); + assert_eq!(xor_ui64(18446744073709551614, 18446744073709551615), 1); + assert_eq!(xor_ui64(18446744073709551615, 18446744073709551614), 1); + assert_eq!(xor_ui64(0, 2), 2); + assert_eq!(xor_ui64(1, 3), 2); + assert_eq!(xor_ui64(2, 0), 2); + assert_eq!(xor_ui64(3, 1), 2); + assert_eq!(xor_ui64(0, 3), 3); + assert_eq!(xor_ui64(1, 2), 3); + assert_eq!(xor_ui64(2, 1), 3); + assert_eq!(xor_ui64(3, 0), 3); + assert_eq!(xor_ui64(0, 4), 4); + assert_eq!(xor_ui64(4, 0), 4); + assert_eq!(xor_ui64(1, 4), 5); + assert_eq!(xor_ui64(4, 1), 5); + assert_eq!(xor_ui64(2, 4), 6); + assert_eq!(xor_ui64(4, 2), 6); + assert_eq!(xor_ui64(3, 4), 7); + assert_eq!(xor_ui64(4, 3), 7); + assert_eq!(xor_ui64(0, 191084152064409600), 191084152064409600); + assert_eq!(xor_ui64(191084152064409600, 0), 191084152064409600); + assert_eq!(xor_ui64(1, 191084152064409600), 191084152064409601); + assert_eq!(xor_ui64(191084152064409600, 1), 191084152064409601); + assert_eq!(xor_ui64(2, 191084152064409600), 191084152064409602); + assert_eq!(xor_ui64(191084152064409600, 2), 191084152064409602); + assert_eq!(xor_ui64(3, 191084152064409600), 191084152064409603); + assert_eq!(xor_ui64(191084152064409600, 3), 191084152064409603); + assert_eq!(xor_ui64(4, 191084152064409600), 191084152064409604); + assert_eq!(xor_ui64(191084152064409600, 4), 191084152064409604); + assert_eq!( + xor_ui64(16990600415051759616, 18446744073709551614), + 1456143658657791998 + ); + assert_eq!( + xor_ui64(18446744073709551614, 16990600415051759616), + 1456143658657791998 + ); + assert_eq!( + xor_ui64(16990600415051759616, 18446744073709551615), + 1456143658657791999 + ); + assert_eq!( + xor_ui64(18446744073709551615, 16990600415051759616), + 1456143658657791999 + ); + assert_eq!( + xor_ui64(11015955194427482112, 18446744073709551614), + 7430788879282069502 + ); + assert_eq!( + xor_ui64(18446744073709551614, 11015955194427482112), + 7430788879282069502 + ); + assert_eq!( + xor_ui64(11015955194427482112, 18446744073709551615), + 7430788879282069503 + ); + assert_eq!( + xor_ui64(18446744073709551615, 11015955194427482112), + 7430788879282069503 + ); + assert_eq!( + xor_ui64(11015955194427482112, 16990600415051759616), + 8298504554647642112 + ); + assert_eq!( + xor_ui64(16990600415051759616, 11015955194427482112), + 8298504554647642112 + ); + assert_eq!(xor_ui64(0, 11015955194427482112), 11015955194427482112); + assert_eq!(xor_ui64(11015955194427482112, 0), 11015955194427482112); + assert_eq!(xor_ui64(1, 11015955194427482112), 11015955194427482113); + assert_eq!(xor_ui64(11015955194427482112, 1), 11015955194427482113); + assert_eq!(xor_ui64(2, 11015955194427482112), 11015955194427482114); + assert_eq!(xor_ui64(11015955194427482112, 2), 11015955194427482114); + assert_eq!(xor_ui64(3, 11015955194427482112), 11015955194427482115); + assert_eq!(xor_ui64(11015955194427482112, 3), 11015955194427482115); + assert_eq!(xor_ui64(4, 11015955194427482112), 11015955194427482116); + assert_eq!(xor_ui64(11015955194427482112, 4), 11015955194427482116); + assert_eq!( + xor_ui64(191084152064409600, 11015955194427482112), + 11116668269601857536 + ); + assert_eq!( + xor_ui64(11015955194427482112, 191084152064409600), + 11116668269601857536 + ); + assert_eq!( + xor_ui64(191084152064409600, 16990600415051759616), + 16819927597248036864 + ); + assert_eq!( + xor_ui64(16990600415051759616, 191084152064409600), + 16819927597248036864 + ); + assert_eq!(xor_ui64(0, 16990600415051759616), 16990600415051759616); + assert_eq!(xor_ui64(16990600415051759616, 0), 16990600415051759616); + assert_eq!(xor_ui64(1, 16990600415051759616), 16990600415051759617); + assert_eq!(xor_ui64(16990600415051759616, 1), 16990600415051759617); + assert_eq!(xor_ui64(2, 16990600415051759616), 16990600415051759618); + assert_eq!(xor_ui64(16990600415051759616, 2), 16990600415051759618); + assert_eq!(xor_ui64(3, 16990600415051759616), 16990600415051759619); + assert_eq!(xor_ui64(16990600415051759616, 3), 16990600415051759619); + assert_eq!(xor_ui64(4, 16990600415051759616), 16990600415051759620); + assert_eq!(xor_ui64(16990600415051759616, 4), 16990600415051759620); + assert_eq!( + xor_ui64(191084152064409600, 18446744073709551614), + 18255659921645142014 + ); + assert_eq!( + xor_ui64(18446744073709551614, 191084152064409600), + 18255659921645142014 + ); + assert_eq!( + xor_ui64(191084152064409600, 18446744073709551615), + 18255659921645142015 + ); + assert_eq!( + xor_ui64(18446744073709551615, 191084152064409600), + 18255659921645142015 + ); + assert_eq!(xor_ui64(4, 18446744073709551614), 18446744073709551610); + assert_eq!(xor_ui64(18446744073709551614, 4), 18446744073709551610); + assert_eq!(xor_ui64(4, 18446744073709551615), 18446744073709551611); + assert_eq!(xor_ui64(18446744073709551615, 4), 18446744073709551611); + assert_eq!(xor_ui64(2, 18446744073709551614), 18446744073709551612); + assert_eq!(xor_ui64(3, 18446744073709551615), 18446744073709551612); + assert_eq!(xor_ui64(18446744073709551614, 2), 18446744073709551612); + assert_eq!(xor_ui64(18446744073709551615, 3), 18446744073709551612); + assert_eq!(xor_ui64(2, 18446744073709551615), 18446744073709551613); + assert_eq!(xor_ui64(3, 18446744073709551614), 18446744073709551613); + assert_eq!(xor_ui64(18446744073709551614, 3), 18446744073709551613); + assert_eq!(xor_ui64(18446744073709551615, 2), 18446744073709551613); + assert_eq!(xor_ui64(0, 18446744073709551614), 18446744073709551614); + assert_eq!(xor_ui64(1, 18446744073709551615), 18446744073709551614); + assert_eq!(xor_ui64(18446744073709551614, 0), 18446744073709551614); + assert_eq!(xor_ui64(18446744073709551615, 1), 18446744073709551614); + assert_eq!(xor_ui64(0, 18446744073709551615), 18446744073709551615); + assert_eq!(xor_ui64(1, 18446744073709551614), 18446744073709551615); + assert_eq!(xor_ui64(18446744073709551614, 1), 18446744073709551615); + assert_eq!(xor_ui64(18446744073709551615, 0), 18446744073709551615); + assert_eq!(xor_ui8(0, 0), 0); + assert_eq!(xor_ui8(1, 1), 0); + assert_eq!(xor_ui8(2, 2), 0); + assert_eq!(xor_ui8(3, 3), 0); + assert_eq!(xor_ui8(4, 4), 0); + assert_eq!(xor_ui8(72, 72), 0); + assert_eq!(xor_ui8(100, 100), 0); + assert_eq!(xor_ui8(162, 162), 0); + assert_eq!(xor_ui8(254, 254), 0); + assert_eq!(xor_ui8(255, 255), 0); + assert_eq!(xor_ui8(0, 1), 1); + assert_eq!(xor_ui8(1, 0), 1); + assert_eq!(xor_ui8(2, 3), 1); + assert_eq!(xor_ui8(3, 2), 1); + assert_eq!(xor_ui8(254, 255), 1); + assert_eq!(xor_ui8(255, 254), 1); + assert_eq!(xor_ui8(0, 2), 2); + assert_eq!(xor_ui8(1, 3), 2); + assert_eq!(xor_ui8(2, 0), 2); + assert_eq!(xor_ui8(3, 1), 2); + assert_eq!(xor_ui8(0, 3), 3); + assert_eq!(xor_ui8(1, 2), 3); + assert_eq!(xor_ui8(2, 1), 3); + assert_eq!(xor_ui8(3, 0), 3); + assert_eq!(xor_ui8(0, 4), 4); + assert_eq!(xor_ui8(4, 0), 4); + assert_eq!(xor_ui8(1, 4), 5); + assert_eq!(xor_ui8(4, 1), 5); + assert_eq!(xor_ui8(2, 4), 6); + assert_eq!(xor_ui8(4, 2), 6); + assert_eq!(xor_ui8(3, 4), 7); + assert_eq!(xor_ui8(4, 3), 7); + assert_eq!(xor_ui8(72, 100), 44); + assert_eq!(xor_ui8(100, 72), 44); + assert_eq!(xor_ui8(0, 72), 72); + assert_eq!(xor_ui8(72, 0), 72); + assert_eq!(xor_ui8(1, 72), 73); + assert_eq!(xor_ui8(72, 1), 73); + assert_eq!(xor_ui8(2, 72), 74); + assert_eq!(xor_ui8(72, 2), 74); + assert_eq!(xor_ui8(3, 72), 75); + assert_eq!(xor_ui8(72, 3), 75); + assert_eq!(xor_ui8(4, 72), 76); + assert_eq!(xor_ui8(72, 4), 76); + assert_eq!(xor_ui8(162, 254), 92); + assert_eq!(xor_ui8(254, 162), 92); + assert_eq!(xor_ui8(162, 255), 93); + assert_eq!(xor_ui8(255, 162), 93); + assert_eq!(xor_ui8(4, 100), 96); + assert_eq!(xor_ui8(100, 4), 96); + assert_eq!(xor_ui8(0, 100), 100); + assert_eq!(xor_ui8(100, 0), 100); + assert_eq!(xor_ui8(1, 100), 101); + assert_eq!(xor_ui8(100, 1), 101); + assert_eq!(xor_ui8(2, 100), 102); + assert_eq!(xor_ui8(100, 2), 102); + assert_eq!(xor_ui8(3, 100), 103); + assert_eq!(xor_ui8(100, 3), 103); + assert_eq!(xor_ui8(100, 254), 154); + assert_eq!(xor_ui8(254, 100), 154); + assert_eq!(xor_ui8(100, 255), 155); + assert_eq!(xor_ui8(255, 100), 155); + assert_eq!(xor_ui8(2, 162), 160); + assert_eq!(xor_ui8(162, 2), 160); + assert_eq!(xor_ui8(3, 162), 161); + assert_eq!(xor_ui8(162, 3), 161); + assert_eq!(xor_ui8(0, 162), 162); + assert_eq!(xor_ui8(162, 0), 162); + assert_eq!(xor_ui8(1, 162), 163); + assert_eq!(xor_ui8(162, 1), 163); + assert_eq!(xor_ui8(4, 162), 166); + assert_eq!(xor_ui8(162, 4), 166); + assert_eq!(xor_ui8(72, 254), 182); + assert_eq!(xor_ui8(254, 72), 182); + assert_eq!(xor_ui8(72, 255), 183); + assert_eq!(xor_ui8(255, 72), 183); + assert_eq!(xor_ui8(100, 162), 198); + assert_eq!(xor_ui8(162, 100), 198); + assert_eq!(xor_ui8(72, 162), 234); + assert_eq!(xor_ui8(162, 72), 234); + assert_eq!(xor_ui8(4, 254), 250); + assert_eq!(xor_ui8(254, 4), 250); + assert_eq!(xor_ui8(4, 255), 251); + assert_eq!(xor_ui8(255, 4), 251); + assert_eq!(xor_ui8(2, 254), 252); + assert_eq!(xor_ui8(3, 255), 252); + assert_eq!(xor_ui8(254, 2), 252); + assert_eq!(xor_ui8(255, 3), 252); + assert_eq!(xor_ui8(2, 255), 253); + assert_eq!(xor_ui8(3, 254), 253); + assert_eq!(xor_ui8(254, 3), 253); + assert_eq!(xor_ui8(255, 2), 253); + assert_eq!(xor_ui8(0, 254), 254); + assert_eq!(xor_ui8(1, 255), 254); + assert_eq!(xor_ui8(254, 0), 254); + assert_eq!(xor_ui8(255, 1), 254); + assert_eq!(xor_ui8(0, 255), 255); + assert_eq!(xor_ui8(1, 254), 255); + assert_eq!(xor_ui8(254, 1), 255); + assert_eq!(xor_ui8(255, 0), 255); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/int-tensor-arith.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/int-tensor-arith.mlir.rust-tests deleted file mode 100644 index 97fad3675..000000000 --- a/arc-mlir/src/tests/arc-to-rust/int-tensor-arith.mlir.rust-tests +++ /dev/null @@ -1,209 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::arctorustinttensorarith::*; - use ndarray::{Array,Dim,Ix}; - use std::rc::Rc; - - #[rewrite(main)] - #[test] - fn testu8() { - let a:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5, 6, 7, 8]).unwrap()); - let b:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1, 2, 3, 4]).unwrap()); - assert_eq!(*addi_tensor2x2xui8(Rc::clone(&a), - Rc::clone(&b)), - &*a + &*b); - assert_eq!(*subi_tensor2x2xui8(Rc::clone(&a), - Rc::clone(&b)), - &*a - &*b); - assert_eq!(*muli_tensor2x2xui8(Rc::clone(&a), - Rc::clone(&b)), - &*a * &*b); - assert_eq!(*divi_tensor2x2xui8(Rc::clone(&a), - Rc::clone(&b)), - &*a / &*b); - assert_eq!(*remi_tensor2x2xui8(Rc::clone(&a), - Rc::clone(&b)), - &*a % &*b); - } - #[rewrite(main)] - #[test] - fn tests8() { - let a:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5, 6, 7, 8]).unwrap()); - let b:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1, 2, 3, 4]).unwrap()); - assert_eq!(*addi_tensor2x2xsi8(Rc::clone(&a), - Rc::clone(&b)), - &*a + &*b); - assert_eq!(*subi_tensor2x2xsi8(Rc::clone(&a), - Rc::clone(&b)), - &*a - &*b); - assert_eq!(*muli_tensor2x2xsi8(Rc::clone(&a), - Rc::clone(&b)), - &*a * &*b); - assert_eq!(*divi_tensor2x2xsi8(Rc::clone(&a), - Rc::clone(&b)), - &*a / &*b); - assert_eq!(*remi_tensor2x2xsi8(Rc::clone(&a), - Rc::clone(&b)), - &*a % &*b); - } - - #[rewrite(main)] - #[test] - fn testu16() { - let a:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5, 6, 7, 8]).unwrap()); - let b:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1, 2, 3, 4]).unwrap()); - assert_eq!(*addi_tensor2x2xui16(Rc::clone(&a), - Rc::clone(&b)), - &*a + &*b); - assert_eq!(*subi_tensor2x2xui16(Rc::clone(&a), - Rc::clone(&b)), - &*a - &*b); - assert_eq!(*muli_tensor2x2xui16(Rc::clone(&a), - Rc::clone(&b)), - &*a * &*b); - assert_eq!(*divi_tensor2x2xui16(Rc::clone(&a), - Rc::clone(&b)), - &*a / &*b); - assert_eq!(*remi_tensor2x2xui16(Rc::clone(&a), - Rc::clone(&b)), - &*a % &*b); - } - #[rewrite(main)] - #[test] - fn tests16() { - let a:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5, 6, 7, 8]).unwrap()); - let b:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1, 2, 3, 4]).unwrap()); - assert_eq!(*addi_tensor2x2xsi16(Rc::clone(&a), - Rc::clone(&b)), - &*a + &*b); - assert_eq!(*subi_tensor2x2xsi16(Rc::clone(&a), - Rc::clone(&b)), - &*a - &*b); - assert_eq!(*muli_tensor2x2xsi16(Rc::clone(&a), - Rc::clone(&b)), - &*a * &*b); - assert_eq!(*divi_tensor2x2xsi16(Rc::clone(&a), - Rc::clone(&b)), - &*a / &*b); - assert_eq!(*remi_tensor2x2xsi16(Rc::clone(&a), - Rc::clone(&b)), - &*a % &*b); - } - #[rewrite(main)] - #[test] - fn testu32() { - let a:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5, 6, 7, 8]).unwrap()); - let b:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1, 2, 3, 4]).unwrap()); - assert_eq!(*addi_tensor2x2xui32(Rc::clone(&a), - Rc::clone(&b)), - &*a + &*b); - assert_eq!(*subi_tensor2x2xui32(Rc::clone(&a), - Rc::clone(&b)), - &*a - &*b); - assert_eq!(*muli_tensor2x2xui32(Rc::clone(&a), - Rc::clone(&b)), - &*a * &*b); - assert_eq!(*divi_tensor2x2xui32(Rc::clone(&a), - Rc::clone(&b)), - &*a / &*b); - assert_eq!(*remi_tensor2x2xui32(Rc::clone(&a), - Rc::clone(&b)), - &*a % &*b); - } - #[rewrite(main)] - #[test] - fn tests32() { - let a:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5, 6, 7, 8]).unwrap()); - let b:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1, 2, 3, 4]).unwrap()); - assert_eq!(*addi_tensor2x2xsi32(Rc::clone(&a), - Rc::clone(&b)), - &*a + &*b); - assert_eq!(*subi_tensor2x2xsi32(Rc::clone(&a), - Rc::clone(&b)), - &*a - &*b); - assert_eq!(*muli_tensor2x2xsi32(Rc::clone(&a), - Rc::clone(&b)), - &*a * &*b); - assert_eq!(*divi_tensor2x2xsi32(Rc::clone(&a), - Rc::clone(&b)), - &*a / &*b); - assert_eq!(*remi_tensor2x2xsi32(Rc::clone(&a), - Rc::clone(&b)), - &*a % &*b); - } - - #[rewrite(main)] - #[test] - fn testu64() { - let a:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5, 6, 7, 8]).unwrap()); - let b:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1, 2, 3, 4]).unwrap()); - assert_eq!(*addi_tensor2x2xui64(Rc::clone(&a), - Rc::clone(&b)), - &*a + &*b); - assert_eq!(*subi_tensor2x2xui64(Rc::clone(&a), - Rc::clone(&b)), - &*a - &*b); - assert_eq!(*muli_tensor2x2xui64(Rc::clone(&a), - Rc::clone(&b)), - &*a * &*b); - assert_eq!(*divi_tensor2x2xui64(Rc::clone(&a), - Rc::clone(&b)), - &*a / &*b); - assert_eq!(*remi_tensor2x2xui64(Rc::clone(&a), - Rc::clone(&b)), - &*a % &*b); - } - #[rewrite(main)] - #[test] - fn tests64() { - let a:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![5, 6, 7, 8]).unwrap()); - let b:Rc>> = - Rc::new(Array::from_shape_vec((2, 2), - vec![1, 2, 3, 4]).unwrap()); - assert_eq!(*addi_tensor2x2xsi64(Rc::clone(&a), - Rc::clone(&b)), - &*a + &*b); - assert_eq!(*subi_tensor2x2xsi64(Rc::clone(&a), - Rc::clone(&b)), - &*a - &*b); - assert_eq!(*muli_tensor2x2xsi64(Rc::clone(&a), - Rc::clone(&b)), - &*a * &*b); - assert_eq!(*divi_tensor2x2xsi64(Rc::clone(&a), - Rc::clone(&b)), - &*a / &*b); - assert_eq!(*remi_tensor2x2xsi64(Rc::clone(&a), - Rc::clone(&b)), - &*a % &*b); - } -} diff --git a/arc-mlir/src/tests/arc-to-rust/loops.mlir b/arc-mlir/src/tests/arc-to-rust/loops.mlir index 619904b1a..e07c2c877 100644 --- a/arc-mlir/src/tests/arc-to-rust/loops.mlir +++ b/arc-mlir/src/tests/arc-to-rust/loops.mlir @@ -4,7 +4,7 @@ module @arctorustloops { - func.func @a_while_loop(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 attributes { rust.declare } { + func.func @a_while_loop(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 { %res_cnt, %res_sum = scf.while (%arg1 = %first, %sum = %accum) : (ui64, ui64) -> (ui64, ui64) { %condition = arc.cmpi "lt", %arg1, %limit : ui64 scf.condition(%condition) %arg1, %sum : ui64, ui64 @@ -18,7 +18,7 @@ module @arctorustloops { return %res_sum : ui64 } - func.func @a_while_loop_with_a_break_in_before(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 attributes { rust.declare } { + func.func @a_while_loop_with_a_break_in_before(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 { %res_cnt, %res_sum = scf.while (%arg1 = %first, %sum = %accum) : (ui64, ui64) -> (ui64, ui64) { %condition = arc.cmpi "lt", %arg1, %limit : ui64 @@ -41,7 +41,7 @@ module @arctorustloops { return %res_sum : ui64 } - func.func @a_while_loop_with_a_break_in_after(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 attributes { rust.declare } { + func.func @a_while_loop_with_a_break_in_after(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 { %res_cnt, %res_sum = scf.while (%arg1 = %first, %sum = %accum) : (ui64, ui64) -> (ui64, ui64) { %condition = arc.cmpi "lt", %arg1, %limit : ui64 scf.condition(%condition) %arg1, %sum : ui64, ui64 @@ -64,7 +64,7 @@ module @arctorustloops { return %res_sum : ui64 } - func.func @a_while_loop_with_a_return_in_before(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 attributes { rust.declare } { + func.func @a_while_loop_with_a_return_in_before(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 { %res_cnt, %res_sum = scf.while (%arg1 = %first, %sum = %accum) : (ui64, ui64) -> (ui64, ui64) { %condition = arc.cmpi "lt", %arg1, %limit : ui64 @@ -87,7 +87,7 @@ module @arctorustloops { return %res_sum : ui64 } - func.func @a_while_loop_with_a_return_in_after(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 attributes { rust.declare } { + func.func @a_while_loop_with_a_return_in_after(%first : ui64, %limit : ui64, %accum : ui64) -> ui64 { %res_cnt, %res_sum = scf.while (%arg1 = %first, %sum = %accum) : (ui64, ui64) -> (ui64, ui64) { %condition = arc.cmpi "lt", %arg1, %limit : ui64 scf.condition(%condition) %arg1, %sum : ui64, ui64 diff --git a/arc-mlir/src/tests/arc-to-rust/loops.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/loops.mlir.rust-tests index dd696cd25..f8b19cd99 100644 --- a/arc-mlir/src/tests/arc-to-rust/loops.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/loops.mlir.rust-tests @@ -1,15 +1,13 @@ #[cfg(test)] mod tests { - use super::*; - use crate::arctorustloops::*; - use hexf::*; - #[rewrite(main)] - #[test] - fn it_works() { - assert_eq!(call!(a_while_loop(0, 5, 3)), 13); - assert_eq!(call!(a_while_loop_with_a_break_in_before(0, 5, 1)), 2); - assert_eq!(call!(a_while_loop_with_a_break_in_after(0, 10, 3)), 4); - assert_eq!(call!(a_while_loop_with_a_return_in_before(0, 5, 1)), 2); - assert_eq!(call!(a_while_loop_with_a_return_in_after(0, 10, 3)), 4); - } + use super::*; + use crate::arctorustloops::*; + #[test] + fn it_works() { + assert_eq!(a_while_loop(0, 5, 3), 13); + assert_eq!(a_while_loop_with_a_break_in_before(0, 5, 1), 2); + assert_eq!(a_while_loop_with_a_break_in_after(0, 10, 3), 4); + assert_eq!(a_while_loop_with_a_return_in_before(0, 5, 1), 2); + assert_eq!(a_while_loop_with_a_return_in_after(0, 10, 3), 4); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/panic.mlir b/arc-mlir/src/tests/arc-to-rust/panic.mlir index 62b64a5b4..365054b34 100644 --- a/arc-mlir/src/tests/arc-to-rust/panic.mlir +++ b/arc-mlir/src/tests/arc-to-rust/panic.mlir @@ -12,5 +12,4 @@ module @toplevel { arc.panic("foo") return } - } diff --git a/arc-mlir/src/tests/arc-to-rust/select.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/select.mlir.rust-tests index 7c0635b02..0b51a9a8d 100644 --- a/arc-mlir/src/tests/arc-to-rust/select.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/select.mlir.rust-tests @@ -1,10 +1,9 @@ #[cfg(test)] mod tests { - use crate::arctorustifs::*; - #[rewrite(main)] - #[test] - fn test() { - assert_eq!(call!(test_0(true, 3, 4)), 3); - assert_eq!(call!(test_0(false, 3, 4)), 4); - } + use crate::arctorustifs::*; + #[test] + fn test() { + assert_eq!(test_0(true, 3, 4), 3); + assert_eq!(test_0(false, 3, 4), 4); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/simple.mlir b/arc-mlir/src/tests/arc-to-rust/simple.mlir index 4ef8703c0..999c79704 100644 --- a/arc-mlir/src/tests/arc-to-rust/simple.mlir +++ b/arc-mlir/src/tests/arc-to-rust/simple.mlir @@ -19,42 +19,34 @@ module @arctorustsimple { %b = arith.constant 0 : i1 return %b : i1 } - func.func @return_ui8() -> ui8 { %b = arc.constant 255 : ui8 return %b : ui8 } - func.func @return_ui16() -> ui16 { %b = arc.constant 65535 : ui16 return %b : ui16 } - func.func @return_ui32() -> ui32 { %b = arc.constant 4294967295 : ui32 return %b : ui32 } - func.func @return_ui64() -> ui64 { %b = arc.constant 18446744073709551615 : ui64 return %b : ui64 } - func.func @return_si8() -> si8 { %b = arc.constant -128 : si8 return %b : si8 } - func.func @return_si16() -> si16 { %b = arc.constant -32768 : si16 return %b : si16 } - func.func @return_si32() -> si32 { %b = arc.constant -2147483648 : si32 return %b : si32 } - func.func @return_si64() -> si64 { %b = arc.constant -9223372036854775808 : si64 return %b : si64 diff --git a/arc-mlir/src/tests/arc-to-rust/simple.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/simple.mlir.rust-tests index 553db1c4f..d75026900 100644 --- a/arc-mlir/src/tests/arc-to-rust/simple.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/simple.mlir.rust-tests @@ -1,23 +1,21 @@ #[cfg(test)] mod tests { - use crate::arctorustsimple::*; - use hexf::*; - #[rewrite(main)] - #[test] - fn it_works() { - assert_eq!(call!(returnf64()), hexf::hexf64!("0x1.91eb851eb851fp1")); - assert_eq!(call!(returnf32()), hexf::hexf32!("0x1.62e48ep-1")); - assert_eq!(call!(return_true()), true); - assert_eq!(call!(return_false()), false); + use crate::arctorustsimple::*; + #[test] + fn it_works() { + assert_eq!(returnf64(), hexf::hexf64!("0x1.91eb851eb851fp1")); + assert_eq!(returnf32(), hexf::hexf32!("0x1.62e48ep-1")); + assert_eq!(return_true(), true); + assert_eq!(return_false(), false); - assert_eq!(call!(return_ui8()), 0xFF); - assert_eq!(call!(return_ui16()), 0xFFFF); - assert_eq!(call!(return_ui32()), 0xFFFFFFFF); - assert_eq!(call!(return_ui64()), 0xFFFFFFFFFFFFFFFF); + assert_eq!(return_ui8(), 0xFF); + assert_eq!(return_ui16(), 0xFFFF); + assert_eq!(return_ui32(), 0xFFFFFFFF); + assert_eq!(return_ui64(), 0xFFFFFFFFFFFFFFFF); - assert_eq!(call!(return_si8()), -128); - assert_eq!(call!(return_si16()), -32768); - assert_eq!(call!(return_si32()), -2147483648); - assert_eq!(call!(return_si64()), -9223372036854775808); - } + assert_eq!(return_si8(), -128); + assert_eq!(return_si16(), -32768); + assert_eq!(return_si32(), -2147483648); + assert_eq!(return_si64(), -9223372036854775808); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/spawn.mlir b/arc-mlir/src/tests/arc-to-rust/spawn.mlir deleted file mode 100644 index ca40a398d..000000000 --- a/arc-mlir/src/tests/arc-to-rust/spawn.mlir +++ /dev/null @@ -1,32 +0,0 @@ -// RUN: arc-mlir %s | arc-mlir -// RUN: arc-mlir -canonicalize %s | arc-mlir -// RUN: arc-mlir -canonicalize -arc-to-rust %s | FileCheck %s -module @arctorustspawn { - - func.func @id(%in : !arc.stream.source, - %out : !arc.stream.sink) -> () - attributes { - arc.is_task, - rust.async, - rust.annotation = "#[rewrite(nonpersistent)]" - } { - scf.while () : () -> () { - %condition = arith.constant 1 : i1 - scf.condition(%condition) - } do { - ^bb0(): - %x = "arc.receive"(%in) : (!arc.stream.source) -> si32 - "arc.send"(%x, %out) : (si32, !arc.stream.sink) -> () - scf.yield - } - return - } - - func.func @main(%in : !arc.stream.source, - %out : !arc.stream.sink) { - arc.spawn @id(%in, %out) : (!arc.stream.source, - !arc.stream.sink) -> () -// CHECK: "rust.spawn"(%arg0, %arg1) {callee = @id} : (!rust<>, !rust<>) -> () - return - } -} diff --git a/arc-mlir/src/tests/arc-to-rust/structs.mlir b/arc-mlir/src/tests/arc-to-rust/structs.mlir index db82e5316..945460924 100644 --- a/arc-mlir/src/tests/arc-to-rust/structs.mlir +++ b/arc-mlir/src/tests/arc-to-rust/structs.mlir @@ -72,7 +72,6 @@ module @arctoruststructs { %s = arc.make_struct(%b : si32) : !arc.struct %r0 = arc.make_struct(%a, %s : si32, !arc.struct) : !arc.struct> %r1 = arc.make_struct(%a, %s : si32, !arc.struct) : !arc.struct> - return %a : si32 } @@ -84,17 +83,4 @@ module @arctoruststructs { %r = arc.make_struct() : !arc.struct<> return %r : !arc.struct<> } - - func.func @ok13() -> !arc.struct<<>> { - %r = arc.make_struct() : !arc.struct<<>> - return %r : !arc.struct<<>> - } - - func.func @ok14() -> !arc.struct<> { - %a = arc.constant 4 : si32 - %r = arc.make_struct(%a : si32) : !arc.struct<> - return %r : !arc.struct<> - } - - } diff --git a/arc-mlir/src/tests/arc-to-rust/structs.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/structs.mlir.rust-tests index d43a89feb..f850d0e48 100644 --- a/arc-mlir/src/tests/arc-to-rust/structs.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/structs.mlir.rust-tests @@ -1,15 +1,14 @@ // Empty #[cfg(test)] mod tests { - use crate::arctoruststructs::*; - #[rewrite(main)] - #[test] - fn it_works() { - assert_eq!(call!(ok3()).a, 4); - assert_eq!(call!(ok4()).a, 4); - assert_eq!(call!(ok5()).a, 4); - assert_eq!(call!(ok5()).b.a, 3); - assert_eq!(call!(ok6()), 4); - assert_eq!(call!(ok7()), 3); - } + use crate::arctoruststructs::*; + #[test] + fn it_works() { + assert_eq!(ok3().a, 4); + assert_eq!(ok4().a, 4); + assert_eq!(ok5().a, 4); + assert_eq!(ok5().b.a, 3); + assert_eq!(ok6(), 4); + assert_eq!(ok7(), 3); + } } diff --git a/arc-mlir/src/tests/arc-to-rust/tensors.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/tensors.mlir.rust-tests deleted file mode 100644 index 3f408ec65..000000000 --- a/arc-mlir/src/tests/arc-to-rust/tensors.mlir.rust-tests +++ /dev/null @@ -1,46 +0,0 @@ -#[cfg(test)] -mod tests { - use crate::arctorusttensors::*; - #[rewrite(main)] - #[test] - fn test() { - let tmp0 = call!(make_0()); - let tmp1 = call!(make_1()); - let tmp2 = call!(make_2()); - let tmp3 = call!(make_3()); - - assert_eq!(tmp0[[0]], 0.0); - - assert_eq!(tmp1[[0]], 0.0); - assert_eq!(tmp1[[1]], 1.0); - - assert_eq!(tmp2[[0]], 0.0); - assert_eq!(tmp2[[1]], 1.0); - assert_eq!(tmp2[[2]], 2.0); - - assert_eq!(tmp3[[0,0,0]], 0.0); - assert_eq!(tmp3[[0,0,1]], 1.0); - assert_eq!(tmp3[[0,0,2]], 2.0); - assert_eq!(tmp3[[0,0,3]], 3.0); - assert_eq!(tmp3[[0,1,0]], 4.0); - assert_eq!(tmp3[[0,1,1]], 5.0); - assert_eq!(tmp3[[0,1,2]], 6.0); - assert_eq!(tmp3[[0,1,3]], 7.0); - assert_eq!(tmp3[[0,2,0]], 8.0); - assert_eq!(tmp3[[0,2,1]], 9.0); - assert_eq!(tmp3[[0,2,2]], 10.0); - assert_eq!(tmp3[[0,2,3]], 11.0); - assert_eq!(tmp3[[1,0,0]], 12.0); - assert_eq!(tmp3[[1,0,1]], 13.0); - assert_eq!(tmp3[[1,0,2]], 14.0); - assert_eq!(tmp3[[1,0,3]], 15.0); - assert_eq!(tmp3[[1,1,0]], 16.0); - assert_eq!(tmp3[[1,1,1]], 17.0); - assert_eq!(tmp3[[1,1,2]], 18.0); - assert_eq!(tmp3[[1,1,3]], 19.0); - assert_eq!(tmp3[[1,2,0]], 20.0); - assert_eq!(tmp3[[1,2,1]], 21.0); - assert_eq!(tmp3[[1,2,2]], 22.0); - assert_eq!(tmp3[[1,2,3]], 23.0); - } -} diff --git a/arc-mlir/src/tests/arc-to-rust/unary-ops.mlir b/arc-mlir/src/tests/arc-to-rust/unary-ops.mlir index 38e85bcd3..c8d4938a1 100644 --- a/arc-mlir/src/tests/arc-to-rust/unary-ops.mlir +++ b/arc-mlir/src/tests/arc-to-rust/unary-ops.mlir @@ -2,124 +2,123 @@ // RUN: arc-mlir-rust-test %t-roundtrip-scf %s -rustinclude %s.rust-tests -canonicalize -remove-scf -canonicalize -to-scf -canonicalize module @arctorustunaryops { -func.func @acos_f32(%a : f32) -> f32 { - %r = arc.acos %a : f32 - return %r : f32 -} - -func.func @asin_f32(%a : f32) -> f32 { - %r = arc.asin %a : f32 - return %r : f32 -} - -func.func @atan_f32(%a : f32) -> f32 { - %r = math.atan %a : f32 - return %r : f32 -} - -func.func @cos_f32(%a : f32) -> f32 { - %r = math.cos %a : f32 - return %r : f32 -} - -func.func @cosh_f32(%a : f32) -> f32 { - %r = arc.cosh %a : f32 - return %r : f32 -} - -func.func @exp_f32(%a : f32) -> f32 { - %r = math.exp %a : f32 - return %r : f32 -} - -func.func @log_f32(%a : f32) -> f32 { - %r = math.log %a : f32 - return %r : f32 -} - -func.func @sin_f32(%a : f32) -> f32 { - %r = math.sin %a : f32 - return %r : f32 -} - -func.func @sinh_f32(%a : f32) -> f32 { - %r = arc.sinh %a : f32 - return %r : f32 -} - -func.func @sqrt_f32(%a : f32) -> f32 { - %r = math.sqrt %a : f32 - return %r : f32 -} - -func.func @tan_f32(%a : f32) -> f32 { - %r = arc.tan %a : f32 - return %r : f32 -} - -func.func @tanh_f32(%a : f32) -> f32 { - %r = math.tanh %a : f32 - return %r : f32 -} - -func.func @acos_f64(%a : f64) -> f64 { - %r = arc.acos %a : f64 - return %r : f64 -} - -func.func @asin_f64(%a : f64) -> f64 { - %r = arc.asin %a : f64 - return %r : f64 -} - -func.func @atan_f64(%a : f64) -> f64 { - %r = math.atan %a : f64 - return %r : f64 -} - -func.func @cos_f64(%a : f64) -> f64 { - %r = math.cos %a : f64 - return %r : f64 -} - -func.func @cosh_f64(%a : f64) -> f64 { - %r = arc.cosh %a : f64 - return %r : f64 -} - -func.func @exp_f64(%a : f64) -> f64 { - %r = math.exp %a : f64 - return %r : f64 -} - -func.func @log_f64(%a : f64) -> f64 { - %r = math.log %a : f64 - return %r : f64 -} - -func.func @sin_f64(%a : f64) -> f64 { - %r = math.sin %a : f64 - return %r : f64 -} - -func.func @sinh_f64(%a : f64) -> f64 { - %r = arc.sinh %a : f64 - return %r : f64 -} - -func.func @sqrt_f64(%a : f64) -> f64 { - %r = math.sqrt %a : f64 - return %r : f64 -} - -func.func @tan_f64(%a : f64) -> f64 { - %r = arc.tan %a : f64 - return %r : f64 -} - -func.func @tanh_f64(%a : f64) -> f64 { - %r = math.tanh %a : f64 - return %r : f64 -} - + func.func @acos_f32(%a : f32) -> f32 { + %r = arc.acos %a : f32 + return %r : f32 + } + + func.func @asin_f32(%a : f32) -> f32 { + %r = arc.asin %a : f32 + return %r : f32 + } + + func.func @atan_f32(%a : f32) -> f32 { + %r = math.atan %a : f32 + return %r : f32 + } + + func.func @cos_f32(%a : f32) -> f32 { + %r = math.cos %a : f32 + return %r : f32 + } + + func.func @cosh_f32(%a : f32) -> f32 { + %r = arc.cosh %a : f32 + return %r : f32 + } + + func.func @exp_f32(%a : f32) -> f32 { + %r = math.exp %a : f32 + return %r : f32 + } + + func.func @log_f32(%a : f32) -> f32 { + %r = math.log %a : f32 + return %r : f32 + } + + func.func @sin_f32(%a : f32) -> f32 { + %r = math.sin %a : f32 + return %r : f32 + } + + func.func @sinh_f32(%a : f32) -> f32 { + %r = arc.sinh %a : f32 + return %r : f32 + } + + func.func @sqrt_f32(%a : f32) -> f32 { + %r = math.sqrt %a : f32 + return %r : f32 + } + + func.func @tan_f32(%a : f32) -> f32 { + %r = arc.tan %a : f32 + return %r : f32 + } + + func.func @tanh_f32(%a : f32) -> f32 { + %r = math.tanh %a : f32 + return %r : f32 + } + + func.func @acos_f64(%a : f64) -> f64 { + %r = arc.acos %a : f64 + return %r : f64 + } + + func.func @asin_f64(%a : f64) -> f64 { + %r = arc.asin %a : f64 + return %r : f64 + } + + func.func @atan_f64(%a : f64) -> f64 { + %r = math.atan %a : f64 + return %r : f64 + } + + func.func @cos_f64(%a : f64) -> f64 { + %r = math.cos %a : f64 + return %r : f64 + } + + func.func @cosh_f64(%a : f64) -> f64 { + %r = arc.cosh %a : f64 + return %r : f64 + } + + func.func @exp_f64(%a : f64) -> f64 { + %r = math.exp %a : f64 + return %r : f64 + } + + func.func @log_f64(%a : f64) -> f64 { + %r = math.log %a : f64 + return %r : f64 + } + + func.func @sin_f64(%a : f64) -> f64 { + %r = math.sin %a : f64 + return %r : f64 + } + + func.func @sinh_f64(%a : f64) -> f64 { + %r = arc.sinh %a : f64 + return %r : f64 + } + + func.func @sqrt_f64(%a : f64) -> f64 { + %r = math.sqrt %a : f64 + return %r : f64 + } + + func.func @tan_f64(%a : f64) -> f64 { + %r = arc.tan %a : f64 + return %r : f64 + } + + func.func @tanh_f64(%a : f64) -> f64 { + %r = math.tanh %a : f64 + return %r : f64 + } } diff --git a/arc-mlir/src/tests/arc-to-rust/unary-ops.mlir.rust-tests b/arc-mlir/src/tests/arc-to-rust/unary-ops.mlir.rust-tests index a922714e2..81ef232ad 100644 --- a/arc-mlir/src/tests/arc-to-rust/unary-ops.mlir.rust-tests +++ b/arc-mlir/src/tests/arc-to-rust/unary-ops.mlir.rust-tests @@ -1,194 +1,180 @@ #[cfg(test)] mod tests { -use crate::arctorustunaryops::*; -#[rewrite(main)] -#[test] - fn test_0() { - assert!((call!(acos_f32(1.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(acos_f32(5.00000000000000000000e-01)) - 1.04719755119659785336e+00).abs() < 1e-6); - assert!((call!(acos_f32(1.00000000000000005551e-01)) - 1.47062890563333681371e+00).abs() < 1e-6); - assert!((call!(acos_f32(0.00000000000000000000e+00)) - 1.57079632679489655800e+00).abs() < 1e-6); - assert!((call!(acos_f32(-5.00000000000000000000e-01)) - 2.09439510239319570672e+00).abs() < 1e-6); - assert!((call!(acos_f32(-1.00000000000000000000e+00)) - 3.14159265358979311600e+00).abs() < 1e-6); - assert!((call!(acos_f64(1.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(acos_f64(5.00000000000000000000e-01)) - 1.04719755119659785336e+00).abs() < 1e-6); - assert!((call!(acos_f64(1.00000000000000005551e-01)) - 1.47062890563333681371e+00).abs() < 1e-6); - assert!((call!(acos_f64(0.00000000000000000000e+00)) - 1.57079632679489655800e+00).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_1() { - assert!((call!(acos_f64(-5.00000000000000000000e-01)) - 2.09439510239319570672e+00).abs() < 1e-6); - assert!((call!(acos_f64(-1.00000000000000000000e+00)) - 3.14159265358979311600e+00).abs() < 1e-6); - assert!((call!(asin_f32(-1.00000000000000000000e+00)) - -1.57079632679489655800e+00).abs() < 1e-6); - assert!((call!(asin_f32(-5.00000000000000000000e-01)) - -5.23598775598298926681e-01).abs() < 1e-6); - assert!((call!(asin_f32(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(asin_f32(1.00000000000000005551e-01)) - 1.00167421161559799803e-01).abs() < 1e-6); - assert!((call!(asin_f32(5.00000000000000000000e-01)) - 5.23598775598298926681e-01).abs() < 1e-6); - assert!((call!(asin_f32(1.00000000000000000000e+00)) - 1.57079632679489655800e+00).abs() < 1e-6); - assert!((call!(asin_f64(-1.00000000000000000000e+00)) - -1.57079632679489655800e+00).abs() < 1e-6); - assert!((call!(asin_f64(-5.00000000000000000000e-01)) - -5.23598775598298926681e-01).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_2() { - assert!((call!(asin_f64(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(asin_f64(1.00000000000000005551e-01)) - 1.00167421161559799803e-01).abs() < 1e-6); - assert!((call!(asin_f64(5.00000000000000000000e-01)) - 5.23598775598298926681e-01).abs() < 1e-6); - assert!((call!(asin_f64(1.00000000000000000000e+00)) - 1.57079632679489655800e+00).abs() < 1e-6); - assert!((call!(atan_f32(-1.00000000000000000000e+00)) - -7.85398163397448278999e-01).abs() < 1e-6); - assert!((call!(atan_f32(-5.00000000000000000000e-01)) - -4.63647609000806093515e-01).abs() < 1e-6); - assert!((call!(atan_f32(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(atan_f32(1.00000000000000005551e-01)) - 9.96686524911620380651e-02).abs() < 1e-6); - assert!((call!(atan_f32(5.00000000000000000000e-01)) - 4.63647609000806093515e-01).abs() < 1e-6); - assert!((call!(atan_f32(1.00000000000000000000e+00)) - 7.85398163397448278999e-01).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_3() { - assert!((call!(atan_f64(-1.00000000000000000000e+00)) - -7.85398163397448278999e-01).abs() < 1e-6); - assert!((call!(atan_f64(-5.00000000000000000000e-01)) - -4.63647609000806093515e-01).abs() < 1e-6); - assert!((call!(atan_f64(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(atan_f64(1.00000000000000005551e-01)) - 9.96686524911620380651e-02).abs() < 1e-6); - assert!((call!(atan_f64(5.00000000000000000000e-01)) - 4.63647609000806093515e-01).abs() < 1e-6); - assert!((call!(atan_f64(1.00000000000000000000e+00)) - 7.85398163397448278999e-01).abs() < 1e-6); - assert!((call!(cos_f32(-1.00000000000000000000e+00)) - 5.40302305868139765010e-01).abs() < 1e-6); - assert!((call!(cos_f32(1.00000000000000000000e+00)) - 5.40302305868139765010e-01).abs() < 1e-6); - assert!((call!(cos_f32(-5.00000000000000000000e-01)) - 8.77582561890372758739e-01).abs() < 1e-6); - assert!((call!(cos_f32(5.00000000000000000000e-01)) - 8.77582561890372758739e-01).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_4() { - assert!((call!(cos_f32(1.00000000000000005551e-01)) - 9.95004165278025820562e-01).abs() < 1e-6); - assert!((call!(cos_f32(0.00000000000000000000e+00)) - 1.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(cos_f64(-1.00000000000000000000e+00)) - 5.40302305868139765010e-01).abs() < 1e-6); - assert!((call!(cos_f64(1.00000000000000000000e+00)) - 5.40302305868139765010e-01).abs() < 1e-6); - assert!((call!(cos_f64(-5.00000000000000000000e-01)) - 8.77582561890372758739e-01).abs() < 1e-6); - assert!((call!(cos_f64(5.00000000000000000000e-01)) - 8.77582561890372758739e-01).abs() < 1e-6); - assert!((call!(cos_f64(1.00000000000000005551e-01)) - 9.95004165278025820562e-01).abs() < 1e-6); - assert!((call!(cos_f64(0.00000000000000000000e+00)) - 1.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(cosh_f32(0.00000000000000000000e+00)) - 1.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(cosh_f32(1.00000000000000005551e-01)) - 1.00500416805580350399e+00).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_5() { - assert!((call!(cosh_f32(-5.00000000000000000000e-01)) - 1.12762596520638069819e+00).abs() < 1e-6); - assert!((call!(cosh_f32(5.00000000000000000000e-01)) - 1.12762596520638069819e+00).abs() < 1e-6); - assert!((call!(cosh_f32(-1.00000000000000000000e+00)) - 1.54308063481524371241e+00).abs() < 1e-6); - assert!((call!(cosh_f32(1.00000000000000000000e+00)) - 1.54308063481524371241e+00).abs() < 1e-6); - assert!((call!(cosh_f64(0.00000000000000000000e+00)) - 1.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(cosh_f64(1.00000000000000005551e-01)) - 1.00500416805580350399e+00).abs() < 1e-6); - assert!((call!(cosh_f64(-5.00000000000000000000e-01)) - 1.12762596520638069819e+00).abs() < 1e-6); - assert!((call!(cosh_f64(5.00000000000000000000e-01)) - 1.12762596520638069819e+00).abs() < 1e-6); - assert!((call!(cosh_f64(-1.00000000000000000000e+00)) - 1.54308063481524371241e+00).abs() < 1e-6); - assert!((call!(cosh_f64(1.00000000000000000000e+00)) - 1.54308063481524371241e+00).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_6() { - assert!((call!(exp_f32(-1.00000000000000000000e+00)) - 3.67879441171442334024e-01).abs() < 1e-6); - assert!((call!(exp_f32(-5.00000000000000000000e-01)) - 6.06530659712633424263e-01).abs() < 1e-6); - assert!((call!(exp_f32(0.00000000000000000000e+00)) - 1.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(exp_f32(1.00000000000000005551e-01)) - 1.10517091807564771244e+00).abs() < 1e-6); - assert!((call!(exp_f32(5.00000000000000000000e-01)) - 1.64872127070012819416e+00).abs() < 1e-6); - assert!((call!(exp_f32(1.00000000000000000000e+00)) - 2.71828182845904509080e+00).abs() < 1e-6); - assert!((call!(exp_f64(-1.00000000000000000000e+00)) - 3.67879441171442334024e-01).abs() < 1e-6); - assert!((call!(exp_f64(-5.00000000000000000000e-01)) - 6.06530659712633424263e-01).abs() < 1e-6); - assert!((call!(exp_f64(0.00000000000000000000e+00)) - 1.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(exp_f64(1.00000000000000005551e-01)) - 1.10517091807564771244e+00).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_7() { - assert!((call!(exp_f64(5.00000000000000000000e-01)) - 1.64872127070012819416e+00).abs() < 1e-6); - assert!((call!(exp_f64(1.00000000000000000000e+00)) - 2.71828182845904509080e+00).abs() < 1e-6); - assert!((call!(log_f32(1.00000000000000005551e-01)) - -2.30258509299404545700e+00).abs() < 1e-6); - assert!((call!(log_f32(5.00000000000000000000e-01)) - -6.93147180559945286227e-01).abs() < 1e-6); - assert!((call!(log_f32(1.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(log_f64(1.00000000000000005551e-01)) - -2.30258509299404545700e+00).abs() < 1e-6); - assert!((call!(log_f64(5.00000000000000000000e-01)) - -6.93147180559945286227e-01).abs() < 1e-6); - assert!((call!(log_f64(1.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(sin_f32(-1.00000000000000000000e+00)) - -8.41470984807896504876e-01).abs() < 1e-6); - assert!((call!(sin_f32(-5.00000000000000000000e-01)) - -4.79425538604203005377e-01).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_8() { - assert!((call!(sin_f32(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(sin_f32(1.00000000000000005551e-01)) - 9.98334166468281547502e-02).abs() < 1e-6); - assert!((call!(sin_f32(5.00000000000000000000e-01)) - 4.79425538604203005377e-01).abs() < 1e-6); - assert!((call!(sin_f32(1.00000000000000000000e+00)) - 8.41470984807896504876e-01).abs() < 1e-6); - assert!((call!(sin_f64(-1.00000000000000000000e+00)) - -8.41470984807896504876e-01).abs() < 1e-6); - assert!((call!(sin_f64(-5.00000000000000000000e-01)) - -4.79425538604203005377e-01).abs() < 1e-6); - assert!((call!(sin_f64(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(sin_f64(1.00000000000000005551e-01)) - 9.98334166468281547502e-02).abs() < 1e-6); - assert!((call!(sin_f64(5.00000000000000000000e-01)) - 4.79425538604203005377e-01).abs() < 1e-6); - assert!((call!(sin_f64(1.00000000000000000000e+00)) - 8.41470984807896504876e-01).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_9() { - assert!((call!(sinh_f32(-1.00000000000000000000e+00)) - -1.17520119364380137839e+00).abs() < 1e-6); - assert!((call!(sinh_f32(-5.00000000000000000000e-01)) - -5.21095305493747384951e-01).abs() < 1e-6); - assert!((call!(sinh_f32(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(sinh_f32(1.00000000000000005551e-01)) - 1.00166750019844028041e-01).abs() < 1e-6); - assert!((call!(sinh_f32(5.00000000000000000000e-01)) - 5.21095305493747384951e-01).abs() < 1e-6); - assert!((call!(sinh_f32(1.00000000000000000000e+00)) - 1.17520119364380137839e+00).abs() < 1e-6); - assert!((call!(sinh_f64(-1.00000000000000000000e+00)) - -1.17520119364380137839e+00).abs() < 1e-6); - assert!((call!(sinh_f64(-5.00000000000000000000e-01)) - -5.21095305493747384951e-01).abs() < 1e-6); - assert!((call!(sinh_f64(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(sinh_f64(1.00000000000000005551e-01)) - 1.00166750019844028041e-01).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_10() { - assert!((call!(sinh_f64(5.00000000000000000000e-01)) - 5.21095305493747384951e-01).abs() < 1e-6); - assert!((call!(sinh_f64(1.00000000000000000000e+00)) - 1.17520119364380137839e+00).abs() < 1e-6); - assert!((call!(sqrt_f32(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(sqrt_f32(1.00000000000000005551e-01)) - 3.16227766016837941176e-01).abs() < 1e-6); - assert!((call!(sqrt_f32(5.00000000000000000000e-01)) - 7.07106781186547572737e-01).abs() < 1e-6); - assert!((call!(sqrt_f32(1.00000000000000000000e+00)) - 1.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(sqrt_f64(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(sqrt_f64(1.00000000000000005551e-01)) - 3.16227766016837941176e-01).abs() < 1e-6); - assert!((call!(sqrt_f64(5.00000000000000000000e-01)) - 7.07106781186547572737e-01).abs() < 1e-6); - assert!((call!(sqrt_f64(1.00000000000000000000e+00)) - 1.00000000000000000000e+00).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_11() { - assert!((call!(tan_f32(-1.00000000000000000000e+00)) - -1.55740772465490229237e+00).abs() < 1e-6); - assert!((call!(tan_f32(-5.00000000000000000000e-01)) - -5.46302489843790484159e-01).abs() < 1e-6); - assert!((call!(tan_f32(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(tan_f32(1.00000000000000005551e-01)) - 1.00334672085450549162e-01).abs() < 1e-6); - assert!((call!(tan_f32(5.00000000000000000000e-01)) - 5.46302489843790484159e-01).abs() < 1e-6); - assert!((call!(tan_f32(1.00000000000000000000e+00)) - 1.55740772465490229237e+00).abs() < 1e-6); - assert!((call!(tan_f64(-1.00000000000000000000e+00)) - -1.55740772465490229237e+00).abs() < 1e-6); - assert!((call!(tan_f64(-5.00000000000000000000e-01)) - -5.46302489843790484159e-01).abs() < 1e-6); - assert!((call!(tan_f64(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(tan_f64(1.00000000000000005551e-01)) - 1.00334672085450549162e-01).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_12() { - assert!((call!(tan_f64(5.00000000000000000000e-01)) - 5.46302489843790484159e-01).abs() < 1e-6); - assert!((call!(tan_f64(1.00000000000000000000e+00)) - 1.55740772465490229237e+00).abs() < 1e-6); - assert!((call!(tanh_f32(-1.00000000000000000000e+00)) - -7.61594155955764851029e-01).abs() < 1e-6); - assert!((call!(tanh_f32(-5.00000000000000000000e-01)) - -4.62117157260009736586e-01).abs() < 1e-6); - assert!((call!(tanh_f32(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(tanh_f32(1.00000000000000005551e-01)) - 9.96679946249558190718e-02).abs() < 1e-6); - assert!((call!(tanh_f32(5.00000000000000000000e-01)) - 4.62117157260009736586e-01).abs() < 1e-6); - assert!((call!(tanh_f32(1.00000000000000000000e+00)) - 7.61594155955764851029e-01).abs() < 1e-6); - assert!((call!(tanh_f64(-1.00000000000000000000e+00)) - -7.61594155955764851029e-01).abs() < 1e-6); - assert!((call!(tanh_f64(-5.00000000000000000000e-01)) - -4.62117157260009736586e-01).abs() < 1e-6); - } - #[rewrite(main)] - #[test] - fn test_13() { - assert!((call!(tanh_f64(0.00000000000000000000e+00)) - 0.00000000000000000000e+00).abs() < 1e-6); - assert!((call!(tanh_f64(1.00000000000000005551e-01)) - 9.96679946249558190718e-02).abs() < 1e-6); - assert!((call!(tanh_f64(5.00000000000000000000e-01)) - 4.62117157260009736586e-01).abs() < 1e-6); - assert!((call!(tanh_f64(1.00000000000000000000e+00)) - 7.61594155955764851029e-01).abs() < 1e-6); - } + use crate::arctorustunaryops::*; + #[test] + fn test_0() { + assert!((acos_f32(1.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((acos_f32(5.00000000000000000000e-01) - 1.04719755119659785336e+00).abs() < 1e-6); + assert!((acos_f32(1.00000000000000005551e-01) - 1.47062890563333681371e+00).abs() < 1e-6); + assert!((acos_f32(0.00000000000000000000e+00) - 1.57079632679489655800e+00).abs() < 1e-6); + assert!((acos_f32(-5.00000000000000000000e-01) - 2.09439510239319570672e+00).abs() < 1e-6); + assert!((acos_f32(-1.00000000000000000000e+00) - 3.14159265358979311600e+00).abs() < 1e-6); + assert!((acos_f64(1.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((acos_f64(5.00000000000000000000e-01) - 1.04719755119659785336e+00).abs() < 1e-6); + assert!((acos_f64(1.00000000000000005551e-01) - 1.47062890563333681371e+00).abs() < 1e-6); + assert!((acos_f64(0.00000000000000000000e+00) - 1.57079632679489655800e+00).abs() < 1e-6); + } + #[test] + fn test_1() { + assert!((acos_f64(-5.00000000000000000000e-01) - 2.09439510239319570672e+00).abs() < 1e-6); + assert!((acos_f64(-1.00000000000000000000e+00) - 3.14159265358979311600e+00).abs() < 1e-6); + assert!((asin_f32(-1.00000000000000000000e+00) - -1.57079632679489655800e+00).abs() < 1e-6); + assert!((asin_f32(-5.00000000000000000000e-01) - -5.23598775598298926681e-01).abs() < 1e-6); + assert!((asin_f32(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((asin_f32(1.00000000000000005551e-01) - 1.00167421161559799803e-01).abs() < 1e-6); + assert!((asin_f32(5.00000000000000000000e-01) - 5.23598775598298926681e-01).abs() < 1e-6); + assert!((asin_f32(1.00000000000000000000e+00) - 1.57079632679489655800e+00).abs() < 1e-6); + assert!((asin_f64(-1.00000000000000000000e+00) - -1.57079632679489655800e+00).abs() < 1e-6); + assert!((asin_f64(-5.00000000000000000000e-01) - -5.23598775598298926681e-01).abs() < 1e-6); + } + #[test] + fn test_2() { + assert!((asin_f64(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((asin_f64(1.00000000000000005551e-01) - 1.00167421161559799803e-01).abs() < 1e-6); + assert!((asin_f64(5.00000000000000000000e-01) - 5.23598775598298926681e-01).abs() < 1e-6); + assert!((asin_f64(1.00000000000000000000e+00) - 1.57079632679489655800e+00).abs() < 1e-6); + assert!((atan_f32(-1.00000000000000000000e+00) - -7.85398163397448278999e-01).abs() < 1e-6); + assert!((atan_f32(-5.00000000000000000000e-01) - -4.63647609000806093515e-01).abs() < 1e-6); + assert!((atan_f32(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((atan_f32(1.00000000000000005551e-01) - 9.96686524911620380651e-02).abs() < 1e-6); + assert!((atan_f32(5.00000000000000000000e-01) - 4.63647609000806093515e-01).abs() < 1e-6); + assert!((atan_f32(1.00000000000000000000e+00) - 7.85398163397448278999e-01).abs() < 1e-6); + } + #[test] + fn test_3() { + assert!((atan_f64(-1.00000000000000000000e+00) - -7.85398163397448278999e-01).abs() < 1e-6); + assert!((atan_f64(-5.00000000000000000000e-01) - -4.63647609000806093515e-01).abs() < 1e-6); + assert!((atan_f64(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((atan_f64(1.00000000000000005551e-01) - 9.96686524911620380651e-02).abs() < 1e-6); + assert!((atan_f64(5.00000000000000000000e-01) - 4.63647609000806093515e-01).abs() < 1e-6); + assert!((atan_f64(1.00000000000000000000e+00) - 7.85398163397448278999e-01).abs() < 1e-6); + assert!((cos_f32(-1.00000000000000000000e+00) - 5.40302305868139765010e-01).abs() < 1e-6); + assert!((cos_f32(1.00000000000000000000e+00) - 5.40302305868139765010e-01).abs() < 1e-6); + assert!((cos_f32(-5.00000000000000000000e-01) - 8.77582561890372758739e-01).abs() < 1e-6); + assert!((cos_f32(5.00000000000000000000e-01) - 8.77582561890372758739e-01).abs() < 1e-6); + } + #[test] + fn test_4() { + assert!((cos_f32(1.00000000000000005551e-01) - 9.95004165278025820562e-01).abs() < 1e-6); + assert!((cos_f32(0.00000000000000000000e+00) - 1.00000000000000000000e+00).abs() < 1e-6); + assert!((cos_f64(-1.00000000000000000000e+00) - 5.40302305868139765010e-01).abs() < 1e-6); + assert!((cos_f64(1.00000000000000000000e+00) - 5.40302305868139765010e-01).abs() < 1e-6); + assert!((cos_f64(-5.00000000000000000000e-01) - 8.77582561890372758739e-01).abs() < 1e-6); + assert!((cos_f64(5.00000000000000000000e-01) - 8.77582561890372758739e-01).abs() < 1e-6); + assert!((cos_f64(1.00000000000000005551e-01) - 9.95004165278025820562e-01).abs() < 1e-6); + assert!((cos_f64(0.00000000000000000000e+00) - 1.00000000000000000000e+00).abs() < 1e-6); + assert!((cosh_f32(0.00000000000000000000e+00) - 1.00000000000000000000e+00).abs() < 1e-6); + assert!((cosh_f32(1.00000000000000005551e-01) - 1.00500416805580350399e+00).abs() < 1e-6); + } + #[test] + fn test_5() { + assert!((cosh_f32(-5.00000000000000000000e-01) - 1.12762596520638069819e+00).abs() < 1e-6); + assert!((cosh_f32(5.00000000000000000000e-01) - 1.12762596520638069819e+00).abs() < 1e-6); + assert!((cosh_f32(-1.00000000000000000000e+00) - 1.54308063481524371241e+00).abs() < 1e-6); + assert!((cosh_f32(1.00000000000000000000e+00) - 1.54308063481524371241e+00).abs() < 1e-6); + assert!((cosh_f64(0.00000000000000000000e+00) - 1.00000000000000000000e+00).abs() < 1e-6); + assert!((cosh_f64(1.00000000000000005551e-01) - 1.00500416805580350399e+00).abs() < 1e-6); + assert!((cosh_f64(-5.00000000000000000000e-01) - 1.12762596520638069819e+00).abs() < 1e-6); + assert!((cosh_f64(5.00000000000000000000e-01) - 1.12762596520638069819e+00).abs() < 1e-6); + assert!((cosh_f64(-1.00000000000000000000e+00) - 1.54308063481524371241e+00).abs() < 1e-6); + assert!((cosh_f64(1.00000000000000000000e+00) - 1.54308063481524371241e+00).abs() < 1e-6); + } + #[test] + fn test_6() { + assert!((exp_f32(-1.00000000000000000000e+00) - 3.67879441171442334024e-01).abs() < 1e-6); + assert!((exp_f32(-5.00000000000000000000e-01) - 6.06530659712633424263e-01).abs() < 1e-6); + assert!((exp_f32(0.00000000000000000000e+00) - 1.00000000000000000000e+00).abs() < 1e-6); + assert!((exp_f32(1.00000000000000005551e-01) - 1.10517091807564771244e+00).abs() < 1e-6); + assert!((exp_f32(5.00000000000000000000e-01) - 1.64872127070012819416e+00).abs() < 1e-6); + assert!((exp_f32(1.00000000000000000000e+00) - 2.71828182845904509080e+00).abs() < 1e-6); + assert!((exp_f64(-1.00000000000000000000e+00) - 3.67879441171442334024e-01).abs() < 1e-6); + assert!((exp_f64(-5.00000000000000000000e-01) - 6.06530659712633424263e-01).abs() < 1e-6); + assert!((exp_f64(0.00000000000000000000e+00) - 1.00000000000000000000e+00).abs() < 1e-6); + assert!((exp_f64(1.00000000000000005551e-01) - 1.10517091807564771244e+00).abs() < 1e-6); + } + #[test] + fn test_7() { + assert!((exp_f64(5.00000000000000000000e-01) - 1.64872127070012819416e+00).abs() < 1e-6); + assert!((exp_f64(1.00000000000000000000e+00) - 2.71828182845904509080e+00).abs() < 1e-6); + assert!((log_f32(1.00000000000000005551e-01) - -2.30258509299404545700e+00).abs() < 1e-6); + assert!((log_f32(5.00000000000000000000e-01) - -6.93147180559945286227e-01).abs() < 1e-6); + assert!((log_f32(1.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((log_f64(1.00000000000000005551e-01) - -2.30258509299404545700e+00).abs() < 1e-6); + assert!((log_f64(5.00000000000000000000e-01) - -6.93147180559945286227e-01).abs() < 1e-6); + assert!((log_f64(1.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((sin_f32(-1.00000000000000000000e+00) - -8.41470984807896504876e-01).abs() < 1e-6); + assert!((sin_f32(-5.00000000000000000000e-01) - -4.79425538604203005377e-01).abs() < 1e-6); + } + #[test] + fn test_8() { + assert!((sin_f32(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((sin_f32(1.00000000000000005551e-01) - 9.98334166468281547502e-02).abs() < 1e-6); + assert!((sin_f32(5.00000000000000000000e-01) - 4.79425538604203005377e-01).abs() < 1e-6); + assert!((sin_f32(1.00000000000000000000e+00) - 8.41470984807896504876e-01).abs() < 1e-6); + assert!((sin_f64(-1.00000000000000000000e+00) - -8.41470984807896504876e-01).abs() < 1e-6); + assert!((sin_f64(-5.00000000000000000000e-01) - -4.79425538604203005377e-01).abs() < 1e-6); + assert!((sin_f64(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((sin_f64(1.00000000000000005551e-01) - 9.98334166468281547502e-02).abs() < 1e-6); + assert!((sin_f64(5.00000000000000000000e-01) - 4.79425538604203005377e-01).abs() < 1e-6); + assert!((sin_f64(1.00000000000000000000e+00) - 8.41470984807896504876e-01).abs() < 1e-6); + } + #[test] + fn test_9() { + assert!((sinh_f32(-1.00000000000000000000e+00) - -1.17520119364380137839e+00).abs() < 1e-6); + assert!((sinh_f32(-5.00000000000000000000e-01) - -5.21095305493747384951e-01).abs() < 1e-6); + assert!((sinh_f32(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((sinh_f32(1.00000000000000005551e-01) - 1.00166750019844028041e-01).abs() < 1e-6); + assert!((sinh_f32(5.00000000000000000000e-01) - 5.21095305493747384951e-01).abs() < 1e-6); + assert!((sinh_f32(1.00000000000000000000e+00) - 1.17520119364380137839e+00).abs() < 1e-6); + assert!((sinh_f64(-1.00000000000000000000e+00) - -1.17520119364380137839e+00).abs() < 1e-6); + assert!((sinh_f64(-5.00000000000000000000e-01) - -5.21095305493747384951e-01).abs() < 1e-6); + assert!((sinh_f64(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((sinh_f64(1.00000000000000005551e-01) - 1.00166750019844028041e-01).abs() < 1e-6); + } + #[test] + fn test_10() { + assert!((sinh_f64(5.00000000000000000000e-01) - 5.21095305493747384951e-01).abs() < 1e-6); + assert!((sinh_f64(1.00000000000000000000e+00) - 1.17520119364380137839e+00).abs() < 1e-6); + assert!((sqrt_f32(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((sqrt_f32(1.00000000000000005551e-01) - 3.16227766016837941176e-01).abs() < 1e-6); + assert!((sqrt_f32(5.00000000000000000000e-01) - 7.07106781186547572737e-01).abs() < 1e-6); + assert!((sqrt_f32(1.00000000000000000000e+00) - 1.00000000000000000000e+00).abs() < 1e-6); + assert!((sqrt_f64(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((sqrt_f64(1.00000000000000005551e-01) - 3.16227766016837941176e-01).abs() < 1e-6); + assert!((sqrt_f64(5.00000000000000000000e-01) - 7.07106781186547572737e-01).abs() < 1e-6); + assert!((sqrt_f64(1.00000000000000000000e+00) - 1.00000000000000000000e+00).abs() < 1e-6); + } + #[test] + fn test_11() { + assert!((tan_f32(-1.00000000000000000000e+00) - -1.55740772465490229237e+00).abs() < 1e-6); + assert!((tan_f32(-5.00000000000000000000e-01) - -5.46302489843790484159e-01).abs() < 1e-6); + assert!((tan_f32(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((tan_f32(1.00000000000000005551e-01) - 1.00334672085450549162e-01).abs() < 1e-6); + assert!((tan_f32(5.00000000000000000000e-01) - 5.46302489843790484159e-01).abs() < 1e-6); + assert!((tan_f32(1.00000000000000000000e+00) - 1.55740772465490229237e+00).abs() < 1e-6); + assert!((tan_f64(-1.00000000000000000000e+00) - -1.55740772465490229237e+00).abs() < 1e-6); + assert!((tan_f64(-5.00000000000000000000e-01) - -5.46302489843790484159e-01).abs() < 1e-6); + assert!((tan_f64(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((tan_f64(1.00000000000000005551e-01) - 1.00334672085450549162e-01).abs() < 1e-6); + } + #[test] + fn test_12() { + assert!((tan_f64(5.00000000000000000000e-01) - 5.46302489843790484159e-01).abs() < 1e-6); + assert!((tan_f64(1.00000000000000000000e+00) - 1.55740772465490229237e+00).abs() < 1e-6); + assert!((tanh_f32(-1.00000000000000000000e+00) - -7.61594155955764851029e-01).abs() < 1e-6); + assert!((tanh_f32(-5.00000000000000000000e-01) - -4.62117157260009736586e-01).abs() < 1e-6); + assert!((tanh_f32(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((tanh_f32(1.00000000000000005551e-01) - 9.96679946249558190718e-02).abs() < 1e-6); + assert!((tanh_f32(5.00000000000000000000e-01) - 4.62117157260009736586e-01).abs() < 1e-6); + assert!((tanh_f32(1.00000000000000000000e+00) - 7.61594155955764851029e-01).abs() < 1e-6); + assert!((tanh_f64(-1.00000000000000000000e+00) - -7.61594155955764851029e-01).abs() < 1e-6); + assert!((tanh_f64(-5.00000000000000000000e-01) - -4.62117157260009736586e-01).abs() < 1e-6); + } + #[test] + fn test_13() { + assert!((tanh_f64(0.00000000000000000000e+00) - 0.00000000000000000000e+00).abs() < 1e-6); + assert!((tanh_f64(1.00000000000000005551e-01) - 9.96679946249558190718e-02).abs() < 1e-6); + assert!((tanh_f64(5.00000000000000000000e-01) - 4.62117157260009736586e-01).abs() < 1e-6); + assert!((tanh_f64(1.00000000000000000000e+00) - 7.61594155955764851029e-01).abs() < 1e-6); + } } diff --git a/arc-mlir/src/tests/lit.cfg.py b/arc-mlir/src/tests/lit.cfg.py index f139608ba..c22b95097 100644 --- a/arc-mlir/src/tests/lit.cfg.py +++ b/arc-mlir/src/tests/lit.cfg.py @@ -57,7 +57,7 @@ llvm_config.with_environment('ARC_CARGO', 'arc-cargo') tool_dirs = [config.mlir_tools_dir, config.llvm_tools_dir, - config.arcscript_tools_dir] + config.arclang_tools_dir] tools = [ 'mlir-opt', 'mlir-tblgen', diff --git a/arc-mlir/src/tests/lit.site.cfg.py.in b/arc-mlir/src/tests/lit.site.cfg.py.in index 73329d9db..7a7c1cfaa 100644 --- a/arc-mlir/src/tests/lit.site.cfg.py.in +++ b/arc-mlir/src/tests/lit.site.cfg.py.in @@ -32,7 +32,7 @@ config.mlir_src_root = "@MLIR_SOURCE_DIR@" config.mlir_obj_root = "@MLIR_BINARY_DIR@" config.mlir_tools_dir = "@MLIR_TOOLS_DIR@" config.linalg_test_lib_dir = "@MLIR_DIALECT_LINALG_INTEGRATION_TEST_LIB_DIR@" -config.arcscript_tools_dir = "@ARC_SCRIPT_TOOLS_DIR@" +config.arclang_tools_dir = "@ARC_LANG_TOOLS_DIR@" # Support substitution of the tools_dir with user parameters. This is # used when we can't determine the tool dir at configuration time. @@ -48,4 +48,4 @@ import lit.llvm lit.llvm.initialize(lit_config, config) # Let the main config do the real work. -lit_config.load_config(config, "@ARC_MLIR_SOURCE_DIR@/tests/lit.cfg.py") +lit_config.load_config(config, "@ARC_MLIR_SRC_DIR@/tests/lit.cfg.py") diff --git a/arc-mlir/src/tests/types/bad-structs.mlir b/arc-mlir/src/tests/types/bad-structs.mlir index 800d96a51..1e7fdaea1 100644 --- a/arc-mlir/src/tests/types/bad-structs.mlir +++ b/arc-mlir/src/tests/types/bad-structs.mlir @@ -36,14 +36,3 @@ module @toplevel { return %in : !arc.struct } } - -// ----- - -module @toplevel { - func.func @bad13() -> !arc.struct<> { -// expected-note@+1 {{prior use here}} - %r = arc.make_struct() : !arc.struct<<>> -// expected-error@+1 {{use of value '%r' expects different type than prior uses: '!arc.struct<>' vs '!arc.struct<<>>'}} - return %r : !arc.struct<> - } -} diff --git a/arc-mlir/src/tests/types/structs.mlir b/arc-mlir/src/tests/types/structs.mlir index 055b9899b..2f7f8f7ad 100644 --- a/arc-mlir/src/tests/types/structs.mlir +++ b/arc-mlir/src/tests/types/structs.mlir @@ -14,13 +14,4 @@ module @toplevel { func.func @ok2(%in : !arc.struct) -> !arc.struct { return %in : !arc.struct } - - func.func @ok3(%in : !arc.struct>) -> () { - return - } - - func.func @ok4(%in : !arc.struct<>) -> () { - return - } - } diff --git a/arc-mlir/src/tools/CMakeLists.txt b/arc-mlir/src/tools/CMakeLists.txt index 8cffc346c..faac9e8a7 100644 --- a/arc-mlir/src/tools/CMakeLists.txt +++ b/arc-mlir/src/tools/CMakeLists.txt @@ -1,10 +1,10 @@ add_subdirectory(arc-mlir) -set(CARGO_TOML_TEMPLATE_FILE "${ARC_LANG_SRC_DIR}/etc/Cargo.toml.template") -file(READ ${CARGO_TOML_TEMPLATE_FILE} CARGO_TOML_TEMPLATE) -set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS - ${CARGO_TOML_TEMPLATE_FILE}) - +# Generate script files from a templates (e.g., arc-cargo from arc-cargo.in) by +# replacing variables like @VAR@ with their CMake values. The resulting file +# will be placed in the LLVM_TOOLS_BINARY_DIR directory. @ONLY indicates that +# only variables of the form @VAR@ will be replaced, not cmake built-in +# substitutions. configure_file(arc-cargo.in ${LLVM_TOOLS_BINARY_DIR}/arc-cargo @ONLY) configure_file(arc-mlir-rust-test.in ${LLVM_TOOLS_BINARY_DIR}/arc-mlir-rust-test @ONLY) configure_file(arc.in ${LLVM_TOOLS_BINARY_DIR}/arc @ONLY) diff --git a/arc-mlir/src/tools/arc-mlir-rust-test.in b/arc-mlir/src/tools/arc-mlir-rust-test.in index e7e79f046..da9709c8f 100755 --- a/arc-mlir/src/tools/arc-mlir-rust-test.in +++ b/arc-mlir/src/tools/arc-mlir-rust-test.in @@ -3,10 +3,9 @@ set -e export PATH="@ARC_TOOLS_BIN_DIR@:$PATH" -export ARC_LANG_SOURCE_DIR="@ARC_LANG_SRC_DIR@" -export ARC_MLIR_SOURCE_DIR="@ARC_MLIR_SRC_DIR@" -export ARC_CODEGEN_SOURCE_DIR="@ARC_CODEGEN_SRC_DIR@" -export ARC_RUNTIME_SOURCE_DIR="@ARC_RUNTIME_SRC_DIR@" +export ARC_LANG_DIR="@ARC_LANG_DIR@" +export ARC_MLIR_DIR="@ARC_MLIR_DIR@" +export ARC_RUNTIME_DIR="@ARC_RUNTIME_DIR@" WORK_DIR="$1" TARGET_DIR="${WORK_DIR}.target" @@ -17,12 +16,12 @@ MAIN="${WORK_DIR}/src/main.rs" TEST_NAME=$(basename ${WORK_DIR}) TEST_NAME=${TEST_NAME//.mlir.tmp/} TEST_NAME=${TEST_NAME//.arc.tmp/} -export CRATE_NAME=${TEST_NAME//-/_} +export TEST_NAME CARGO_DEP_FRAGMENT="${MLIR_FILE%.mlir}.cargo-dep" echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" rustc --version -echo "Arc-lang sources are in: ${ARC_LANG_SOURCE_DIR}" +echo "Arc-lang sources are in: ${ARC_LANG_DIR}" echo "Test name: ${TEST_NAME}" echo "MLIR input: ${MLIR_FILE}" echo "Crate will be written to: ${WORK_DIR}" @@ -37,7 +36,13 @@ mkdir -p ${WORK_DIR}/src # Create the Cargo.toml envsubst > ${WORK_DIR}/Cargo.toml <<'EOF' -@CARGO_TOML_TEMPLATE@ +[package] +name = "${TEST_NAME}" +version = "0.0.0" +edition = "2021" + +[dependencies] +runtime = { path = "${ARC_RUNTIME_DIR}" } EOF # Allow a test to include extra dependencies in the Cargo.toml @@ -47,8 +52,7 @@ fi # Create dummy wrapper .rs-file which includes the generated test-case -echo '#![feature(unboxed_closures)]' > ${MAIN} -arc-mlir ${MLIR_FILE} "$@" -arc-to-rust -inline-rust >> ${MAIN} +arc-mlir ${MLIR_FILE} "$@" -arc-to-rust -inline-rust > ${MAIN} cat >> ${MAIN} < "$CRATE_TOML_FILE" <<'EOF' -@CARGO_TOML_TEMPLATE@ +envsubst > ${WORK_DIR}/Cargo.toml <<'EOF' +[package] +name = "{TEST_NAME}" +version = "0.0.0" +edition = "2021" + +[dependencies] +runtime = { path = "{RUNTIME_DIR}" } EOF [ "$ARC_DEBUG" ] && echo "$CRATE_TOML_FILE: " && cat "$CRATE_TOML_FILE" envsubst > "$CRATE_MAIN_FILE" <<'EOF' // Generated source for $INPUT_FILE -#![feature(unboxed_closures)] -#![feature(imported_main)] EOF case $INPUT_FILE in diff --git a/arc-python/README.md b/arc-python/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/arc-python/arclib/__init__.py b/arc-python/arclib/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/arc-python/arclib/codegen.py b/arc-python/arclib/codegen.py deleted file mode 100644 index 8b8ffd1d1..000000000 --- a/arc-python/arclib/codegen.py +++ /dev/null @@ -1,94 +0,0 @@ -from arclib.utils import * -import cloudpickle - - -def write_args(operator, arc, rs): - extern_funs = [] - args = [] - for (id, arg) in enumerate(operator.args): - name = "{}_arg{}".format(operator.instance(), id) - path = "target/pickles/{}".format(name) - - # Pickle argument and write it to a file - with open(path, 'wb') as file: - cloudpickle.dump(arg.value, file) - - if arg.type.is_function(): - args.append('{}'.format(name)) - - inputs = [t.generate_arc() for t in arg.type.inputs] - output = arg.type.output.generate_arc() - - vars = ["x{}".format(i) for (i, _) in enumerate(inputs)] - params = ", ".join(["{}: {}".format(v, t) - for (v, t) in zip(vars, inputs)]) - - extern_funs.append(''' - | extern fun {name}({params}): {output}; - '''.format(name=name, params=params, output=output)) - - inputs = [t.generate_rs() for t in arg.type.inputs] - output = arg.type.output.generate_rs() - - vars = ["x{}".format(i) for (i, _) in enumerate(inputs)] - params = ", ".join(["{}: {}".format(v, t) - for (v, t) in zip(vars, inputs)]) - tuple = "({})".format("".join(["{},".format(var) for var in vars])) - - rs.write_trim(''' - | fn {name}({params}) -> {output} {{ - | Python::with_gil(|py| py.unpickle("{path}")?.call1({tuple})?.extract()).unwrap() - | }} - '''.format(name=name, path=path, params=params, output=output, tuple=tuple)) - - else: - # Non-function values are lifted into functions - # and then evaluated - args.append('{}()'.format(name)) - - output = arg.type.generate_arc() - - extern_funs.append(''' - | extern fun {name}(): {output}; - '''.format(name=name, output=output)) - - output = arg.type.generate_rs() - - rs.write_trim(''' - | fn {name}() -> {output} {{ - | Python::with_gil(|py| py.unpickle("{path}").extract()).unwrap() - | }} - '''.format(name=name, output=output, path=path)) - arc.write_sep(args) - return extern_funs - - -# Serialize all arguments of an operator -def generate(operators): - with Writer('target/main.arc') as arc, Writer('target/main.rs') as rs: - arc_extern_funs = [] - # Write implementations - for operator in sorted(operators, key=lambda x: x.name): - arc.write(operator.implementation()) - - # Write instances - operators = sorted(operators, key=lambda x: x.id) - arc.writeln() - arc.write('fun main()') - with Brace(arc): - for operator in operators: - arc.write(' val ') - if len(operator.ostreams) == 1: - arc.write('{}'.format(operator.ostreams[0])) - else: - with Paren(arc): - arc.write_sep(operator.ostreams) - arc.write(' = {}'.format(operator.name)) - with Paren(arc): - arc_extern_funs.extend(write_args(operator, arc, rs)) - with Paren(arc): - arc.write_sep(operator.istreams) - arc.writeln(';') - arc.writeln() - for arc_extern_fun in arc_extern_funs: - arc.write_trim(arc_extern_fun) diff --git a/arc-python/arclib/context.py b/arc-python/arclib/context.py deleted file mode 100644 index 87e28809e..000000000 --- a/arc-python/arclib/context.py +++ /dev/null @@ -1,10 +0,0 @@ -from arclib.codegen import generate - -class Context: - def __init__(self): - self.operators = [] - self.streams = [] - - def execute(self): - generate(self.operators) - diff --git a/arc-python/arclib/operator.py b/arc-python/arclib/operator.py deleted file mode 100644 index 44d3f4248..000000000 --- a/arc-python/arclib/operator.py +++ /dev/null @@ -1,192 +0,0 @@ -from arclib.stream import * -from arclib.types import * -from arclib.utils import * - - -class Operator: - - def instance(self): - return "{}{}".format(self.name, self.id) - - def register(self): - self.id = len(self.ctx.operators) - self.ctx.operators.append(self) - - def __call__(self, istream): - self.ctx = istream.ctx - self.register() - istream.consumers.append(self) - ostream = Stream(self) - self.istreams = [istream] - self.ostreams = [ostream] - return ostream - - def execute(self): - self.ctx.execute() - - def implementation(self): - return trim(self._implementation()) - - -class Map(Operator): - def __init__(self, f): - self.name = "Map" - self.args = [Arg(f, Fun([Any], Any))] - - def _implementation(self): - return """ - | task Map[A, B](f: fun(A):B): ~A -> ~B { - | loop { - | on event => emit f(event) - | } - | } - """ - - -class Filter(Operator): - def __init__(self, f): - self.name = "Filter" - self.args = [Arg(f, Fun([Any], Bool))] - - def _implementation(self): - return """ - | task Filter[A](f: fun(A):bool): ~A -> ~A { - | loop { - | on event => if f(event) { - | emit event - | } - | } - | } - """ - - -class FlatMap(Operator): - def __init__(self, f): - self.name = "FlatMap" - self.args = [Arg(f, Fun([Any], Vec(Any)))] - - def _implementation(self): - return """ - | task FlatMap[A,B](f: fun(A):[B]): ~A -> ~B { - | loop { - | on event => for event in f(event) { - | emit event - | } - | } - | } - """ - - -class Split(Operator): - def __init__(self, f): - self.name = "Split" - self.args = [Arg(f, Fun([Any], Bool))] - - def __call__(self, istream): - self.ctx = istream.ctx - self.register() - istream.consumers.append(self) - ostream0 = Stream(self) - ostream1 = Stream(self) - self.istreams = [istream] - self.ostreams = [ostream0, ostream1] - return ostream0, ostream1 - - def _implementation(self): - return """ - | task Split[T](f: fun(T):bool): ~T -> (A(~T), B(~T)) { - | loop { - | on event => if f(event) { - | emit A(event) - | } else { - | emit B(event) - | } - | } - | } - """ - - -class Union(Operator): - def __init__(self): - self.name = "Union" - self.args = [] - - def __call__(self, istream0, istream1): - self.ctx = istream0.ctx - self.register() - istream0.consumers.append(self) - istream1.consumers.append(self) - ostream = Stream(self) - self.istreams = [istream0, istream1] - self.ostreams = [ostream] - return ostream - - def _implementation(self): - return """ - | task Union[T](): (A(~T), B(~T)) -> ~T { - | loop { - | on A(event) => emit event, - | on B(event) => emit event, - | } - | } - """ - - -class Fold(Operator): - def __init__(self, f, init): - self.name = "KeyBy" - self.args = [Arg(f, Fun([Any], Any)), Arg(init, Any)] - - def _implementation(self): - return """ - | task Fold[A,T](f: fun(A,T):A, id: T): ~A -> ~T { - | var agg = id; - | loop { - | on event => { - | agg = f(agg, event); - | emit agg - | } - | } - | } - """ - - -class KeyBy(Operator): - def __init__(self, f): - self.name = "KeyBy" - self.args = [Arg(f, Fun([Any], Any))] - - def _implementation(self): - return """ - | task KeyBy[T,K](f: fun(T):K): ~{v:T} -> ~{k:K,v:T} { - | loop { - | on event => emit f(event), - | } - | } - """ - - -class IteratorSource(Operator): - def __init__(self, iter): - self.name = "IteratorSource" - self.args = [Arg(iter, Iter(Any))] - - def __call__(self, ctx): - self.ctx = ctx - self.register() - ostream = Stream(self) - self.istreams = [] - self.ostreams = [ostream] - return ostream - - def _implementation(self): - return """ - | task IteratorSource[T](iter: Iterator[T]): () -> ~{k:T,v:T} { - | loop { - | match iter.next() { - | Some(event) => emit event, - | None => break - | } - | } - | } - """ diff --git a/arc-python/arclib/pipeline.py b/arc-python/arclib/pipeline.py deleted file mode 100644 index 781f2717e..000000000 --- a/arc-python/arclib/pipeline.py +++ /dev/null @@ -1,13 +0,0 @@ -from arclib.operator import * -from arclib.stream import * -from arclib.context import * - -class Pipeline: - def __init__(self): - self.ctx = Context() - - def iterator_source(self, iter): - return IteratorSource(iter)(self.ctx) - - def execute(self): - self.ctx.execute() diff --git a/arc-python/arclib/stream.py b/arc-python/arclib/stream.py deleted file mode 100644 index 4ad32f313..000000000 --- a/arc-python/arclib/stream.py +++ /dev/null @@ -1,41 +0,0 @@ -class Stream: - - def __init__(self, producer): - self.ctx = producer.ctx - self.producer = producer - self.consumers = [] - self.register() - - def register(self): - self.ctx.streams.append(self) - self.id = len(self.ctx.streams) - - def __str__(self): - return "s{}".format(self.id) - - def map(self, f): - from arclib.operator import Map - return Map(f)(self) - - def filter(self, f): - from arclib.operator import Filter - return Filter(f)(self) - - def flat_map(self, f): - from arclib.operator import FlatMap - return FlatMap(f)(self) - - def split(self, f): - from arclib.operator import Split - return Split(f)(self) - - def merge(self, other): - from arclib.operator import Union - return Union()(self, other) - - def key_by(self, f): - from arclib.operator import KeyBy - return KeyBy(f)(self) - - def execute(self): - self.ctx.execute() diff --git a/arc-python/arclib/types.py b/arc-python/arclib/types.py deleted file mode 100644 index 9fb01382e..000000000 --- a/arc-python/arclib/types.py +++ /dev/null @@ -1,88 +0,0 @@ -from arclib.codegen import * - - -# Arguments of an operator -class Arg(): - def __init__(self, value, type): - self.value = value - self.type = type - - -class Type(): - def is_function(self): return False - - def generate_arc(self): - sb = StringBuilder() - self.write_arc(sb) - return str(sb) - - def generate_rs(self): - sb = StringBuilder() - self.write_rs(sb) - return str(sb) - - -class Nominal(Type): - def __init__(self, name): - self.name = name - - def write_arc(self, w): - w.write(self.name) - - def write_rs(self, w): - w.write(self.name) - - -class Fun(Type): - def __init__(self, inputs, output): - self.inputs = inputs - self.output = output - - def is_function(self): return True - - def write_arc(self, w): - w.write("fun") - with Paren(w): - if len(self.inputs) > 0: - for elem in self.inputs[0:-1]: - elem.write_arc(w) - self.write(', ') - self.inputs[-1].write_arc(w) - w.write(":") - self.output.write_arc(w) - - def write_rs(self, w): - pass - - -class Vec(Type): - def __init__(self, elem_type): - self.elem_type = elem_type - - def write_arc(self, w): - with Brack(w): - self.elem_type.write_arc(w) - - def write_rs(self, w): - w.write("Vec") - with Angle(w): - self.elem_type.write_rs(w) - - -class Iter(Type): - def __init__(self, elem_type): - self.elem_type = elem_type - - def write_arc(self, w): - w.write("Iter") - with Brack(w): - self.elem_type.write_arc(w) - - def write_rs(self, w): - w.write("Iterator") - with Angle(w): - self.elem_type.write_rs(w) - - -Any = Nominal("Any") -Bool = Nominal("bool") diff --git a/arc-python/arclib/utils.py b/arc-python/arclib/utils.py deleted file mode 100644 index 482cd6dfd..000000000 --- a/arc-python/arclib/utils.py +++ /dev/null @@ -1,80 +0,0 @@ -import re - - -def trim(s): - return re.sub(r' +\| ', '', s) - - -class Writer(): - def __init__(self, path): - self.file = open(path, 'w') - - def __enter__(self): - return self - - def __exit__(self, type, value, traceback): - self.file.close() - - def write(self, s='\n'): - self.file.write(s) - - def write_trim(self, s): - self.write(trim(s)) - - def writeln(self, s=''): - self.write(s) - self.write('\n') - - def write_sep(self, list): - if len(list) > 0: - for elem in list[0:-1]: - self.write(str(elem)) - self.write(', ') - self.write(str(list[-1])) - - -class StringBuilder(Writer): - def __init__(self): - self.parts = [] - - def __str__(self): - return ''.join(self.parts) - - def write(self, s='\n'): - self.parts.append(s) - - -class Delim(): - def __enter__(self): - self.writer.write(self.l) - - def __exit__(self, type, value, traceback): - self.writer.write(self.r) - - -class Brace(Delim): - def __init__(self, writer): - self.l = ' {\n' - self.r = '}' - self.writer = writer - - -class Paren(Delim): - def __init__(self, writer): - self.l = '(' - self.r = ')' - self.writer = writer - - -class Angle(Delim): - def __init__(self, writer): - self.l = '<' - self.r = '>' - self.writer = writer - - -class Brack(Delim): - def __init__(self, writer): - self.l = '[' - self.r = ']' - self.writer = writer diff --git a/arc-python/setup.py b/arc-python/setup.py deleted file mode 100644 index 800b6ce79..000000000 --- a/arc-python/setup.py +++ /dev/null @@ -1,14 +0,0 @@ -from setuptools import find_packages, setup - -setup( - name='arclib', - packages=find_packages(include=['arclib', 'cloudpickle']), - version='0.1.0', - description='Library for data streaming', - author='Klas Segeljakt, Frej Drejhammar', - license='MIT', - install_requires=['cloudpickle'], - setup_requires=['pytest-runner'], - tests_require=['pytest==4.4.1'], - test_suite='tests', -) diff --git a/arc-python/tests/__init__.py b/arc-python/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/arc-python/tests/test_stream.py b/arc-python/tests/test_stream.py deleted file mode 100644 index d5d14b50f..000000000 --- a/arc-python/tests/test_stream.py +++ /dev/null @@ -1,20 +0,0 @@ -from arclib.stream import * -from arclib.operator import * -from arclib.pipeline import * - - -def test_pipeline1(): - data = [1, 2, 3, 4] - p = Pipeline() \ - .iterator_source(data) \ - .map(lambda x: x + 1) \ - .filter(lambda x: x % 2 == 0) \ - .execute() - - -def test_pipeline2(): - data = [1, 2, 3, 4] - s0 = Pipeline().iterator_source(data) - s1 = Map(lambda x: x + 1)(s0) - s2 = Filter(lambda x: x % 2 == 0)(s1) - s2.execute() diff --git a/arc-report/.gitignore b/arc-report/.gitignore deleted file mode 100644 index 2f7896d1d..000000000 --- a/arc-report/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target/ diff --git a/arc-report/Makefile b/arc-report/Makefile deleted file mode 100644 index bfaadcc4e..000000000 --- a/arc-report/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -all: - latexmk main.tex -xelatex -outdir=target -silent -bibtex -pdf > /dev/null diff --git a/arc-report/bibliography/references.bib b/arc-report/bibliography/references.bib deleted file mode 100644 index 9ce4d5f7c..000000000 --- a/arc-report/bibliography/references.bib +++ /dev/null @@ -1,29 +0,0 @@ -@misc{CDA-Midterm, - title={Continuous Deep Analytics - Midterm report}, - url={https://cda-group.github.io/papers/CDA-Midterm-Final.pdf}, - author={Haridi, Seif}, - year={2020} -} - -@misc{Keras, - title={Keras: the Python deep learning API}, - url={https://keras.io/}, - journal={Keras.io}, - author={Team, Keras}, - year={2021} -} - -@misc{Beam, - title={Apache Beam: An advanced unified programming model}, - author={Beam, Apache}, - year={2017} -} - -@inproceedings{Cypher, - title={Cypher: An evolving query language for property graphs}, - author={Francis, Nadime and Green, Alastair and Guagliardo, Paolo and Libkin, Leonid and Lindaaker, Tobias and Marsault, Victor and Plantikow, Stefan and Rydberg, Mats and Selmer, Petra and Taylor, Andr{\'e}s}, - booktitle={Proceedings of the 2018 International Conference on Management of Data}, - pages={1433--1445}, - year={2018} -} - diff --git a/arc-report/main.tex b/arc-report/main.tex deleted file mode 100644 index cacebf791..000000000 --- a/arc-report/main.tex +++ /dev/null @@ -1,100 +0,0 @@ -\documentclass{article} - -% Document -\usepackage{subfiles} % Allow splitting project into files - -% Text -\usepackage{inputenc} % Accept different input encodings -\usepackage[english]{babel} % Use english language - -% Figures -\usepackage{graphicx} % Include figures with \includegraphics -\usepackage{caption} % Captions for figures -\usepackage{framed} % Frames for figures - -% Tables -\usepackage{csvsimple} % Convert CSV files into LaTeX tables -\usepackage{longtable} % Tables that span multiple pages -\usepackage{booktabs} % Prettier tables -\usepackage{supertabular} % Tables that span multiple pages -\usepackage{multirow} % Nested rows in table - -% Notes -\usepackage{todonotes} % Add todo notes to text -\usepackage{marginnote} % Add todo notes to margin - -% References -\usepackage{natbib} % Flexible bibliography support - -% Spacing -\usepackage{titlesec} % Select alternative section titles - -% Lists -\usepackage{enumitem} % Enumerated lists - -% Fonts -\usepackage[T1]{fontenc} % Font encodings - -% Code -\usepackage{listings} % Code listings -\lstset{ - rangebeginprefix=\#\ ANCHOR:\ , - rangeendprefix=\#\ ANCHOR_END:\ , - includerangemarker=false -} - -\parskip 0pt % No vertical space between paragraphs -\setlist[itemize]{noitemsep, topsep=10pt} % No vertical space between list items - -% Comments -\newcounter{KlasNOC} -\newcounter{FrejNOC} -\newcounter{ParisNOC} - -\stepcounter{KlasNOC} -\stepcounter{FrejNOC} -\stepcounter{ParisNOC} - -\newcommand{\klas}[1]{\textcolor{aquamarine}{\small\bf[Klas\#\arabic{KlasNOC}\stepcounter{KlasNOC}:#1]}} -\newcommand{\frej}[1]{\textcolor{salmon}{\small\bf[Frej\#\arabic{FrejNOC}\stepcounter{FrejNOC}:#1]}} -\newcommand{\paris}[1]{\textcolor{dandelion}{\small\bf[Paris\#\arabic{ParisNOC}\stepcounter{ParisNOC}:#1]}} - -% Title -\title{Arc-Lang: Research Report} - -% Authors -\author{ - Klas Segeljakt\\\texttt{klasseg@kth.se} - \and - Frej Drejhammar\\\texttt{frej.drejhammar@ri.se} - \and - Paris Carbone\\\texttt{parisc@kth.se} - \and - Seif Haridi\\\texttt{haridi@kth.se} -} - -% Body -\begin{document} - -\maketitle - -\subfile{sections/abstract} - -\tableofcontents - -\subfile{sections/introduction} - -\subfile{sections/arc-lang} - -\subfile{sections/arc-mlir} - -\subfile{sections/arc-runtime} - -\subfile{sections/related-work} - -\subfile{sections/conclusion} - -\bibliographystyle{plain} -\bibliography{bibliography/references} - -\end{document} diff --git a/arc-report/sections/abstract.tex b/arc-report/sections/abstract.tex deleted file mode 100644 index 3335d6c41..000000000 --- a/arc-report/sections/abstract.tex +++ /dev/null @@ -1,14 +0,0 @@ -\begin{abstract} - -% What to include in the abstract: -% * The problem description of the paper -% - Data analysis is becoming more complicated from a programming standpoint. -% - Existing systems are not flexible enough to support new requirements. -% * The main idea and contributions of the paper -% - The main idea is to use a programming language to solve the problem. -% * The main results of the paper -% * The main conclusions of the paper - -Data analytics pipelines are becoming increasingly more complicated due to the growing number of requirements imposed by data science. Not only must data be processed and analyzed scalably with respect to its volume and velocity, but also intricately by involving many different data types. Arc-Lang is a programming language for data analytics that supports data parallel operations over multiple data types including data streams and data frames. In this paper we give a formal definition of Arc-Lang along with examples of its applications. We describe how Arc-Lang programs are translated into Rust using the MLIR compilation framework and then deployed on a distributed system. We compare Arc-Lang to different high-level DSLs for data intensive computing based on their problem domains, programming models, and implementations. Finally, we discuss future trends and open research questions in the area of DSLs for data intensive computing. - -\end{abstract} diff --git a/arc-report/sections/arc-lang.tex b/arc-report/sections/arc-lang.tex deleted file mode 100644 index 9fbc04191..000000000 --- a/arc-report/sections/arc-lang.tex +++ /dev/null @@ -1,36 +0,0 @@ -\section{Arc-Lang} - -% Introduction to what Arc-Lang is -Arc-Lang is a language for data analytics. - -\subsection{Tour of Arc-Lang} - -% Highlight each of Arc-Lang's novel features -% * Streams -% * Frames -% * Tensors -% * Tasks -This section highlights the main features of the Arc-Lang. - -% \lstinputlisting[linerange=example-example]{../arc-lang/examples/assign.arc} - -\subsection{Features} - -% * Functional Features (exposed to the user) -% - Values, types, and constructors and destructors -% - Statically vs Dynamically sized types -% - Type constraints -% - Pass by value -% - Difference between "Big Data" and "Small Data" -% - Controlflow -% - Dataflow -% - Declarative programming -% - Imperative programming -% - Concurrency -% - Workflow -% - Polymorphism -% * Non-Functional Features (not exposed to the user) -% - Parallelism -% * Go into the details of each feature. -% * Write about possible alternative designs. -% * Give examples for each feature diff --git a/arc-report/sections/arc-mlir.tex b/arc-report/sections/arc-mlir.tex deleted file mode 100644 index 2a44f7881..000000000 --- a/arc-report/sections/arc-mlir.tex +++ /dev/null @@ -1,82 +0,0 @@ -\section{Arc-MLIR} - -MLIR is used in the Arc-Lang compiler back-end. It is used for both standard compiler optimizations and transforms but also as convenient framework in which to express Arc-Lang-specific transforms. The MLIR/LLVM infrastructure for testing is also used to run Arc-Lang regression and unit tests. - -The purpose of the Arc-Lang compiler back-end is to do domain specific transforms and optimizations which improves the efficiency of the program when running on Arcon. Doing transforms such as operator fusion and operator reordering requires a number of standard compiler techniques such as liveness analysis, constant propagation and common sub-expression elimination. By using the MLIR infrastructure, which implements many of these standard algorithms, we can concentrate on what is specific to Arc-Lang. By using MLIR we also have a robust and extensible intermediary representation with tools for parsing, printing and verifying structure invariants of the processed program representation. - -TODO: MLIR blurb and flesh out the bullets. - -\begin{itemize} - \item [MLIR](https://mlir.llvm.org/) is a Multi-Level Intermediate Representation - \item Extensibility - \item Dialects - \item Types - \item Standard transforms and optimizations on custom dialects - \item Tooling infrastructure: command line parsing, debug flags, pass ordering, error reporting. - \item Testing support: Powerful DAG-matching tool to verify structure and syntax of output; Error report verification integration with the error reporting in the tooling infrastructure -\end{itemize} - -\subsection{Structure} - -The Arc-Lang front-end processes the Arc-Lang source code and produces a representation of the program in the arc-Lang MLIR dialect for further processing. The parts of the Arc-Lang compiler pipeline which uses MLIR is implemented in a tool called `arc-mlir`. The tool is implemented using the MLIR tooling framework and allows the user to, on the command line, select which optimizations and transforms to run. Input to the `arc-mlir` tool is MLIR-IR in the Arc-Lang dialect and output is in either: the Arc-Lang IR dialect, the Rust dialect or textual Rust source code. - -\subsection{The Arc MLIR Dialect} - -The Arc MLIR dialect is an MLIR dialect in which it is possible to represent all Arc-Lang language constructs in a way that allows the generation of a syntactically and semantically valid Rust program. The dialect consists of operations from the `standard`, `scf`, and `arith` dialects provided by upstream MLIR, but also a number of custom operations and types specific to Arc-Lang. - -\subsubsection{Arc Dialect Types} - -The \texttt{arc} dialect includes a number of types which are not provided by one of the upstream dialects, these include: -\begin{itemize} - \item \texttt{arc.adt} An opaque type which wraps a Rust type. It is preserved by all IR transformations. When Rust source code is output, values of this type will be declared as type \texttt{string}. - \item \texttt{arc.enum} A Rust-style enum. A discriminated union where each named variant maps to a type. Structural equality applies to enum types. - \item \texttt{arc.struct} An aggregate type which aggregates a set of named and typed fields. Structural equality applies to struct types. - \item \texttt{arc.stream} A type which corresponds to event streams in Arc-Lang. The stream is instantiated with the type of the event it carries. -\end{itemize} - -\subsubsection{Custom Arc Dialect Operations} - -In the \texttt{arith} dialect, MLIR provides arithmetic operations on integer and floating point values. MLIR provides three integer types: one type which only specifies the number of bits \texttt{i}, an explicitly signed integer type \texttt{si}, and an explicitly unsigned integer type. The arithmetic operations on integers in \texttt{arith} are only specified for the \texttt{i} integer type. In that, \texttt{arith} follows the model chosen by LLVM in that the signed/unsigned semantics for an operation is selected by the operation, for example \texttt{divi}/\texttt{divui} for signed/unsigned integer division. As both our input and output languages (Arc-Lang and Rust respectively) derive the signed/unsigned semantics from the type, we have chosen to use the explicitly signed/unsigned integer types. The alternative would require the component responsible for Rust output to derive the type of integer variables from the operations applied to them, something that is not always possible if no operations with different semantics are applied to them. Therefore the \texttt{arc} dialect defines its own polymorphic arithmetic operations operating on signed/unsigned integers. - -TODO: operations - -TODO: event handler - -TODO: Structure of the Arc-Lang program: Each block produces a result, SSA-ish. No branches between blocks. - -TODO: structured control flow - -\subsubsection{Rust MLIR Dialect} - -TODO: Operations which capture the structure of Rust. - -TODO: Types are the rust type as a string. - -TODO: Name mangling to produce Rust type names for the aggregate types. - -TODO: Not intended to be the subject of any transforms or optimizations, that is done by rustc. - -\subsection{Standard Transforms and Optimizations} - -TODO: canonicalization; CSE; constant propagation and folding; constant lifting. - -\subsection{Custom Transforms} - -TODO: From SCF to BBs: In order to use additional optimizations and -transforms. - -TODO: From BBs to SCF, needed for Rust (no goto). - -TODO: FSM-transform, for selective and nested receive in event handlers. - -\subsection{Rust Output} - -TODO: Abstracting away reference counting, borrows etc. Handled by macros in the runtime system libraries. - -TODO: No formatting, rustfmt handles that. - -\subsection{Testing} - -TODO: Use Lit for unit and regression tests - -TODO: Use built-in support in tooling to check that errors occur where we expect them. diff --git a/arc-report/sections/arc-runtime.tex b/arc-report/sections/arc-runtime.tex deleted file mode 100644 index acd711239..000000000 --- a/arc-report/sections/arc-runtime.tex +++ /dev/null @@ -1 +0,0 @@ -\section{Arc-Runtime} diff --git a/arc-report/sections/conclusion.tex b/arc-report/sections/conclusion.tex deleted file mode 100644 index 5e874985b..000000000 --- a/arc-report/sections/conclusion.tex +++ /dev/null @@ -1 +0,0 @@ -\section{Conclusion} diff --git a/arc-report/sections/introduction.tex b/arc-report/sections/introduction.tex deleted file mode 100644 index 8e95fc2fc..000000000 --- a/arc-report/sections/introduction.tex +++ /dev/null @@ -1,87 +0,0 @@ -\section{Introduction} - -% What is the problem? -% 1) Data is being generated at an accelerating rate: -% - It is not feasible to store all data in a database. -% 2) Data is becoming more accessible to the public domain. -% - This has caused an emergence of applications and new requirements. -% - We are seeing applications that use different types of data. -% - Current languages are too constrained to alone support these requirements. -% 3) Data is being generated by more devices, some of which are at the edge. -% - It is not feasible to run all data processing in a cloud environment. -% -% Requirements based on the problems -% - Systems must be able to ... -% 1) Scale against the velocity with which data is generated -% - Process data in a streaming mode "as it is being generated" -% 2) Scale against increasing data volumes -% - Process data in a batch mode "after all data has been generated" -% 3) Scale against the complexity of new requirements in the application -% - Process data of different types in a concise way -% 4) Scale against the heterogeneity of the execution environments -% - Process data from different types of devices -% - Process data at different types of devices -% - Programs must be able to run on any type of device -% - Programs should be .. -% 1) Easy to write (few lines of code) -% 2) Easy to run (deployment) -% 3) Easy to scale - -The amount of data generated by the world is increasing at an alarming rate. Data is also becoming more accessible to the public domain. This has caused an emergence of applications in data science that must run in different environments that include consumer-grade hardware, large scale cloud centers, and resource-constrained edge devices. Streaming sensor data, graph social networks, relational tables of product information, and tensors of climate science image data are few examples of datasets that can scale to the point where they can no longer be managed by a single machine. As a result, distributed shared-nothing data-parallel systems have become the norm for data intensive computing. These systems are able to scale against increasing problem sizes by partitioning data and parallelising computation across machines. Distributed systems programming, in its barest form, is however known to be notoriously difficult. - -Without proper abstraction, application developers must manage problems such as fault tolerance and coordination while considering tradeoffs in security and efficiency. To this end, distributed systems leverage high-level DSLs in the form of query languages, frameworks, and libraries, which are more friendly towards end-users. DSLs allow developers to focus on domain-specific problems, such as the development of algorithms, and to disregard engineering-related issues. Not only do DSLs lend themselves to improved ease of use, but also optimisation potential. DSLs in the form of intermediate languages have been adopted by multiple systems both as a solution to enable reuse by breaking the dependence between the program specification and its execution, and to enable target-independent optimisation. - -Not only is data becoming more widespread, but also more complex. DSLs must be able to express algorithms over many different types of data. Examples of such DSLs include Keras\cite{Keras} for machine learning and serving, SQL for data management, Apache Beam\cite{Beam} for stream processing, and Cypher\cite{Cypher} for graph analytics. While these DSLs are highly optimised towards specific applications, users are met with problems when trying to combine fragments of different DSLs to solve more advanced problems. First, users must pay the price of serialisation and data movement costs between systems due to the lack of a common data format, and hardware resource contention due to the lack of a common scheduler. Second, users must manage the impedance mismatch in guarantees between each system such as consistency, availability, and security. Third, users must learn how to program with tools of different systems, which may have widely different syntax and semantics. - -We believe there is a need for a common DSL, IR, and execution environment for respectively expressing, optimising, and executing computations over different high-level data types. The functional requirements that this DSL must support are as follows: - -\begin{itemize} - \item \textbf{Big Data Abstractions}: The DSL should be able to express algorithms over massive and rapidly growing collections of data. In particular, streams, tensors, frames, and graphs. - \item \textbf{User-Defined Behavior}: The DSL should be able to express user-defined behavior. For example, user-defined functions and datatypes. -\end{itemize} - -The non-functional requirements that the runtime system must satisfy are as follows: - -\begin{itemize} - \item \textbf{Fault Tolerance}: The system should be able to sustain machine failure with efficiency. That is, without restarting the whole computation. -\end{itemize} - -% The need for real-time analytics to uncover the deeper meaning of live data has become more prominent in recent years. In both academia and industry, large scale machine learning systems are a prime focus of research. Such systems have been optimised to train opaque machine learning models of many parameters against large amounts of input data. As an example, GPT-3 by OpenAI is the hallmark of general pre-trained models for language prediction. GPT-3 holds a capacity of 175 billion parameters and was trained on a dataset which effectively amounts to the entire Internet. - -% While the models and the supporting technologies behind them have been fine-tuned for accuracy and performance, less effort has been dedicated to their integration with \textit{real-time analytics}. For this reason, the leap from prototyping a machine learning model to deploying it as an online service for mission-critical decision making requires both major engineering effort and domain expertise. Examples of such services include anomaly detection, adaptive recommender systems, time series forecasting, and real-time monitoring. More generally, the requirements these services specifically pose are that they must operate continuously with tolerance to failure, adaptively with respect to concept drift and resource changes, and flexibly by incorporating business logic. - -% To this end, data analysts resort to system-frameworks for data intensive computing which provide a means for writing applications oriented around specific abstract data types and operations. By being abstract, analysts are able to ask questions about data to a system without needing to know the how the system arrives at its conclusions. Modern representative examples of such frameworks include: - -% \begin{itemize} -% \item \textbf{TensorFlow} \cite{TensorFlow}, a framework for portable machine learning oriented around tensors and linear algebra. -% \item \textbf{Apache Flink} \cite{Flink}, a framework for low-latency stream processing oriented around data streams and stateful event-based logic. -% \item \textbf{Apache Spark} \cite{Spark}, a framework for high-throughput batch processing oriented around data frames and relational algebra. -% \item \textbf{Apache Giraph} \cite{Giraph}, a framework for large scale graph processing oriented around vertex-centric computation. -% \item \textbf{Ray RLib} \cite{Ray}, a framework for distributed reinforcement learning oriented around agents, environments, and policies. -% \end{itemize} -% -% A typical end-to-end deep analytics pipeline combines traditional data processing stages with machine learning and therefore requires a system and framework that supports relational algebra, graph processing, and linear algebra components. There is no doubt a combination of the aforementioned frameworks could be used for such analytics. However, as of yet there exists no framework and system that bridges each of the programming models and workloads while also supporting the real-time aspect of live data. This problem forces developers to deal with two types of complexity. First, they have to learn how to use and integrate multiple frameworks which in the worst case are written in different programming languages. Second, they have to consider low-level details that concern how systems interact, such as state management and data transfer, to achieve good performance. -% -% In the CDA group, we are addressing this problem by engineering a whole new infrastructure for Continuous Deep Analytics. This infrastructure includes 1) a middleware for building distributed systems\footnote{Website: https://github.com/kompics/kompact}, 2) a distributed system built on top of the middleware for scalable stream and batch processing \citeP{Arcon} \footnote{Website: https://github.com/cda-group/arcon}, and 3) a domain-specific language for data science integrated to the system for programming with multiple abstract data types \citeP{Arc} \footnote{Website: https://github.com/cda-group/arc}. CDA is an interdisciplinary project funded by SSF, driven by a world-leading team of researchers at RISE and KTH, and destined to finish in the summer of 2023. The project in addition includes research on the development of novel online machine learning algorithms to be deployed on the CDA infrastructure. Project goals and preliminary results can be read more about in our midterm report \cite{CDA-Midterm}. - -% * What is the problem? -% * What is the vision? (ideal solution) -% * What is our approach? (The CDA system: Applications, Arc-Lang, Arc-MLIR, Arcon, Kompact) -% * What are the challenges (requirements)? - -% * Research Questions and Hypotheses -% * Background + Related Work (Existing solutions) -% * Problem and Motivation (Why Arc-Lang?) -% * Applications (What can Arc-Lang do / not do?) -% * Design principles - -% * Unique features (What makes Arc-Lang special?) -% * Common features (What does Arc-Lang borrow from other solutions?) -% * Example programs (How can you use the features to solve problems?) - -% Describe the language: Syntax and semantics - -% Describe the runtime -% * Channels -% * Tasks -% * Data structures diff --git a/arc-report/sections/related-work.tex b/arc-report/sections/related-work.tex deleted file mode 100644 index eb1d03d01..000000000 --- a/arc-report/sections/related-work.tex +++ /dev/null @@ -1 +0,0 @@ -\section{Related Work} diff --git a/arc-runtime/.gitignore b/arc-runtime/.gitignore deleted file mode 100644 index eb5a316cb..000000000 --- a/arc-runtime/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target diff --git a/arc-runtime/Cargo.lock b/arc-runtime/Cargo.lock deleted file mode 100644 index b28d924c5..000000000 --- a/arc-runtime/Cargo.lock +++ /dev/null @@ -1,3370 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "ahash" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" -dependencies = [ - "getrandom 0.2.8", - "once_cell", - "version_check 0.9.4", -] - -[[package]] -name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anyhow" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" - -[[package]] -name = "arc-runtime" -version = "0.0.0" -dependencies = [ - "arrow2 0.9.2", - "comet-extra", - "derive_more", - "dyn-clone", - "futures", - "hexf", - "kompact", - "macros", - "omnipaxos", - "polars", - "rand 0.8.5", - "replace_with", - "serde", - "serde_derive", - "slog", - "time 0.3.17", - "tokio", - "uuid 0.8.2", -] - -[[package]] -name = "arc-swap" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dabe5a181f83789739c194cbe5a897dde195078fac08568d09221fd6137a7ba8" - -[[package]] -name = "arr_macro" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a105bfda48707cf19220129e78fca01e9639433ffaef4163546ed8fb04120a5" -dependencies = [ - "arr_macro_impl", - "proc-macro-hack", -] - -[[package]] -name = "arr_macro_impl" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0609c78bd572f4edc74310dfb63a01f5609d53fa8b4dd7c4d98aef3b3e8d72d1" -dependencies = [ - "proc-macro-hack", - "quote", - "syn", -] - -[[package]] -name = "arrayref" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "arrow2" -version = "0.9.1" -source = "git+https://github.com/jorgecarleitao/arrow2?rev=2c4dbb21daa4f258fd707a3f3c2cbe5abb374f6b#2c4dbb21daa4f258fd707a3f3c2cbe5abb374f6b" -dependencies = [ - "bytemuck", - "chrono", - "csv", - "either", - "hash_hasher", - "lexical-core", - "multiversion", - "num-traits", - "simdutf8", - "streaming-iterator", - "strength_reduce", -] - -[[package]] -name = "arrow2" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185b18ba35287d4e6989e451ab3d184f4699befaa05cf95b0da74152b0c5c24a" -dependencies = [ - "bytemuck", - "chrono", - "hash_hasher", - "num-traits", - "simdutf8", -] - -[[package]] -name = "as_num" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62eaa19b325e1b3dc2f7b9b6de544dd536619e3dcf986fc391b2c643f10d68c0" - -[[package]] -name = "async-channel" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-executor" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" -dependencies = [ - "async-lock", - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "slab", -] - -[[package]] -name = "async-global-executor" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" -dependencies = [ - "async-channel", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", -] - -[[package]] -name = "async-io" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794" -dependencies = [ - "async-lock", - "autocfg", - "concurrent-queue", - "futures-lite", - "libc", - "log", - "parking", - "polling", - "slab", - "socket2", - "waker-fn", - "windows-sys 0.42.0", -] - -[[package]] -name = "async-lock" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" -dependencies = [ - "event-listener", - "futures-lite", -] - -[[package]] -name = "async-std" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" -dependencies = [ - "async-channel", - "async-global-executor", - "async-io", - "async-lock", - "crossbeam-utils 0.8.14", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", -] - -[[package]] -name = "async-task" -version = "4.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" - -[[package]] -name = "atomic" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" -dependencies = [ - "autocfg", -] - -[[package]] -name = "atomic-waker" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "backtrace" -version = "0.3.67" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" -dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitfields" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a0dd3fdef66457be053e25548d0f9b75f389547c897739daa13d39db01bf0a" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitmaps" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" -dependencies = [ - "typenum", -] - -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq", -] - -[[package]] -name = "blocking" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8" -dependencies = [ - "async-channel", - "async-lock", - "async-task", - "atomic-waker", - "fastrand", - "futures-lite", -] - -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" - -[[package]] -name = "bytemuck" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aca418a974d83d40a0c1f0c5cba6ff4bc28d8df099109ca459a2118d40b6322" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" -dependencies = [ - "serde", -] - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-integer", - "num-traits", - "time 0.1.45", - "wasm-bindgen", - "winapi", -] - -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "comet" -version = "0.1.0" -source = "git+https://github.com/Starlight-JS/comet?rev=c2f96f8#c2f96f899cd43a2507b8298f2408a5039b65559f" -dependencies = [ - "ahash", - "atomic", - "bit-vec", - "crossbeam", - "flume", - "hashbrown 0.11.2", - "im", - "libc", - "memx", - "mopa", - "parking_lot 0.11.2", - "rand 0.8.5", - "rosalloc", - "scoped_threadpool", - "threadfin", - "winapi", -] - -[[package]] -name = "comet-extra" -version = "0.1.0" -source = "git+https://github.com/Starlight-JS/comet?rev=c2f96f8#c2f96f899cd43a2507b8298f2408a5039b65559f" -dependencies = [ - "ahash", - "cfg-if 1.0.0", - "comet", -] - -[[package]] -name = "concurrent-queue" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" -dependencies = [ - "crossbeam-utils 0.8.14", -] - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" - -[[package]] -name = "cpufeatures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" -dependencies = [ - "libc", -] - -[[package]] -name = "crossbeam" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-channel 0.5.6", - "crossbeam-deque 0.8.2", - "crossbeam-epoch 0.9.13", - "crossbeam-queue 0.3.8", - "crossbeam-utils 0.8.14", -] - -[[package]] -name = "crossbeam-channel" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" -dependencies = [ - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.14", -] - -[[package]] -name = "crossbeam-deque" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20ff29ded3204c5106278a81a38f4b482636ed4fa1e6cfbeef193291beb29ed" -dependencies = [ - "crossbeam-epoch 0.8.2", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-epoch 0.9.13", - "crossbeam-utils 0.8.14", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "lazy_static", - "maybe-uninit", - "memoffset 0.5.6", - "scopeguard", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" -dependencies = [ - "autocfg", - "cfg-if 1.0.0", - "crossbeam-utils 0.8.14", - "memoffset 0.7.1", - "scopeguard", -] - -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if 0.1.10", - "crossbeam-utils 0.7.2", - "maybe-uninit", -] - -[[package]] -name = "crossbeam-queue" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils 0.8.14", -] - -[[package]] -name = "crossbeam-utils" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" -dependencies = [ - "autocfg", - "cfg-if 0.1.10", - "lazy_static", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "csv" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" -dependencies = [ - "bstr", - "csv-core", - "itoa 0.4.8", - "ryu", - "serde", -] - -[[package]] -name = "csv-core" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" -dependencies = [ - "memchr", -] - -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "cxx" -version = "1.0.90" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90d59d9acd2a682b4e40605a242f6670eaa58c5957471cbf85e8aa6a0b97a5e8" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.90" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebfa40bda659dd5c864e65f4c9a2b0aff19bea56b017b9b77c73d3766a453a38" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.90" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "457ce6757c5c70dc6ecdbda6925b958aae7f959bda7d8fb9bde889e34a09dc03" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.90" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf883b7aacd7b2aeb2a7b338648ee19f57c140d4ee8e52c68979c6b2f7f2263" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "dirs" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" -dependencies = [ - "libc", - "redox_users 0.3.5", - "winapi", -] - -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users 0.4.3", - "winapi", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users 0.4.3", - "winapi", -] - -[[package]] -name = "dyn-clone" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b0705efd4599c15a38151f4721f7bc388306f61084d3bfd50bd07fbca5cb60" - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[package]] -name = "encode_unicode" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - -[[package]] -name = "encoding" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" -dependencies = [ - "encoding-index-japanese", - "encoding-index-korean", - "encoding-index-simpchinese", - "encoding-index-singlebyte", - "encoding-index-tradchinese", -] - -[[package]] -name = "encoding-index-japanese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-korean" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-simpchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-singlebyte" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding-index-tradchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" -dependencies = [ - "encoding_index_tests", -] - -[[package]] -name = "encoding_index_tests" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" - -[[package]] -name = "encoding_rs" -version = "0.8.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "executors" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f99e7b1533b6caa2e16120bfc652aeb087c9197b1bf419edfc8587e6022f2fc9" -dependencies = [ - "arr_macro", - "async-task", - "crossbeam-channel 0.4.4", - "crossbeam-deque 0.7.4", - "crossbeam-utils 0.7.2", - "log", - "num_cpus", - "rand 0.7.3", - "synchronoise", - "threadpool", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "fastrand" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" -dependencies = [ - "instant", -] - -[[package]] -name = "flume" -version = "0.10.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" -dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "pin-project", - "spin", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" - -[[package]] -name = "futures-executor" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" - -[[package]] -name = "futures-lite" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-macro" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" - -[[package]] -name = "futures-task" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" - -[[package]] -name = "futures-util" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec" - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "h2" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hash_hasher" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74721d007512d0cb3338cd20f0654ac913920061a4c4d0d8708edb3f2a698c0c" - -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" -dependencies = [ - "ahash", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash", - "rayon", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hexf" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6618f4550dcd7d9ddb5126ab18d48dfa31aa952159cb832390bda464d3bc827e" -dependencies = [ - "hexf-parse", - "syn", -] - -[[package]] -name = "hexf-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" - -[[package]] -name = "hierarchical_hash_wheel_timer" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98bf257dbe2c3df82648395943dfbcb113100235e4f7dea079fdf012e6a7ff3" -dependencies = [ - "crossbeam-channel 0.5.6", - "rustc-hash", - "uuid 1.3.0", -] - -[[package]] -name = "hocon" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8249bcd360b81ac97a9c42fe46e08c520f0c9942a16cae6670979e6ea1759b4" -dependencies = [ - "failure", - "java-properties", - "memchr", - "nom", - "serde_path_to_error", - "uuid 0.8.2", -] - -[[package]] -name = "hocon" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b343112b7ebf5f59651daf37533fc623b88b4363111a883ed9448fdc38e0b73" -dependencies = [ - "java-properties", - "memchr", - "nom", - "reqwest", - "serde", - "serde_path_to_error", - "thiserror", - "uuid 0.8.2", -] - -[[package]] -name = "http" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" -dependencies = [ - "bytes", - "fnv", - "itoa 1.0.5", -] - -[[package]] -name = "http-body" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[package]] -name = "hyper" -version = "0.14.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa 1.0.5", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "winapi", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" -dependencies = [ - "cxx", - "cxx-build", -] - -[[package]] -name = "idna" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "im" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" -dependencies = [ - "bitmaps", - "rand_core 0.6.4", - "rand_xoshiro", - "sized-chunks", - "typenum", - "version_check 0.9.4", -] - -[[package]] -name = "indexmap" -version = "1.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "ipnet" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" - -[[package]] -name = "iprange" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37209be0ad225457e63814401415e748e2453a5297f9b637338f5fb8afa4ec00" -dependencies = [ - "ipnet", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" - -[[package]] -name = "java-properties" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1904d8654a1ef51034d02d5a9411b50bf91bea15b0ab644ae179d1325976263" -dependencies = [ - "encoding", - "lazy_static", - "regex", -] - -[[package]] -name = "js-sys" -version = "0.3.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "kompact" -version = "0.11.0" -source = "git+https://github.com/kompics/kompact?rev=e9deae8#e9deae85085a26e3c647dd8eaa21c47594bc7c0d" -dependencies = [ - "arc-swap", - "as_num", - "async-std", - "bitfields", - "bytes", - "crossbeam-channel 0.4.4", - "crossbeam-queue 0.2.3", - "crossbeam-utils 0.7.2", - "executors", - "futures", - "hierarchical_hash_wheel_timer", - "hocon 0.3.7", - "iovec", - "ipnet", - "iprange", - "kompact-actor-derive", - "kompact-component-derive", - "log", - "lru", - "mio 0.7.14", - "num_cpus", - "oncemutex", - "owning_ref", - "rustc-hash", - "rustc_version 0.2.3", - "serde", - "slog", - "slog-async", - "slog-term", - "synchronoise", - "uuid 0.8.2", -] - -[[package]] -name = "kompact-actor-derive" -version = "0.11.0" -source = "git+https://github.com/kompics/kompact?rev=e9deae8#e9deae85085a26e3c647dd8eaa21c47594bc7c0d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "kompact-component-derive" -version = "0.11.0" -source = "git+https://github.com/kompics/kompact?rev=e9deae8#e9deae85085a26e3c647dd8eaa21c47594bc7c0d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "lexical" -version = "6.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" -dependencies = [ - "lexical-core", -] - -[[package]] -name = "lexical-core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" -dependencies = [ - "lexical-parse-float", - "lexical-parse-integer", - "lexical-util", - "lexical-write-float", - "lexical-write-integer", -] - -[[package]] -name = "lexical-parse-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" -dependencies = [ - "lexical-parse-integer", - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-parse-integer" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" -dependencies = [ - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-util" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" -dependencies = [ - "static_assertions", -] - -[[package]] -name = "lexical-write-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" -dependencies = [ - "lexical-util", - "lexical-write-integer", - "static_assertions", -] - -[[package]] -name = "lexical-write-integer" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" -dependencies = [ - "lexical-util", - "static_assertions", -] - -[[package]] -name = "libc" -version = "0.2.139" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" - -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - -[[package]] -name = "lock_api" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if 1.0.0", - "value-bag", -] - -[[package]] -name = "lru" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91" -dependencies = [ - "hashbrown 0.11.2", -] - -[[package]] -name = "macros" -version = "0.0.0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memmap2" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc" -dependencies = [ - "libc", -] - -[[package]] -name = "memoffset" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memx" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841cdfecbf7320309a66aa9f3aaf074018f7584b4d05d6a0e1fdf31f6e3aaa51" -dependencies = [ - "cpufeatures", - "rustc_version 0.4.0", -] - -[[package]] -name = "mime" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" - -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.7.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" -dependencies = [ - "libc", - "log", - "miow", - "ntapi", - "winapi", -] - -[[package]] -name = "mio" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" -dependencies = [ - "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.42.0", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", -] - -[[package]] -name = "mopa" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a785740271256c230f57462d3b83e52f998433a7062fc18f96d5999474a9f915" - -[[package]] -name = "multiversion" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025c962a3dd3cc5e0e520aa9c612201d127dcdf28616974961a649dca64f5373" -dependencies = [ - "multiversion-macros", -] - -[[package]] -name = "multiversion-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a3e2bde382ebf960c1f3e79689fa5941625fe9bf694a1cb64af3e85faff3af" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom 0.2.8", -] - -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "nom" -version = "4.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" -dependencies = [ - "memchr", - "version_check 0.1.5", -] - -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi", -] - -[[package]] -name = "num" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-complex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -dependencies = [ - "hermit-abi 0.2.6", - "libc", -] - -[[package]] -name = "num_threads" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" -dependencies = [ - "libc", -] - -[[package]] -name = "object" -version = "0.30.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" -dependencies = [ - "memchr", -] - -[[package]] -name = "omnipaxos" -version = "0.1.0" -source = "git+https://github.com/haraldng/omnipaxos?rev=36dd86d#36dd86dfadaf91f442a3ad35c6cc01fd129d0f4a" -dependencies = [ - "hocon 0.5.2", - "slog", - "slog-async", - "slog-term", -] - -[[package]] -name = "once_cell" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" - -[[package]] -name = "oncemutex" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d11de466f4a3006fe8a5e7ec84e93b79c70cb992ae0aa0eb631ad2df8abfe2" - -[[package]] -name = "openssl" -version = "0.10.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" -dependencies = [ - "bitflags", - "cfg-if 1.0.0", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" -dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "owning_ref" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "parking" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.6", -] - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core 0.9.7", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" -dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "winapi", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "windows-sys 0.45.0", -] - -[[package]] -name = "percent-encoding" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" - -[[package]] -name = "pin-project" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" - -[[package]] -name = "polars" -version = "0.19.1" -source = "git+https://github.com/pola-rs/polars?rev=a04786c#a04786c9d626e2f4fc5362213a660e8897559b38" -dependencies = [ - "polars-core", - "polars-io", - "polars-lazy", - "polars-time", -] - -[[package]] -name = "polars-arrow" -version = "0.19.1" -source = "git+https://github.com/pola-rs/polars?rev=a04786c#a04786c9d626e2f4fc5362213a660e8897559b38" -dependencies = [ - "arrow2 0.9.1", - "hashbrown 0.12.3", - "num", - "thiserror", -] - -[[package]] -name = "polars-core" -version = "0.19.1" -source = "git+https://github.com/pola-rs/polars?rev=a04786c#a04786c9d626e2f4fc5362213a660e8897559b38" -dependencies = [ - "ahash", - "anyhow", - "arrow2 0.9.1", - "chrono", - "hashbrown 0.12.3", - "lazy_static", - "num", - "num_cpus", - "polars-arrow", - "prettytable-rs", - "rayon", - "regex", - "thiserror", - "unsafe_unwrap", -] - -[[package]] -name = "polars-io" -version = "0.19.1" -source = "git+https://github.com/pola-rs/polars?rev=a04786c#a04786c9d626e2f4fc5362213a660e8897559b38" -dependencies = [ - "ahash", - "anyhow", - "arrow2 0.9.1", - "csv-core", - "dirs 4.0.0", - "lazy_static", - "lexical", - "memchr", - "memmap2", - "num", - "num_cpus", - "polars-arrow", - "polars-core", - "rayon", - "regex", - "simdutf8", -] - -[[package]] -name = "polars-lazy" -version = "0.19.1" -source = "git+https://github.com/pola-rs/polars?rev=a04786c#a04786c9d626e2f4fc5362213a660e8897559b38" -dependencies = [ - "ahash", - "glob", - "polars-arrow", - "polars-core", - "polars-io", - "polars-time", - "polars-utils", - "rayon", -] - -[[package]] -name = "polars-time" -version = "0.1.1" -source = "git+https://github.com/pola-rs/polars?rev=a04786c#a04786c9d626e2f4fc5362213a660e8897559b38" -dependencies = [ - "chrono", - "polars-arrow", - "polars-core", -] - -[[package]] -name = "polars-utils" -version = "0.1.0" -source = "git+https://github.com/pola-rs/polars?rev=a04786c#a04786c9d626e2f4fc5362213a660e8897559b38" -dependencies = [ - "parking_lot 0.11.2", -] - -[[package]] -name = "polling" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6" -dependencies = [ - "autocfg", - "cfg-if 1.0.0", - "libc", - "log", - "wepoll-ffi", - "windows-sys 0.42.0", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "prettytable-rs" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fd04b170004fa2daccf418a7f8253aaf033c27760b5f225889024cf66d7ac2e" -dependencies = [ - "atty", - "csv", - "encode_unicode", - "lazy_static", - "term 0.5.2", - "unicode-width", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - -[[package]] -name = "proc-macro2" -version = "1.0.51" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.8", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_xoshiro" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" -dependencies = [ - "rand_core 0.6.4", -] - -[[package]] -name = "rayon" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" -dependencies = [ - "crossbeam-channel 0.5.6", - "crossbeam-deque 0.8.2", - "crossbeam-utils 0.8.14", - "num_cpus", -] - -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_users" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" -dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", -] - -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom 0.2.8", - "redox_syscall 0.2.16", - "thiserror", -] - -[[package]] -name = "regex" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" - -[[package]] -name = "regex-syntax" -version = "0.6.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] - -[[package]] -name = "replace_with" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a8614ee435691de62bcffcf4a66d91b3594bf1428a5722e79103249a095690" - -[[package]] -name = "reqwest" -version = "0.11.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9" -dependencies = [ - "base64 0.21.0", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "rosalloc" -version = "0.1.0" -source = "git+https://github.com/playxe/rosalloc#3b108802930e835aba3f6ffe6041cff8c3bbf3d7" -dependencies = [ - "cfg-if 1.0.0", - "indexmap", - "libc", - "log", - "memx", - "parking_lot 0.12.1", - "thread_local", -] - -[[package]] -name = "rust-argon2" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" -dependencies = [ - "base64 0.13.1", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils 0.8.14", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver 1.0.16", -] - -[[package]] -name = "rustversion" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" - -[[package]] -name = "ryu" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" - -[[package]] -name = "schannel" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" -dependencies = [ - "windows-sys 0.42.0", -] - -[[package]] -name = "scoped_threadpool" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "scratch" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" - -[[package]] -name = "security-framework" -version = "2.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - -[[package]] -name = "serde" -version = "1.0.152" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" - -[[package]] -name = "serde_derive" -version = "1.0.152" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" -dependencies = [ - "itoa 1.0.5", - "ryu", - "serde", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b04f22b563c91331a10074bda3dd5492e3cc39d56bd557e91c0af42b6c7341" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa 1.0.5", - "ryu", - "serde", -] - -[[package]] -name = "simdutf8" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" - -[[package]] -name = "sized-chunks" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" -dependencies = [ - "bitmaps", - "typenum", -] - -[[package]] -name = "slab" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" -dependencies = [ - "autocfg", -] - -[[package]] -name = "slog" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" - -[[package]] -name = "slog-async" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766c59b252e62a34651412870ff55d8c4e6d04df19b43eecb2703e417b097ffe" -dependencies = [ - "crossbeam-channel 0.5.6", - "slog", - "take_mut", - "thread_local", -] - -[[package]] -name = "slog-term" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87d29185c55b7b258b4f120eab00f48557d4d9bc814f41713f449d35b0f8977c" -dependencies = [ - "atty", - "slog", - "term 0.7.0", - "thread_local", - "time 0.3.17", -] - -[[package]] -name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "socket2" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "spin" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dccf47db1b41fa1573ed27ccf5e08e3ca771cb994f776668c5ebda893b248fc" -dependencies = [ - "lock_api", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "streaming-iterator" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520" - -[[package]] -name = "strength_reduce" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" - -[[package]] -name = "syn" -version = "1.0.107" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synchronoise" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dbc01390fc626ce8d1cffe3376ded2b72a11bb70e1c75f404a210e4daa4def2" -dependencies = [ - "crossbeam-queue 0.3.8", -] - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "unicode-xid", -] - -[[package]] -name = "take_mut" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" - -[[package]] -name = "tempfile" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" -dependencies = [ - "cfg-if 1.0.0", - "fastrand", - "libc", - "redox_syscall 0.2.16", - "remove_dir_all", - "winapi", -] - -[[package]] -name = "term" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" -dependencies = [ - "byteorder", - "dirs 1.0.5", - "winapi", -] - -[[package]] -name = "term" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" -dependencies = [ - "dirs-next", - "rustversion", - "winapi", -] - -[[package]] -name = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thiserror" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if 1.0.0", - "once_cell", -] - -[[package]] -name = "threadfin" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b43bcb2a0564c222b9d68957c0aba6f6112ebaef133cd90303e82b6ec8136558" -dependencies = [ - "crossbeam-channel 0.5.6", - "num_cpus", - "once_cell", - "waker-fn", -] - -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - -[[package]] -name = "time" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" -dependencies = [ - "itoa 1.0.5", - "libc", - "num_threads", - "rand 0.8.5", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" - -[[package]] -name = "time-macros" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" -dependencies = [ - "time-core", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af" -dependencies = [ - "autocfg", - "bytes", - "libc", - "memchr", - "mio 0.8.5", - "num_cpus", - "pin-project-lite", - "socket2", - "windows-sys 0.42.0", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if 1.0.0", - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "unicode-bidi" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" - -[[package]] -name = "unicode-ident" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "unsafe_unwrap" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1230ec65f13e0f9b28d789da20d2d419511893ea9dac2c1f4ef67b8b14e5da80" - -[[package]] -name = "url" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.8", -] - -[[package]] -name = "uuid" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" -dependencies = [ - "getrandom 0.2.8", -] - -[[package]] -name = "value-bag" -version = "1.0.0-alpha.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" -dependencies = [ - "ctor", - "version_check 0.9.4", -] - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version_check" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "waker-fn" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" -dependencies = [ - "cfg-if 1.0.0", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" - -[[package]] -name = "web-sys" -version = "0.3.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "wepoll-ffi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" -dependencies = [ - "cc", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.42.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" - -[[package]] -name = "winreg" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" -dependencies = [ - "winapi", -] diff --git a/arc-runtime/Cargo.toml b/arc-runtime/Cargo.toml deleted file mode 100644 index cea917987..000000000 --- a/arc-runtime/Cargo.toml +++ /dev/null @@ -1,44 +0,0 @@ -[package] -name = "arc-runtime" -version = "0.0.0" -authors = ["Klas Segeljakt "] -edition = "2021" -description = "A runtime for arc-lang" - -[lib] -name = "arc_runtime" -path = "src/lib.rs" - -[features] -dataframes = ["polars"] - -[dependencies] -macros = { path = "./macros" } -kompact = { git = "https://github.com/kompics/kompact", rev = "e9deae8", features = ["silent_logging"]} -slog = { version = "2.7.0" } -time = { version = "0.3.5", features = ["rand", "macros"] } -uuid = { version = "0.8.2" } -rand = { version = "0.8.3" } -dyn-clone = { version = "1.0.4" } -comet = { git = "https://github.com/Starlight-JS/comet", package = "comet-extra", rev = "c2f96f8" } -tokio = { version = "1.15.0", features = ["sync"] } -derive_more = { version = "0.99.17", default-features = false, features = ["from", "into", "deref", "deref_mut", "constructor", "as_ref"] } -futures = { version = "0.3.19" } -replace_with = { version = "0.1.7" } -hexf = { version = "0.2.1" } -serde_derive = { version = "1.0.136" } -serde = { version = "1.0.136" } -# serde_traitobject = { version = "0.2.7" } -polars = { git = "https://github.com/pola-rs/polars", rev = "a04786c", optional = true } - -# crossfire = { version = "0.1.7" } -# paste = { version = "1.0.5" } -# coz = { version = "0.1.3" } -# arrayvec = { version = "0.7.0" } -# lazy_static = { version = "1.4.0" } -# async-recursion = { version = "0.3.2" } -# erased-serde = { version = "0.3.17" } - -[dev-dependencies] -arrow2 = { version = "0.9.1" } -omnipaxos = { git = "https://github.com/haraldng/omnipaxos", rev = "36dd86d" } diff --git a/arc-runtime/examples/consensus/Cargo.toml b/arc-runtime/examples/consensus/Cargo.toml deleted file mode 100644 index 36d0ed1d2..000000000 --- a/arc-runtime/examples/consensus/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "consensus" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -omnipaxos = { git = "https://github.com/haraldng/omnipaxos", rev = "36dd86d" } -hocon = { version = "0.5.2" } -kompact = { git = "https://github.com/kompics/kompact", rev = "e9deae8" } -arc-runtime = { path = "../../" } -rand = { version = "0.8.4" } diff --git a/arc-runtime/examples/consensus/omnipaxos.conf b/arc-runtime/examples/consensus/omnipaxos.conf deleted file mode 100644 index 60c648726..000000000 --- a/arc-runtime/examples/consensus/omnipaxos.conf +++ /dev/null @@ -1,6 +0,0 @@ -wait_timeout: 10 s -num_threads: 8 -num_nodes: 20 -ble_hb_delay: 5 -increment_delay: 2 -num_proposals: 20 diff --git a/arc-runtime/examples/consensus/src/ble.rs b/arc-runtime/examples/consensus/src/ble.rs deleted file mode 100644 index 75e87a7bf..000000000 --- a/arc-runtime/examples/consensus/src/ble.rs +++ /dev/null @@ -1,132 +0,0 @@ -use kompact::prelude::*; - -use kompact::config_keys::system::LABEL; -use kompact::config_keys::system::THREADS; -use kompact::executors::crossbeam_workstealing_pool; - -use omnipaxos::leader_election::ballot_leader_election::messages::BLEMessage; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatMsg; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatReply; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatRequest; -use omnipaxos::leader_election::ballot_leader_election::Ballot; -use omnipaxos::leader_election::ballot_leader_election::BallotLeaderElection; -use omnipaxos::messages::AcceptDecide; -use omnipaxos::messages::AcceptSync; -use omnipaxos::messages::Accepted; -use omnipaxos::messages::Decide; -use omnipaxos::messages::FirstAccept; -use omnipaxos::messages::Message; -use omnipaxos::messages::PaxosMsg; -use omnipaxos::messages::Prepare; -use omnipaxos::messages::Promise; -use omnipaxos::paxos::ProposeErr; -use omnipaxos::storage::memory_storage::MemorySequence; -use omnipaxos::storage::memory_storage::MemoryState; -use omnipaxos::utils::hocon_kv::CONFIG_ID; -use omnipaxos::utils::hocon_kv::HB_DELAY; -use omnipaxos::utils::hocon_kv::INITIAL_DELAY_FACTOR; -use omnipaxos::utils::hocon_kv::LOG_FILE_PATH; -use omnipaxos::utils::hocon_kv::PID; -use omnipaxos::utils::hocon_kv::PRIORITY; -use omnipaxos::utils::logger::create_logger; -type OmniPaxos = omnipaxos::paxos::OmniPaxos, MemoryState>; - -use arc_runtime::prelude::*; - -use std::collections::HashMap; -use std::collections::VecDeque; -use std::time::Duration; - -use crate::port::BallotPort; - -const START_TIMEOUT: Duration = Duration::from_millis(1000); -const REGISTRATION_TIMEOUT: Duration = Duration::from_millis(1000); -const STOP_COMPONENT_TIMEOUT: Duration = Duration::from_millis(1000); -const BLE_TIMER_TIMEOUT: Duration = Duration::from_millis(100); - -#[derive(ComponentDefinition, Deref, DerefMut)] -pub struct BallotLeaderElectionComp { - ctx: ComponentContext, - ble_port: ProvidedPort, - pub(crate) peers: HashMap>, - pub leader: Option, - timer: Option, - pub(crate) asks: VecDeque>, - #[deref] - #[deref_mut] - ble: BallotLeaderElection, -} - -impl BallotLeaderElectionComp { - pub fn new(ble: BallotLeaderElection) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - ble_port: ProvidedPort::uninitialised(), - peers: HashMap::new(), - leader: None, - timer: None, - ble, - asks: VecDeque::new(), - } - } - - fn send_outgoing_msgs(&mut self) { - for msg in self.ble.get_outgoing_msgs() { - self.peers.get(&msg.to).unwrap().tell(msg) - } - } - - fn answer_future(&mut self, b: Ballot) { - if let Some(ask) = self.asks.pop_front() { - ask.reply(b).unwrap(); - } - } -} - -impl Actor for BallotLeaderElectionComp { - type Message = BLEMessage; - - fn receive_local(&mut self, msg: Self::Message) -> Handled { - self.ble.handle(msg); - Handled::Ok - } - - fn receive_network(&mut self, msg: NetMessage) -> Handled { - todo!() - } -} - -impl ComponentLifecycle for BallotLeaderElectionComp { - fn on_start(&mut self) -> Handled { - self.ble.new_hb_round(); - self.timer = self - .schedule_periodic(BLE_TIMER_TIMEOUT, BLE_TIMER_TIMEOUT, move |c, _| { - if let Some(l) = c.ble.tick() { - c.answer_future(l); - c.ble_port.trigger(l); - } - c.send_outgoing_msgs(); - Handled::Ok - }) - .into(); - Handled::Ok - } - - fn on_stop(&mut self) -> Handled { - if let Some(timer) = self.timer.take() { - self.cancel_timer(timer); - } - Handled::Ok - } - - fn on_kill(&mut self) -> Handled { - Handled::Ok - } -} - -impl Provide for BallotLeaderElectionComp { - fn handle(&mut self, _: Never) -> Handled { - // ignore - Handled::Ok - } -} diff --git a/arc-runtime/examples/consensus/src/config.rs b/arc-runtime/examples/consensus/src/config.rs deleted file mode 100644 index 5d7feca45..000000000 --- a/arc-runtime/examples/consensus/src/config.rs +++ /dev/null @@ -1,33 +0,0 @@ -use hocon::Error; -use hocon::Hocon; -use hocon::HoconLoader; - -use std::time::Duration; - -pub struct Config { - pub wait_timeout: Duration, - pub num_threads: usize, - pub num_nodes: usize, - pub ble_hb_delay: u64, - pub ble_initial_delay_factor: Option, - pub num_proposals: u64, - pub num_elections: u64, - pub gc_idx: u64, -} - -impl Config { - pub fn load(path: &str) -> Result { - let cfg = HoconLoader::new().load_file(path)?.hocon()?; - - Ok(Config { - wait_timeout: cfg["wait_timeout"].as_duration().unwrap_or_default(), - num_threads: cfg["num_threads"].as_i64().unwrap_or_default() as usize, - num_nodes: cfg["num_nodes"].as_i64().unwrap_or_default() as usize, - ble_hb_delay: cfg["ble_hb_delay"].as_i64().unwrap_or_default() as u64, - num_proposals: cfg["num_proposals"].as_i64().unwrap_or_default() as u64, - num_elections: cfg["num_elections"].as_i64().unwrap_or_default() as u64, - gc_idx: cfg["gc_idx"].as_i64().unwrap_or_default() as u64, - ble_initial_delay_factor: cfg["ble_initial_delay_factor"].as_i64().map(|x| x as u64), - }) - } -} diff --git a/arc-runtime/examples/consensus/src/main.rs b/arc-runtime/examples/consensus/src/main.rs deleted file mode 100644 index a0bbc77f1..000000000 --- a/arc-runtime/examples/consensus/src/main.rs +++ /dev/null @@ -1,64 +0,0 @@ -#![allow(unused)] - -mod ble; -mod config; -mod omni; -mod port; -mod state; -mod system; - -use crate::config::Config; -use crate::state::State; -use crate::system::System; - -use kompact::prelude::*; -use omnipaxos::leader_election::ballot_leader_election::Ballot; -use omnipaxos::storage::Entry; -use rand::Rng; - -use arc_runtime::prelude::*; - -fn main() { - let config = Config::load("omnipaxos.conf").unwrap(); - let ble_initial_leader = None; - - let system = System::new( - config.num_nodes, - config.num_threads, - config.ble_hb_delay, - config.ble_initial_delay_factor, - ble_initial_leader, - ); - - let node = system.nodes.get(&1).unwrap(); - - let (ble_promise, ble_future) = promise(); - node.ble - .on_definition(|c| c.asks.push_back(Ask::new(ble_promise, ()))); - - system.start_all_nodes(); - - let elected_leader = ble_future.wait_timeout(config.wait_timeout).unwrap(); - - let mut proposal_node: u64; - - loop { - proposal_node = rand::thread_rng().gen_range(1..=config.num_nodes as u64); - - if proposal_node != elected_leader.pid { - break; - } - } - - let node = system.nodes.get(&proposal_node).unwrap(); - - let (omni_promise, omni_future) = promise(); - node.omni.on_definition(|c| { - c.asks.push_back(Ask::new(omni_promise, ())); - c.propose_normal(State::new("abc".to_owned(), 123)).unwrap(); - }); - - omni_future.wait_timeout(config.wait_timeout).unwrap(); - - system.kompact.shutdown(); -} diff --git a/arc-runtime/examples/consensus/src/omni.rs b/arc-runtime/examples/consensus/src/omni.rs deleted file mode 100644 index 3e52b6d62..000000000 --- a/arc-runtime/examples/consensus/src/omni.rs +++ /dev/null @@ -1,129 +0,0 @@ -use kompact::prelude::*; - -use kompact::config_keys::system::LABEL; -use kompact::config_keys::system::THREADS; -use kompact::executors::crossbeam_workstealing_pool; - -use omnipaxos::leader_election::ballot_leader_election::messages::BLEMessage; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatMsg; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatReply; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatRequest; -use omnipaxos::leader_election::ballot_leader_election::Ballot; -use omnipaxos::leader_election::ballot_leader_election::BallotLeaderElection; -use omnipaxos::messages::AcceptDecide; -use omnipaxos::messages::AcceptSync; -use omnipaxos::messages::Accepted; -use omnipaxos::messages::Decide; -use omnipaxos::messages::FirstAccept; -use omnipaxos::messages::Message; -use omnipaxos::messages::PaxosMsg; -use omnipaxos::messages::Prepare; -use omnipaxos::messages::Promise; -use omnipaxos::paxos::ProposeErr; -use omnipaxos::storage::memory_storage::MemorySequence; -use omnipaxos::storage::memory_storage::MemoryState; -use omnipaxos::storage::Entry; -use omnipaxos::storage::PaxosState; -use omnipaxos::storage::Sequence; -use omnipaxos::storage::StopSign; -use omnipaxos::utils::hocon_kv::CONFIG_ID; -use omnipaxos::utils::hocon_kv::HB_DELAY; -use omnipaxos::utils::hocon_kv::INITIAL_DELAY_FACTOR; -use omnipaxos::utils::hocon_kv::LOG_FILE_PATH; -use omnipaxos::utils::hocon_kv::PID; -use omnipaxos::utils::hocon_kv::PRIORITY; -use omnipaxos::utils::logger::create_logger; -type OmniPaxos = omnipaxos::paxos::OmniPaxos, MemoryState>; - -use arc_runtime::prelude::*; - -use crate::port::BallotPort; - -use std::collections::HashMap; -use std::collections::VecDeque; - -use std::time::Duration; - -use std::ops::Deref; -use std::ops::DerefMut; - -const OMNI_TIMER_TIMEOUT: Duration = Duration::from_millis(1); - -#[derive(ComponentDefinition, Deref, DerefMut)] -pub struct OmniPaxosComp { - ctx: ComponentContext, - ble_port: RequiredPort, - pub(crate) peers: HashMap>>, - timer: Option, - pub(crate) asks: VecDeque>>, - #[deref] - #[deref_mut] - paxos: OmniPaxos, -} - -impl OmniPaxosComp { - pub fn new(paxos: OmniPaxos) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - ble_port: RequiredPort::uninitialised(), - peers: HashMap::new(), - timer: None, - paxos, - asks: VecDeque::new(), - } - } - - pub fn send_outgoing_msgs(&mut self) { - for msg in self.paxos.get_outgoing_msgs() { - self.peers.get(&msg.to).unwrap().tell(msg); - } - } - - fn answer_future(&mut self) { - if !self.asks.is_empty() { - for entry in self.paxos.get_latest_decided_entries() { - self.asks.pop_front().unwrap().reply(entry.clone()); - } - } - } -} - -impl Actor for OmniPaxosComp { - type Message = Message; - - fn receive_local(&mut self, msg: Self::Message) -> Handled { - self.paxos.handle(msg); - Handled::Ok - } - - fn receive_network(&mut self, msg: NetMessage) -> Handled { - todo!() - } -} - -impl ComponentLifecycle for OmniPaxosComp { - fn on_start(&mut self) -> Handled { - self.timer = self - .schedule_periodic(OMNI_TIMER_TIMEOUT, OMNI_TIMER_TIMEOUT, move |c, _| { - c.send_outgoing_msgs(); - c.answer_future(); - Handled::Ok - }) - .into(); - Handled::Ok - } - - fn on_kill(&mut self) -> Handled { - if let Some(timer) = self.timer.take() { - self.cancel_timer(timer); - } - Handled::Ok - } -} - -impl Require for OmniPaxosComp { - fn handle(&mut self, msg: Ballot) -> Handled { - self.paxos.handle_leader(msg); - Handled::Ok - } -} diff --git a/arc-runtime/examples/consensus/src/port.rs b/arc-runtime/examples/consensus/src/port.rs deleted file mode 100644 index 91d1c200d..000000000 --- a/arc-runtime/examples/consensus/src/port.rs +++ /dev/null @@ -1,39 +0,0 @@ -use kompact::prelude::*; - -use kompact::config_keys::system::LABEL; -use kompact::config_keys::system::THREADS; -use kompact::executors::crossbeam_workstealing_pool; - -use omnipaxos::leader_election::ballot_leader_election::messages::BLEMessage; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatMsg; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatReply; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatRequest; -use omnipaxos::leader_election::ballot_leader_election::Ballot; -use omnipaxos::leader_election::ballot_leader_election::BallotLeaderElection; -use omnipaxos::messages::AcceptDecide; -use omnipaxos::messages::AcceptSync; -use omnipaxos::messages::Accepted; -use omnipaxos::messages::Decide; -use omnipaxos::messages::FirstAccept; -use omnipaxos::messages::Message; -use omnipaxos::messages::PaxosMsg; -use omnipaxos::messages::Prepare; -use omnipaxos::messages::Promise; -use omnipaxos::paxos::ProposeErr; -use omnipaxos::storage::memory_storage::MemorySequence; -use omnipaxos::storage::memory_storage::MemoryState; -use omnipaxos::utils::hocon_kv::CONFIG_ID; -use omnipaxos::utils::hocon_kv::HB_DELAY; -use omnipaxos::utils::hocon_kv::INITIAL_DELAY_FACTOR; -use omnipaxos::utils::hocon_kv::LOG_FILE_PATH; -use omnipaxos::utils::hocon_kv::PID; -use omnipaxos::utils::hocon_kv::PRIORITY; -use omnipaxos::utils::logger::create_logger; -type OmniPaxos = omnipaxos::paxos::OmniPaxos, MemoryState>; - -pub struct BallotPort; - -impl Port for BallotPort { - type Indication = Ballot; - type Request = Never; -} diff --git a/arc-runtime/examples/consensus/src/state.rs b/arc-runtime/examples/consensus/src/state.rs deleted file mode 100644 index 852d58269..000000000 --- a/arc-runtime/examples/consensus/src/state.rs +++ /dev/null @@ -1,14 +0,0 @@ -use arc_runtime::prelude::*; - -#[derive(Clone, Debug, New)] -pub struct State { - pub key: String, - pub value: u64, -} - -impl IntoSendable for State { - type T = State; - fn into_sendable(self) -> Self::T { - todo!() - } -} diff --git a/arc-runtime/examples/consensus/src/system.rs b/arc-runtime/examples/consensus/src/system.rs deleted file mode 100644 index 9f9197fbf..000000000 --- a/arc-runtime/examples/consensus/src/system.rs +++ /dev/null @@ -1,173 +0,0 @@ -use kompact::prelude::*; - -use kompact::config_keys::system::LABEL; -use kompact::config_keys::system::THREADS; -use kompact::executors::crossbeam_workstealing_pool; - -use omnipaxos::leader_election::ballot_leader_election::messages::BLEMessage; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatMsg; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatReply; -use omnipaxos::leader_election::ballot_leader_election::messages::HeartbeatRequest; -use omnipaxos::leader_election::ballot_leader_election::Ballot; -use omnipaxos::leader_election::ballot_leader_election::BallotLeaderElection; -use omnipaxos::messages::AcceptDecide; -use omnipaxos::messages::AcceptSync; -use omnipaxos::messages::Accepted; -use omnipaxos::messages::Decide; -use omnipaxos::messages::FirstAccept; -use omnipaxos::messages::Message; -use omnipaxos::messages::PaxosMsg; -use omnipaxos::messages::Prepare; -use omnipaxos::messages::Promise; -use omnipaxos::paxos::ProposeErr; -use omnipaxos::storage::memory_storage::MemorySequence; -use omnipaxos::storage::memory_storage::MemoryState; -use omnipaxos::utils::hocon_kv::CONFIG_ID; -use omnipaxos::utils::hocon_kv::HB_DELAY; -use omnipaxos::utils::hocon_kv::INITIAL_DELAY_FACTOR; -use omnipaxos::utils::hocon_kv::LOG_FILE_PATH; -use omnipaxos::utils::hocon_kv::PID; -use omnipaxos::utils::hocon_kv::PRIORITY; -use omnipaxos::utils::logger::create_logger; -type OmniPaxos = omnipaxos::paxos::OmniPaxos, MemoryState>; -use std::pin::Pin - -use arc_runtime::prelude::*; - -use std::collections::HashMap; -use std::time::Duration; - -use crate::ble::BallotLeaderElectionComp; -use crate::omni::OmniPaxosComp; - -const START_TIMEOUT: Duration = Duration::from_millis(1000); -const REGISTRATION_TIMEOUT: Duration = Duration::from_millis(1000); -const STOP_COMPONENT_TIMEOUT: Duration = Duration::from_millis(1000); -const BLE_TIMER_TIMEOUT: Duration = Duration::from_millis(100); - -pub struct System { - pub(crate) kompact: KompactSystem, - pub(crate) nodes: HashMap>, -} - -#[derive(New)] -pub struct Node { - pub ble: Arc>, - pub omni: Arc>>, -} - -fn build_kompact_system(num_threads: usize) -> KompactSystem { - let mut conf = KompactConfig::default(); - conf.set_config_value(&THREADS, num_threads); - - match num_threads { - _ if num_threads <= 32 => conf.executor(|t| crossbeam_workstealing_pool::small_pool(t)), - _ if num_threads <= 64 => conf.executor(|t| crossbeam_workstealing_pool::large_pool(t)), - _ => conf.executor(|t| crossbeam_workstealing_pool::dyn_pool(t)), - }; - - let mut net = NetworkConfig::default(); - net.set_tcp_nodelay(true); - - conf.system_components(DeadletterBox::new, net.build()); - conf.build().unwrap() -} - -impl System { - pub fn new( - num_nodes: usize, - num_threads: usize, - ble_hb_delay: u64, - ble_initial_delay_factor: Option, - ble_initial_leader: Option, - ) -> Self { - let kompact = build_kompact_system(num_threads); - - let mut nodes = HashMap::new(); - let mut pids = (1..=num_nodes as u64).collect::>(); - let mut ble_refs = HashMap::new(); - let mut omni_refs = HashMap::new(); - - for pid in 1..=num_nodes as u64 { - let mut peer_pids = pids.clone(); - peer_pids.retain(|peer| peer != &pid); - - let priority = None; - let logger = None; - let log_file_path = None; - - let (ble_comp, ble_path) = kompact.create_and_register(|| { - BallotLeaderElectionComp::new(BallotLeaderElection::with( - pid, - peer_pids.clone(), - priority, - ble_hb_delay, - ble_initial_leader, - ble_initial_delay_factor, - logger, - log_file_path, - )) - }); - - let config_id = 1; - let skip_prepare_use_leader = None; - let logger = None; - let log_file_path = None; - - let (omni_comp, omni_path) = kompact.create_and_register(|| { - OmniPaxosComp::new(OmniPaxos::with( - config_id, - pid, - peer_pids.clone(), - skip_prepare_use_leader, - logger, - log_file_path, - )) - }); - - biconnect_components(&ble_comp, &omni_comp); - - ble_path.wait_timeout(REGISTRATION_TIMEOUT).unwrap(); - omni_path.wait_timeout(REGISTRATION_TIMEOUT).unwrap(); - - ble_refs.insert(pid, ble_comp.actor_ref()); - omni_refs.insert(pid, omni_comp.actor_ref()); - - nodes.insert(pid, Node::new(ble_comp, omni_comp)); - } - - for node in nodes.values() { - node.ble.on_definition(|c| c.peers = ble_refs.clone()); - node.omni.on_definition(|c| c.peers = omni_refs.clone()); - } - - Self { kompact, nodes } - } - - pub fn start_all_nodes(&self) { - for node in self.nodes.values() { - self.kompact - .stop_notify(&node.ble) - .wait_timeout(STOP_COMPONENT_TIMEOUT) - .unwrap(); - - self.kompact - .start_notify(&node.omni) - .wait_timeout(START_TIMEOUT) - .unwrap(); - } - } - - pub fn kill_node(&mut self, id: u64) { - let node = self.nodes.remove(&id).unwrap(); - self.kompact - .kill_notify(node.ble) - .wait_timeout(STOP_COMPONENT_TIMEOUT) - .unwrap(); - - self.kompact - .kill_notify(node.omni) - .wait_timeout(STOP_COMPONENT_TIMEOUT) - .unwrap(); - } -} diff --git a/arc-runtime/examples/remote/application.conf b/arc-runtime/examples/remote/application.conf deleted file mode 100644 index e4b81492a..000000000 --- a/arc-runtime/examples/remote/application.conf +++ /dev/null @@ -1,9 +0,0 @@ -buncher { - batch-size = 100 - timeout = 100 ms -} - -omega { - initial-period = 10 ms - delta = 1 ms -} diff --git a/arc-runtime/examples/remote/src/main.rs b/arc-runtime/examples/remote/src/main.rs deleted file mode 100644 index 9204d6922..000000000 --- a/arc-runtime/examples/remote/src/main.rs +++ /dev/null @@ -1,128 +0,0 @@ -#![feature(arbitrary_self_types)] -#![allow(unused_mut)] -#![allow(unreachable_code)] - -use arc_runtime::channels::local::concurrent::channel; -use arc_runtime::channels::local::concurrent::Pullable; -use arc_runtime::channels::local::concurrent::Pushable; -use arc_runtime::prelude::*; - -lazy_static::lazy_static! { - static ref EXECUTOR: Executor = Executor::new(); -} - -#[derive(Actor, ComponentDefinition)] -struct Source + Data, T: Data> -where - ::IntoIter: Data, -{ - ctx: ComponentContext, - iter: I, - pushable: Pushable, -} -impl + Data, T: Data> Source -where - ::IntoIter: Data, -{ - fn new(iter: I, pushable: Pushable) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - iter, - pushable, - } - } - - async fn run(mut self: ComponentDefinitionAccess) -> Control<()> { - let i = self.iter.clone(); - for x in i { - self.pushable.push(x).await?; - } - Control::Finished - } -} - -#[derive(Actor, ComponentDefinition)] -struct Log { - ctx: ComponentContext, - pullable: Pullable, -} - -impl Log { - fn new(pullable: Pullable) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - pullable, - } - } - - async fn run(mut self: ComponentDefinitionAccess) -> Control<()> { - loop { - let data = self.pullable.pull().await?; -// info!(self.log(), "{:?}", data); - } - } -} - -impl + Data, T: Data> ComponentLifecycle for Source -where - ::IntoIter: Data, -{ - fn on_start(&mut self) -> Handled { - self.spawn_local(move |async_self| async move { - async_self.run().await; - Handled::DieNow - }); - Handled::Ok - } -} - -impl ComponentLifecycle for Log { - fn on_start(&mut self) -> Handled { - self.spawn_local(move |async_self| async move { - async_self.run().await; - Handled::DieNow - }); - Handled::Ok - } -} -fn source(i: I) -> Pullable -where - I: IntoIterator, - ::IntoIter: Data, -{ - let (a0, a1) = channel(&EXECUTOR); - EXECUTOR.create_task(move || Source::new(i, a0)); - a1 -} - -fn log(a: Pullable) { - EXECUTOR.create_task(move || Log::new(a)); -} - -fn read_stream() -> Pullable { - todo!() -} - -fn master() { - log(source(0..100)); -} - -fn worker() { - todo!() -} - -fn main() { - EXECUTOR.init({ - let mut cfg = KompactConfig::default(); - cfg.load_config_file("./application.conf"); - cfg.system_components(DeadletterBox::new, NetworkConfig::default().build()); - cfg.build().expect("KompactSystem") - }); - - match std::env::args().nth(1).as_ref().map(|x| x.as_str()) { - Some("--master") => master(), - Some("--worker") => worker(), - _ => panic!("Expected --master or --worker"), - } - EXECUTOR.await_termination(); -} diff --git a/arc-runtime/macros/Cargo.toml b/arc-runtime/macros/Cargo.toml deleted file mode 100644 index 88a2fb5cb..000000000 --- a/arc-runtime/macros/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "macros" -version = "0.0.0" -authors = ["Klas Segeljakt "] -edition = "2018" - -[lib] -proc-macro = true - -[dependencies] -quote = { version = "1.0.8" } -syn = { version = "1.0.58", features = ["full", "visit-mut"] } -proc-macro2 = { version = "1.0.24" } diff --git a/arc-runtime/macros/src/lib.rs b/arc-runtime/macros/src/lib.rs deleted file mode 100644 index ad6fe1875..000000000 --- a/arc-runtime/macros/src/lib.rs +++ /dev/null @@ -1,317 +0,0 @@ -#![feature(proc_macro_span)] - -use proc_macro::TokenStream; -use proc_macro2 as pm2; - -mod proc_macro_derives; -mod proc_macro_attrs { - pub mod rewrite { - pub mod driver; - pub mod enums; - pub mod externs; - pub mod functions; - pub mod impls; - pub mod nonpersistent_tasks; - pub mod persistent_tasks; - pub mod structs; - } -} -mod proc_macros; - -#[proc_macro_derive(Abstract)] -pub fn derive_abstract(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_abstract(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(Collectable)] -pub fn derive_collectable(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_collectable(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(Finalize)] -pub fn derive_finalize(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_finalize(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(NoTrace)] -pub fn derive_notrace(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_notrace(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(Trace)] -pub fn derive_trace(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_trace(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(Garbage)] -pub fn derive_garbage(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_garbage(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(Alloc)] -pub fn derive_alloc(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_alloc(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(Send)] -pub fn derive_send(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_send(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(Sync)] -pub fn derive_sync(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_sync(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(Unpin)] -pub fn derive_unpin(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_unpin(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(NoSerde)] -pub fn derive_noserde(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_noserde(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro_derive(NoDebug)] -pub fn derive_nodebug(input: TokenStream) -> TokenStream { - proc_macro_derives::derive_nodebug(syn::parse_macro_input!(input as syn::DeriveInput)) -} - -#[proc_macro] -pub fn call(input: TokenStream) -> TokenStream { - proc_macros::call(syn::parse_macro_input!(input as syn::Expr)) -} - -#[proc_macro] -pub fn call_async(input: TokenStream) -> TokenStream { - proc_macros::call_async(syn::parse_macro_input!(input as syn::Expr)) -} - -#[proc_macro] -pub fn call_indirect(input: TokenStream) -> TokenStream { - proc_macros::call_indirect(syn::parse_macro_input!(input as syn::Expr)) -} - -/// Enwraps a value into an enum-variant. -/// -/// ``` -/// use arc_runtime::prelude::*; -/// mod foo { -/// use arc_runtime::prelude::*; -/// #[rewrite] -/// pub enum Bar { -/// Baz(i32), -/// Qux(i32) -/// } -/// } -/// let x = enwrap!(foo::Bar::Baz, 5); -/// ``` -#[proc_macro] -pub fn enwrap(input: TokenStream) -> TokenStream { - proc_macros::enwrap(input) -} - -/// Returns `true` if enum is a certain variant, else `false`. -/// -/// ``` -/// use arc_runtime::prelude::*; -/// mod foo { -/// use arc_runtime::prelude::*; -/// #[rewrite] -/// pub enum Bar { -/// Baz(i32), -/// Qux(i32) -/// } -/// } -/// -/// let x = enwrap!(foo::Bar::Baz, 5); -/// assert!(is!(foo::Bar::Baz, x)); -/// ``` -#[proc_macro] -pub fn is(input: TokenStream) -> TokenStream { - proc_macros::is(input) -} - -/// Unwraps a value out of an enum-variant. -/// -/// ``` -/// use arc_runtime::prelude::*; -/// mod foo { -/// use arc_runtime::prelude::*; -/// #[rewrite] -/// pub enum Bar { -/// Baz(i32), -/// Qux(i32) -/// } -/// } -/// -/// let x = enwrap!(foo::Bar::Baz, 5); -/// let y = unwrap!(foo::Bar::Baz, x); -/// ``` -#[proc_macro] -pub fn unwrap(input: TokenStream) -> TokenStream { - proc_macros::unwrap(input) -} - -/// Constructs a struct. -/// -/// ``` -/// use arc_runtime::prelude::*; -/// mod foo { -/// use arc_runtime::prelude::*; -/// #[rewrite] -/// pub struct Bar { -/// x: i32, -/// y: i32 -/// } -/// } -/// let x = new!(foo::Bar { x: i32, y: i32 }); -/// ``` -#[proc_macro] -pub fn new(input: TokenStream) -> TokenStream { - proc_macros::new(input) -} - -#[proc_macro] -pub fn vector(input: TokenStream) -> TokenStream { - proc_macros::vector(input) -} - -#[proc_macro] -pub fn erase(input: TokenStream) -> TokenStream { - proc_macros::erase(input) -} - -#[proc_macro] -pub fn unerase(input: TokenStream) -> TokenStream { - proc_macros::unerase(input) -} - -#[proc_macro] -pub fn push(input: TokenStream) -> TokenStream { - proc_macros::push(input) -} - -#[proc_macro] -pub fn pull(input: TokenStream) -> TokenStream { - proc_macros::pull(input) -} - -#[proc_macro] -pub fn pull_transition(input: TokenStream) -> TokenStream { - proc_macros::pull_transition(input) -} - -#[proc_macro] -pub fn push_transition(input: TokenStream) -> TokenStream { - proc_macros::push_transition(input) -} - -#[proc_macro] -pub fn transition(input: TokenStream) -> TokenStream { - proc_macros::transition(input) -} - -#[proc_macro] -pub fn terminate(input: TokenStream) -> TokenStream { - proc_macros::terminate(input) -} - -#[proc_macro] -pub fn wait(input: TokenStream) -> TokenStream { - proc_macros::wait(input) -} - -#[proc_macro_attribute] -pub fn rewrite(attr: TokenStream, input: TokenStream) -> TokenStream { - let attr = syn::parse_macro_input!(attr as syn::AttributeArgs); - let item = syn::parse_macro_input!(input as syn::Item); - match item { - syn::Item::Enum(item) => proc_macro_attrs::rewrite::enums::rewrite(attr, item), - syn::Item::Struct(item) => proc_macro_attrs::rewrite::structs::rewrite(attr, item), - syn::Item::Fn(item) if has_meta_name_val("unmangled", &get_metas(&attr)) => { - proc_macro_attrs::rewrite::externs::rewrite(attr, item) - } - syn::Item::Fn(item) - if item.sig.asyncness.is_some() && has_meta_key("nonpersistent", &get_metas(&attr)) => - { - proc_macro_attrs::rewrite::nonpersistent_tasks::rewrite(attr, item) - } - syn::Item::Mod(item) if has_meta_key("persistent", &get_metas(&attr)) => { - proc_macro_attrs::rewrite::persistent_tasks::rewrite(attr, item) - } - syn::Item::Fn(item) if has_meta_key("main", &get_metas(&attr)) => { - proc_macro_attrs::rewrite::driver::rewrite(attr, item) - } - syn::Item::Fn(item) => proc_macro_attrs::rewrite::functions::rewrite(attr, item), - syn::Item::Impl(item) => proc_macro_attrs::rewrite::impls::rewrite(attr, item), - _ => panic!("#[rewrite] expects an enum, struct, function, impl, or module as input."), - } -} - -pub(crate) fn new_id(s: impl ToString) -> syn::Ident { - syn::Ident::new(&s.to_string(), pm2::Span::call_site()) -} - -pub(crate) fn get_metas(attr: &[syn::NestedMeta]) -> Vec { - attr.into_iter() - .filter_map(|a| match a { - syn::NestedMeta::Meta(m) => Some(m.clone()), - _ => None, - }) - .collect() -} - -pub(crate) fn has_attr_key(name: &str, attr: &[syn::Attribute]) -> bool { - attr.iter() - .any(|a| matches!(a.parse_meta(), Ok(syn::Meta::Path(x)) if x.is_ident(name))) -} - -pub(crate) fn has_meta_key(name: &str, meta: &[syn::Meta]) -> bool { - meta.iter() - .any(|m| matches!(m, syn::Meta::Path(x) if x.is_ident(name))) -} - -pub(crate) fn has_meta_name_val(name: &str, meta: &[syn::Meta]) -> bool { - meta.iter() - .any(|m| matches!(m, syn::Meta::NameValue(x) if x.path.is_ident(name))) -} - -pub(crate) fn _has_nested_meta_key(name: &str, meta: &[syn::NestedMeta]) -> bool { - meta.iter().any(|m| match m { - syn::NestedMeta::Meta(syn::Meta::Path(x)) if x.is_ident(name) => true, - _ => false, - }) -} - -#[allow(unused)] -pub(crate) fn get_attr_val(name: &str, attr: &[syn::NestedMeta]) -> syn::Ident { - attr.iter() - .find_map(|arg| match arg { - syn::NestedMeta::Meta(meta) => match meta { - syn::Meta::NameValue(nv) if nv.path.is_ident(name) => match &nv.lit { - syn::Lit::Str(x) => { - Some(x.parse().expect("Expected attr value to be an identifier")) - } - _ => None, - }, - _ => None, - }, - syn::NestedMeta::Lit(_) => None, - }) - .unwrap_or_else(|| panic!("`{} = ` missing from identifiers", name)) -} - -pub(crate) fn split_name_type(params: Vec) -> (Vec, Vec) { - params - .into_iter() - .map(|p| match p { - syn::FnArg::Receiver(_) => unreachable!(), - syn::FnArg::Typed(p) => match *p.pat { - syn::Pat::Ident(i) => (i.ident, *p.ty), - _ => unreachable!(), - }, - }) - .unzip() -} diff --git a/arc-runtime/macros/src/proc_macro_attrs/rewrite/driver.rs b/arc-runtime/macros/src/proc_macro_attrs/rewrite/driver.rs deleted file mode 100644 index ebbb6f40a..000000000 --- a/arc-runtime/macros/src/proc_macro_attrs/rewrite/driver.rs +++ /dev/null @@ -1,49 +0,0 @@ -use proc_macro as pm; -use crate::new_id; - -pub(crate) fn rewrite(_attr: syn::AttributeArgs, item: syn::ItemFn) -> pm::TokenStream { - let block = &item.block; - let id = item.sig.ident; - let component_id = new_id(format!("{}Component", id)); - let run_id = new_id(format!("{}_run", id)); - - quote::quote! ( - - #[derive(ComponentDefinition, Actor)] - struct #component_id { - ctx: ComponentContext, - } - - impl #component_id { - fn new() -> Self { - Self { - ctx: ComponentContext::uninitialised() - } - } - } - - #[rewrite] - fn #run_id() { - #block - } - - impl ComponentLifecycle for #component_id { - fn on_start(&mut self) -> Handled { - let component = self.ctx().component(); - let mutator = instantiate_immix(ImmixOptions::default()); - let ctx = Context::new(component, mutator); - call!(#run_id()); - self.ctx().system().shutdown_async(); - Handled::DieNow - } - } - - pub fn #id() { - let system = KompactConfig::default().build().unwrap(); - let component = system.create(move || #component_id::new()); - system.start(&component); - system.await_termination(); - } - ) - .into() -} diff --git a/arc-runtime/macros/src/proc_macro_attrs/rewrite/enums.rs b/arc-runtime/macros/src/proc_macro_attrs/rewrite/enums.rs deleted file mode 100644 index 87227cef0..000000000 --- a/arc-runtime/macros/src/proc_macro_attrs/rewrite/enums.rs +++ /dev/null @@ -1,160 +0,0 @@ -//! Codegen for enums - -use proc_macro as pm; -use quote::quote; - -use crate::new_id; - -#[allow(unused)] -pub(crate) fn rewrite(_: syn::AttributeArgs, mut item: syn::ItemEnum) -> pm::TokenStream { - let (_, type_generics, where_clause) = item.generics.split_for_impl(); - - let mut sharable_impl_generics = item.generics.params.clone(); - let mut sendable_impl_generics = item.generics.params.clone(); - - sharable_impl_generics.iter_mut().for_each(|g| { - if let syn::GenericParam::Type(t) = g { - t.bounds.push(syn::parse_quote!(Sharable)) - } - }); - sendable_impl_generics.iter_mut().for_each(|g| { - if let syn::GenericParam::Type(t) = g { - t.bounds.push(syn::parse_quote!(Sendable)) - } - }); - let sharable_impl_generics = quote::quote!(<#sharable_impl_generics>); - let sendable_impl_generics = quote::quote!(<#sendable_impl_generics>); - - let into_generics: Vec<_> = item - .generics - .params - .iter() - .filter_map(|g| { - if let syn::GenericParam::Type(t) = g { - let id = &t.ident; - Some(quote::quote!(#id::T)) - } else { - None - } - }) - .collect(); - let into_generics = if into_generics.is_empty() { - quote::quote!() - } else { - quote::quote!(<#(#into_generics),*>) - }; - - let abstract_id = item.ident.clone(); - let concrete_id = new_id(format!("Concrete{}", abstract_id)); - let sharable_mod_id = new_id(format!("sharable_{}", abstract_id)); - let sendable_mod_id = new_id(format!("sendable_{}", abstract_id)); - - let mut concrete_sharable_item = item.clone(); - let mut concrete_sendable_item = item.clone(); - - concrete_sharable_item - .generics - .params - .iter_mut() - .for_each(|g| { - if let syn::GenericParam::Type(t) = g { - t.bounds.push(syn::parse_quote!(Sharable)) - } - }); - concrete_sendable_item - .generics - .params - .iter_mut() - .for_each(|g| { - if let syn::GenericParam::Type(t) = g { - t.bounds.push(syn::parse_quote!(Sendable)) - } - }); - - concrete_sharable_item.ident = concrete_id.clone(); - concrete_sendable_item.ident = concrete_id.clone(); - - concrete_sendable_item - .variants - .iter_mut() - .for_each(|f| { - f.fields.iter_mut().for_each(|f| { - let ty = f.ty.clone(); - if let syn::Type::Path(t) = &ty { - if !item.generics.params.iter().any(|x| match x { - syn::GenericParam::Type(x) => t.path.is_ident(&x.ident), - _ => false, - }) { - f.ty = syn::parse_quote!(<#ty as DynSharable>::T); - } - } else { - f.ty = syn::parse_quote!(<#ty as DynSharable>::T); - } - }) - }); - - let variant_id = concrete_sharable_item - .variants - .iter() - .map(|v| &v.ident) - .collect::>(); - - quote!( - - use arc_runtime::prelude::*; - pub mod #sharable_mod_id { - use super::*; - use arc_runtime::prelude::*; - - #[derive(Clone, Debug, Abstract, Send, Sync, Unpin, Alloc, Collectable, Finalize, Trace)] - pub struct #abstract_id #sharable_impl_generics (pub Gc<#concrete_id #type_generics>) #where_clause; - - #[derive(Clone, Debug, Collectable, Finalize, Trace)] - #concrete_sharable_item - } - - pub mod #sendable_mod_id { - use super::*; - use arc_runtime::prelude::*; - - #[derive(Clone, Debug, From, Abstract, Serialize, Deserialize)] - #[serde(bound = "")] - #[from(forward)] - pub struct #abstract_id #sendable_impl_generics(pub Box<#concrete_id #type_generics>) #where_clause; - - #[derive(Clone, Debug, Serialize, Deserialize)] - #[serde(bound = "")] - #concrete_sendable_item - } - - use #sharable_mod_id::#abstract_id; - use #sharable_mod_id::#concrete_id::*; - use #sharable_mod_id::#concrete_id; - - impl #sharable_impl_generics DynSharable for #sharable_mod_id::#abstract_id #type_generics #where_clause { - type T = #sendable_mod_id::#abstract_id #into_generics; - fn into_sendable(&self, ctx: Context) -> Self::T { - match &*self.0 { - #( - #sharable_mod_id::#concrete_id::#variant_id(x) => - #sendable_mod_id::#concrete_id::#variant_id(x.clone().into_sendable(ctx)).into() - ),* - } - } - } - - impl #sendable_impl_generics DynSendable for #sendable_mod_id::#abstract_id #type_generics #where_clause { - type T = #sharable_mod_id::#abstract_id #into_generics; - fn into_sharable(&self, ctx: Context) -> Self::T { - match &*self.0 { - #( - #sendable_mod_id::#concrete_id::#variant_id(x) => - #sharable_mod_id::#concrete_id::#variant_id(x.into_sharable(ctx)).alloc(ctx) - ),* - } - } - } - - ) - .into() -} diff --git a/arc-runtime/macros/src/proc_macro_attrs/rewrite/externs.rs b/arc-runtime/macros/src/proc_macro_attrs/rewrite/externs.rs deleted file mode 100644 index 2a27dd8b4..000000000 --- a/arc-runtime/macros/src/proc_macro_attrs/rewrite/externs.rs +++ /dev/null @@ -1,21 +0,0 @@ -use crate::get_attr_val; -use proc_macro as pm; - -pub(crate) fn rewrite(attr: syn::AttributeArgs, mut item: syn::ItemFn) -> pm::TokenStream { - let unmangled = get_attr_val("unmangled", &attr); - if unmangled != item.sig.ident { - let tys = item.sig.inputs.iter().map(|arg| { - if let syn::FnArg::Typed(p) = arg { - &p.ty - } else { - unreachable!() - } - }); - item.sig.abi = None; - item.sig.inputs = syn::parse_quote!(x: (#(#tys,)*), ctx: Context); - item.block = syn::parse_quote!({ #unmangled(x, ctx) }); - quote::quote!(#item).into() - } else { - quote::quote!().into() - } -} diff --git a/arc-runtime/macros/src/proc_macro_attrs/rewrite/functions.rs b/arc-runtime/macros/src/proc_macro_attrs/rewrite/functions.rs deleted file mode 100644 index b522a852d..000000000 --- a/arc-runtime/macros/src/proc_macro_attrs/rewrite/functions.rs +++ /dev/null @@ -1,208 +0,0 @@ -use crate::has_attr_key; -use proc_macro as pm; -use proc_macro2 as pm2; -// use quote::quote; -use quote::quote; -use std::collections::HashMap; -use syn::visit_mut::VisitMut; - -pub(crate) fn rewrite(_attr: syn::AttributeArgs, mut item: syn::ItemFn) -> pm::TokenStream { - item.sig.generics.params.iter_mut().for_each(|p| { - if let syn::GenericParam::Type(ref mut p) = *p { - p.bounds.push(syn::parse_quote!(Sharable)); - } - }); - use crate::new_id; - Visitor::default().visit_item_fn_mut(&mut item); - let (ids, tys): (Vec<_>, Vec<_>) = item - .sig - .inputs - .iter() - .map(|x| match x { - syn::FnArg::Receiver(_) => unreachable!(), - syn::FnArg::Typed(t) => (&t.pat, &t.ty), - }) - .unzip(); - - let id = new_id(format!("_{}", item.sig.ident)); - let mut wrapper_item = item.clone(); - if wrapper_item.sig.asyncness.is_some() { - wrapper_item.block = syn::parse_quote!({ #id(#(#ids,)* ctx).await }); - } else { - wrapper_item.block = syn::parse_quote!({ #id(#(#ids,)* ctx) }); - } - wrapper_item.sig.inputs = syn::parse_quote!((#(#ids,)*) : (#(#tys,)*), ctx: Context); - item.sig.ident = id; - item.sig.inputs.push(syn::parse_quote!(ctx: Context)); - quote::quote!( - #wrapper_item - #item - ) - .into() -} - -pub(crate) struct Visitor { - scopes: Vec>, -} - -impl Default for Visitor { - fn default() -> Self { - Self { - scopes: vec![HashMap::new()], - } - } -} - -#[derive(Debug, Clone, Copy)] -enum MemKind { - Heap, - Stack, -} - -impl VisitMut for Visitor { - // Every function call must pass an implicit context parameter - fn visit_expr_call_mut(&mut self, i: &mut syn::ExprCall) { - i.args.push(syn::parse_quote!(ctx)); - syn::visit_mut::visit_expr_call_mut(self, i); - } - - fn visit_pat_ident_mut(&mut self, i: &mut syn::PatIdent) { - let kind = MemKind::Heap; - - self.scopes - .last_mut() - .map(|s| s.insert(i.ident.clone(), kind)) - .unwrap(); - } - - fn visit_pat_type_mut(&mut self, i: &mut syn::PatType) { - let kind = if is_primitive(&i.ty) { - MemKind::Stack - } else { - MemKind::Heap - }; - - let last = self.scopes.last_mut().unwrap(); - match i.pat.as_ref() { - syn::Pat::Ident(p) => { - last.insert(p.ident.clone(), kind); - } - syn::Pat::Tuple(p) => { - for p in p.elems.iter() { - match p { - syn::Pat::Ident(p) => { - last.insert(p.ident.clone(), kind); - } - _ => panic!("Expected id- or tuple-id pattern, got {}", quote!(#i)), - } - } - } - _ => panic!("Expected id- or tuple-id pattern, got {}", quote!(#i)), - } - } - - fn visit_block_mut(&mut self, i: &mut syn::Block) { - self.scopes.push(HashMap::new()); - syn::visit_mut::visit_block_mut(self, i); - self.scopes.pop(); - } - - fn visit_expr_assign_mut(&mut self, i: &mut syn::ExprAssign) { - syn::visit_mut::visit_expr_mut(self, &mut i.right); - } - - fn visit_expr_mut(&mut self, i: &mut syn::Expr) { - syn::visit_mut::visit_expr_mut(self, i); - if let syn::Expr::Path(expr) = i { - if let Some(ident) = get_path_ident(&expr.path) { - if let Some(MemKind::Heap) = self.scopes.iter().rev().find_map(|s| s.get(&ident)) { - *i = syn::parse_quote!(#ident.clone()) - } - } - } - } - - fn visit_expr_macro_mut(&mut self, i: &mut syn::ExprMacro) { - syn::visit_mut::visit_expr_macro_mut(self, i); - i.mac.tokens = self.visit_token_stream(i.mac.tokens.clone()); - } - - // Visit expr before pattern - fn visit_local_mut(&mut self, i: &mut syn::Local) { - if let Some(it) = &mut i.init { - self.visit_expr_mut(&mut *(it).1); - } - self.visit_pat_mut(&mut i.pat); - } - - // Every let binding must use the context parameter for allocation - fn visit_stmt_mut(&mut self, i: &mut syn::Stmt) { - syn::visit_mut::visit_stmt_mut(self, i); - if let syn::Stmt::Local(l) = i { - if has_attr_key("alloc", &l.attrs) { - let expr = &l.init.as_ref().unwrap().1; - match &l.pat { - syn::Pat::Ident(pat) => { - *i = syn::parse_quote!(letroot!(#pat = ctx.mutator().shadow_stack(), #expr);); - } - syn::Pat::Type(pat) => { - if !is_primitive(&*pat.ty) { - *i = syn::parse_quote!(letroot!(#pat = ctx.mutator().shadow_stack(), #expr);); - } - } - _ => todo!(), - } - } - } - } -} - -fn is_primitive(t: &syn::Type) -> bool { - match t { - syn::Type::Path(p) => [ - "i8", "i16", "i32", "i64", "u8", "u16", "u32", "u64", "f32", "f64", "unit", - ] - .contains(&p.path.segments.last().unwrap().ident.to_string().as_str()), - syn::Type::Reference(tr) => match &*tr.elem { - syn::Type::Path(p) => { - ["str"].contains(&p.path.segments.last().unwrap().ident.to_string().as_str()) - } - _ => false, - }, - _ => false, - } -} - -fn get_path_ident(p: &syn::Path) -> Option { - if p.segments.len() == 1 { - Some(p.segments[0].ident.clone()) - } else { - None - } -} - -impl Visitor { - fn visit_token_stream(&mut self, tokens: pm2::TokenStream) -> pm2::TokenStream { - let mut result = pm2::TokenStream::new(); - for token in tokens { - let token = match &token { - pm2::TokenTree::Group(g) => { - let stream = self.visit_token_stream(g.stream()); - let delim = g.delimiter(); - pm2::Group::new(delim, stream).into() - } - pm2::TokenTree::Punct(_) => token, - pm2::TokenTree::Ident(i) => { - if let Some(MemKind::Heap) = self.scopes.iter().rev().find_map(|s| s.get(&i)) { - result.extend(quote::quote!((#i.clone()))); - continue; - } - token - } - pm2::TokenTree::Literal(_) => token, - }; - result.extend([token]); - } - result - } -} diff --git a/arc-runtime/macros/src/proc_macro_attrs/rewrite/impls.rs b/arc-runtime/macros/src/proc_macro_attrs/rewrite/impls.rs deleted file mode 100644 index 27753020e..000000000 --- a/arc-runtime/macros/src/proc_macro_attrs/rewrite/impls.rs +++ /dev/null @@ -1,48 +0,0 @@ -use proc_macro as pm; -use quote::quote; - -pub(crate) fn rewrite(_attr: syn::AttributeArgs, item: syn::ItemImpl) -> pm::TokenStream { - use crate::new_id; - let mut functions = Vec::new(); - let ty_name = if let syn::Type::Path(x) = item.self_ty.as_ref() { - &x.path.segments.last().unwrap().ident - } else { - unreachable!("Found non-path type in impl") - }; - let (impl_generics, ty_generics, where_clause) = item.generics.split_for_impl(); - for item in &item.items { - if let syn::ImplItem::Method(item) = item { - let mut inputs = item.sig.inputs.clone().into_iter().collect::>(); - let method_name = &item.sig.ident; - let name = new_id(format!("{}_{}", ty_name, method_name)); - let output = &item.sig.output; - if matches!(inputs[0], syn::FnArg::Receiver(_)) { - inputs[0] = syn::parse_quote!(self_param: #ty_name #ty_generics); - } - let ctx = match inputs.pop().unwrap() { - syn::FnArg::Receiver(_) => unreachable!("Receiver in impl method"), - syn::FnArg::Typed(p) => p, - }; - let ctx_id = ctx.pat; - let ctx_ty = ctx.ty; - let (ids, tys): (Vec<_>, Vec<_>) = inputs - .iter() - .map(|i| match i { - syn::FnArg::Receiver(_) => unreachable!(), - syn::FnArg::Typed(i) => (&i.pat, &i.ty), - }) - .unzip(); - functions.push(quote! { - pub fn #name #impl_generics ((#(#ids,)*):(#(#tys,)*), #ctx_id: #ctx_ty) #output #where_clause { - #ty_name::#method_name(#(#ids,)* #ctx_id) - } - }); - } - } - - quote::quote!( - #item - #(#functions)* - ) - .into() -} diff --git a/arc-runtime/macros/src/proc_macro_attrs/rewrite/nonpersistent_tasks.rs b/arc-runtime/macros/src/proc_macro_attrs/rewrite/nonpersistent_tasks.rs deleted file mode 100644 index db52a423a..000000000 --- a/arc-runtime/macros/src/proc_macro_attrs/rewrite/nonpersistent_tasks.rs +++ /dev/null @@ -1,168 +0,0 @@ -#![allow(unused)] - -use crate::has_attr_key; -use crate::new_id; -use crate::split_name_type; - -use proc_macro as pm; -use proc_macro2 as pm2; -use quote::quote; -use syn::parse::*; -use syn::punctuated::Punctuated; -use syn::token::Comma; - -/// ```no_run -/// task id(a:Pullable[i32], b:Pullable[i32]): (c:Pushable[i32], d:Pushable[i32]) { -/// val x = receive a; -/// val y = receive b; -/// c ! x; -/// d ! y; -/// } -/// ``` -/// -/// Becomes -/// -/// ```no_run -/// #[rewrite(impersistent)] -/// mod my_task { -/// fn task(a:Pullable, #[output] b:Pushable) { -/// let x = pull!(a); -/// push!(b, x); -/// } -/// } -/// ``` - -pub(crate) fn rewrite(attr: syn::AttributeArgs, item: syn::ItemFn) -> pm::TokenStream { - let task_name = item.sig.ident.clone(); - - let mod_name = new_id(format!("mod_{task_name}")); - - let task_body = item.block.clone(); - - let (iparams, oparams): (Vec<_>, Vec<_>) = - item.sig.inputs.clone().into_iter().partition(|p| match p { - syn::FnArg::Receiver(_) => unreachable!(), - syn::FnArg::Typed(p) => !has_attr_key("output", &p.attrs), - }); - - let (iparam_name, iparam_type): (Vec<_>, Vec<_>) = split_name_type(iparams); - let (oparam_name, oparam_type): (Vec<_>, Vec<_>) = split_name_type(oparams); - - let oparam_pull_name = oparam_name - .iter() - .map(|name| new_id(format!("{name}_pull"))) - .collect::>(); - - let oparam_pull_type = oparam_type - .iter() - .map(|ty| quote!(<#ty as Channel>::Pullable)) - .collect::>(); - - quote!( - use #mod_name::#task_name; - #[allow(clippy::all)] - #[allow(non_snake_case)] - #[allow(unreachable_code)] - pub mod #mod_name { - use arc_runtime::prelude::*; - use arc_runtime::data::channels::local::multicast::Pushable; - use arc_runtime::data::channels::local::multicast::Pullable; - use super::*; - - #[derive(Send)] - struct Task { - pub ctx: ComponentContext, - pub event_time: DateTime, - #(pub #iparam_name: #iparam_type,)* - #(pub #oparam_name: #oparam_type,)* - } - - #[allow(unused_parens)] - pub fn #task_name((#(#iparam_name,)*): (#(#iparam_type,)*), ctx: Context) -> (#(#oparam_pull_type),*) { - #(let #iparam_name = #iparam_name.into_sendable(ctx);)* - #(let #iparam_name = #iparam_name.into_sharable(ctx);)* - #(let (#oparam_name, #oparam_pull_name) = <#oparam_type as Channel>::channel(ctx);)* - ctx.launch(move || Task::new(#(#iparam_name,)* #(#oparam_name,)*)); - (#(#oparam_pull_name),*) - } - - impl Task { - #[allow(deprecated)] // NOTE: DateTime::unix_epoch is deprecated - fn new(#(#iparam_name: #iparam_type,)* #(#oparam_name: #oparam_type,)*) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - event_time: DateTime::new(date!(1970-01-01), time!(0:0:0)), - #(#iparam_name,)* - #(#oparam_name,)* - } - } - - async fn run(#(mut #iparam_name: #iparam_type,)* #(#oparam_name: #oparam_type,)* ctx: Context) -> Control<()> { - #task_body - Control::Finished - } - } - - impl ComponentDefinition for Task { - fn setup(&mut self, self_component: Arc>) { - self.ctx.initialise(self_component.clone()); - } - - fn execute(&mut self, _max_events: usize, _skip: usize) -> ExecuteResult { - ExecuteResult::new(false, 0, 0) - } - - fn ctx_mut(&mut self) -> &mut ComponentContext { - &mut self.ctx - } - - fn ctx(&self) -> &ComponentContext { - &self.ctx - } - - fn type_name() -> &'static str { - stringify!(#task_name) - } - } - - impl Actor for Task { - type Message = TaskMessage; - - fn receive_local(&mut self, _: Self::Message) -> Handled { - Handled::Ok - } - - fn receive_network(&mut self, _: NetMessage) -> Handled { - todo!() - } - } - - impl ComponentLifecycle for Task { - fn on_start(&mut self) -> Handled { - self.spawn_local(move |async_self| async move { - let component = async_self.ctx().component(); - let mutator = instantiate_immix(ImmixOptions::default()); - let ctx = Context::new(component, mutator); - #(let #iparam_name = async_self.#iparam_name.clone();)* - #(let #oparam_name = async_self.#oparam_name.clone();)* - Task::run(#(#iparam_name,)* #(#oparam_name,)* ctx).await; - ctx.destroy(); - Handled::DieNow - }); - Handled::Ok - } - } - - impl DynamicPortAccess for Task { - fn get_provided_port_as_any(&mut self, _: TypeId) -> Option<&mut dyn Any> { - unreachable!(); - } - - fn get_required_port_as_any(&mut self, _: TypeId) -> Option<&mut dyn Any> { - unreachable!(); - } - } - } - ) - .into() -} diff --git a/arc-runtime/macros/src/proc_macro_attrs/rewrite/persistent_tasks.rs b/arc-runtime/macros/src/proc_macro_attrs/rewrite/persistent_tasks.rs deleted file mode 100644 index 94144f318..000000000 --- a/arc-runtime/macros/src/proc_macro_attrs/rewrite/persistent_tasks.rs +++ /dev/null @@ -1,232 +0,0 @@ -#![allow(unused)] - -use crate::has_attr_key; -use crate::new_id; -use crate::split_name_type; - -use proc_macro as pm; -use proc_macro2 as pm2; -use quote::quote; -use syn::parse::*; -use syn::punctuated::Punctuated; -use syn::token::Comma; - -/// ```no_run -/// task id(a:Pullable[i32], b:Pullable[i32]): (c:Pushable[i32], d:Pushable[i32]) { -/// val x = receive a; -/// val y = receive b; -/// c ! x; -/// d ! y; -/// } -/// ``` -/// -/// Becomes -/// -/// ```no_run -/// #[rewrite(impersistent)] -/// mod my_task { -/// fn task(a:Pullable, #[output] b:Pushable) { -/// let x = pull!(a); -/// push!(b, x); -/// } -/// } -/// ``` - -pub(crate) fn rewrite(attr: syn::AttributeArgs, item: syn::ItemMod) -> pm::TokenStream { - let task_name = item.ident.clone(); - - let mod_name = new_id(format!("mod_{task_name}")); - - let items = item.content.expect("Expected module to contain items").1; - - let mut state = items - .iter() - .filter_map(|item| match item { - syn::Item::Struct(item) => Some(item), - _ => None, - }) - .collect::>(); - - let state_name = state - .iter() - .map(|item| item.ident.clone()) - .collect::>(); - - let final_state_name = state_name.last().unwrap().clone(); - let first_state_name = state_name.first().unwrap().clone(); - - let transition = items - .iter() - .filter_map(|item| match item { - syn::Item::Fn(item) if item.sig.ident != "task" => Some(item), - _ => None, - }) - .collect::>(); - - let transition_name = transition - .iter() - .map(|item| item.sig.ident.clone()) - .collect::>(); - - let task = items - .iter() - .find_map(|item| match item { - syn::Item::Fn(item) if item.sig.ident == "task" => Some(item), - _ => None, - }) - .expect(r#"Expected a function with name "task" in module"#); - - let (iparams, oparams): (Vec<_>, Vec<_>) = - task.sig.inputs.clone().into_iter().partition(|p| match p { - syn::FnArg::Receiver(_) => unreachable!(), - syn::FnArg::Typed(p) => !has_attr_key("output", &p.attrs), - }); - - let (iparam_name, iparam_type): (Vec<_>, Vec<_>) = split_name_type(iparams); - let (oparam_name, oparam_type): (Vec<_>, Vec<_>) = split_name_type(oparams); - - let oparam_pull_name = oparam_name - .iter() - .map(|name| new_id(format!("{name}_pull"))) - .collect::>(); - - let oparam_pull_type = oparam_type - .iter() - .map(|ty| quote!(<#ty as Channel>::Pullable)) - .collect::>(); - - quote!( - use #mod_name::#task_name; - #[allow(clippy::all)] - #[allow(non_snake_case)] - #[allow(unreachable_code)] - #[allow(unused)] - pub mod #mod_name { - use arc_runtime::prelude::*; - use arc_runtime::data::channels::local::multicast::Pushable; - use arc_runtime::data::channels::local::multicast::Pullable; - use super::*; - - #[derive(Send)] - struct Task { - pub ctx: ComponentContext, - #(pub #iparam_name: #iparam_type,)* - #(pub #oparam_name: #oparam_type,)* - } - - impl Task { - fn new(#(#iparam_name: #iparam_type,)* #(#oparam_name: #oparam_type,)*) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - #(#iparam_name,)* - #(#oparam_name,)* - } - } - } - - pub fn #task_name((#(#iparam_name,)*): (#(#iparam_type,)*), ctx: Context) -> (#(#oparam_pull_type),*) { - #(let #iparam_name = #iparam_name.into_sendable(ctx);)* - #(let #iparam_name = #iparam_name.into_sharable(ctx);)* - #(let (#oparam_name, #oparam_pull_name) = <#oparam_type as Channel>::channel(ctx);)* - ctx.launch(move || Task::new(#(#iparam_name,)* #(#oparam_name,)*)); - (#(#oparam_pull_name),*) - } - - struct Pair(State, Context); - - #[derive(From)] - enum State { - #(#state_name(#state_name),)* - } - - #(#[derive(New)] #state)* - - #(#transition)* - - impl Future for Pair { - type Output = (); - - fn poll(self: Pin<&mut Self>, cx: &mut PollContext) -> Poll { - cx.waker().wake_by_ref(); - let Pair(state, ctx) = self.get_mut(); - replace_with_or_abort_and_return(state, |state| transition(state, cx, *ctx)) - } - } - - fn transition(mut state: State, cx: &mut PollContext, ctx: Context) -> (Poll<()>, State) { - loop { - let (poll, new_state) = match state { - #(State::#state_name(state) => #transition_name(state, cx, ctx),)* - }; - match &poll { - Ready(()) if matches!(&new_state, State::#final_state_name(_)) => return (poll, new_state), - Ready(()) => state = new_state, - Pending => return (poll, new_state), - } - } - } - - impl ComponentDefinition for Task { - fn setup(&mut self, self_component: Arc>) { - self.ctx.initialise(self_component.clone()); - } - - fn execute(&mut self, _max_events: usize, _skip: usize) -> ExecuteResult { - ExecuteResult::new(false, 0, 0) - } - - fn ctx_mut(&mut self) -> &mut ComponentContext { - &mut self.ctx - } - - fn ctx(&self) -> &ComponentContext { - &self.ctx - } - - fn type_name() -> &'static str { - stringify!(#task_name) - } - } - - impl Actor for Task { - type Message = TaskMessage; - - fn receive_local(&mut self, _: Self::Message) -> Handled { - Handled::Ok - } - - fn receive_network(&mut self, _: NetMessage) -> Handled { - todo!() - } - } - - impl ComponentLifecycle for Task { - fn on_start(&mut self) -> Handled { - self.spawn_local(move |mut async_self| async move { - let component = async_self.ctx().component(); - let mutator = instantiate_immix(ImmixOptions::default()); - let ctx = Context::new(component, mutator); - #(let #iparam_name = async_self.#iparam_name.clone();)* - #(let #oparam_name = async_self.#oparam_name.clone();)* - let state = #first_state_name::new(#(#iparam_name,)* #(#oparam_name,)*).into(); - Pair(state, ctx).await; - ctx.destroy(); - Handled::DieNow - }); - Handled::Ok - } - } - - impl DynamicPortAccess for Task { - fn get_provided_port_as_any(&mut self, _: TypeId) -> Option<&mut dyn Any> { - unreachable!(); - } - - fn get_required_port_as_any(&mut self, _: TypeId) -> Option<&mut dyn Any> { - unreachable!(); - } - } - } - ) - .into() -} diff --git a/arc-runtime/macros/src/proc_macro_attrs/rewrite/structs.rs b/arc-runtime/macros/src/proc_macro_attrs/rewrite/structs.rs deleted file mode 100644 index 066ab6205..000000000 --- a/arc-runtime/macros/src/proc_macro_attrs/rewrite/structs.rs +++ /dev/null @@ -1,152 +0,0 @@ -use proc_macro as pm; -use quote::quote; - -use crate::new_id; - -#[allow(unused)] -pub(crate) fn rewrite(args: syn::AttributeArgs, mut item: syn::ItemStruct) -> pm::TokenStream { - item.fields.iter_mut().for_each(|field| { - field.vis = syn::parse_quote!(pub); - }); - let (_, type_generics, where_clause) = item.generics.split_for_impl(); - - let mut sharable_impl_generics = item.generics.params.clone(); - let mut sendable_impl_generics = item.generics.params.clone(); - - sharable_impl_generics.iter_mut().for_each(|g| { - if let syn::GenericParam::Type(t) = g { - t.bounds.push(syn::parse_quote!(Sharable)) - } - }); - sendable_impl_generics.iter_mut().for_each(|g| { - if let syn::GenericParam::Type(t) = g { - t.bounds.push(syn::parse_quote!(Sendable)) - } - }); - let sharable_impl_generics = quote::quote!(<#sharable_impl_generics>); - let sendable_impl_generics = quote::quote!(<#sendable_impl_generics>); - - let into_generics: Vec<_> = item - .generics - .params - .iter() - .filter_map(|g| { - if let syn::GenericParam::Type(t) = g { - let id = &t.ident; - Some(quote::quote!(#id::T)) - } else { - None - } - }) - .collect(); - let into_generics = if into_generics.is_empty() { - quote::quote!() - } else { - quote::quote!(<#(#into_generics),*>) - }; - - let abstract_id = item.ident.clone(); - let concrete_id = new_id(format!("Concrete{}", item.ident)); - let sharable_mod_id = new_id(format!("sharable_{}", item.ident)); - let sendable_mod_id = new_id(format!("sendable_{}", item.ident)); - - let mut concrete_sharable_item = item.clone(); - let mut concrete_sendable_item = item.clone(); - - concrete_sharable_item - .generics - .params - .iter_mut() - .for_each(|g| { - if let syn::GenericParam::Type(t) = g { - t.bounds.push(syn::parse_quote!(Sharable)) - } - }); - concrete_sendable_item - .generics - .params - .iter_mut() - .for_each(|g| { - if let syn::GenericParam::Type(t) = g { - t.bounds.push(syn::parse_quote!(Sendable)) - } - }); - - concrete_sharable_item.ident = concrete_id.clone(); - concrete_sendable_item.ident = concrete_id.clone(); - - // Generate the sendable struct - concrete_sendable_item - .fields - .iter_mut() - .for_each(|f| { - let ty = f.ty.clone(); - if let syn::Type::Path(t) = &ty { - if !item.generics.params.iter().any(|x| match x { - syn::GenericParam::Type(x) => t.path.is_ident(&x.ident), - _ => false, - }) { - f.ty = syn::parse_quote!(<#ty as DynSharable>::T); - } - } else { - f.ty = syn::parse_quote!(<#ty as DynSharable>::T); - } - }); - - let field_id = concrete_sendable_item - .fields - .iter() - .map(|f| &f.ident) - .collect::>(); - - quote!( - - use arc_runtime::prelude::*; - pub mod #sharable_mod_id { - use super::*; - use arc_runtime::prelude::*; - - #[derive(Clone, Debug, Send, Sync, Alloc, Unpin, From, Deref, Abstract, Collectable, Finalize, Trace)] - pub struct #abstract_id #sharable_impl_generics(pub Gc<#concrete_id #type_generics>) #where_clause; - - #[derive(Clone, Debug, Collectable, Finalize, Trace)] - #concrete_sharable_item - } - - mod #sendable_mod_id { - use super::*; - use arc_runtime::prelude::*; - - #[derive(Clone, Debug, Deref, From, Abstract, Deserialize, Serialize)] - #[serde(bound = "")] - #[from(forward)] - pub struct #abstract_id #sendable_impl_generics(pub Box<#concrete_id #type_generics>) #where_clause; - - #[derive(Clone, Debug, Deserialize, Serialize)] - #[serde(bound = "")] - #concrete_sendable_item - } - - use #sharable_mod_id::#abstract_id; - use #sharable_mod_id::#concrete_id; - - impl #sharable_impl_generics DynSharable for #sharable_mod_id::#abstract_id #type_generics #where_clause { - type T = #sendable_mod_id::#abstract_id #into_generics; - fn into_sendable(&self, ctx: Context) -> Self::T { - #sendable_mod_id::#concrete_id { - #(#field_id: (self.0).#field_id.clone().into_sendable(ctx)),* - }.into() - } - } - - impl #sendable_impl_generics DynSendable for #sendable_mod_id::#abstract_id #type_generics #where_clause { - type T = #sharable_mod_id::#abstract_id #into_generics; - fn into_sharable(&self, ctx: Context) -> Self::T { - #sharable_mod_id::#concrete_id { - #(#field_id: (self.0).#field_id.into_sharable(ctx)),* - }.alloc(ctx) - } - } - - ).into() -} diff --git a/arc-runtime/macros/src/proc_macro_derives.rs b/arc-runtime/macros/src/proc_macro_derives.rs deleted file mode 100644 index 6eddb5860..000000000 --- a/arc-runtime/macros/src/proc_macro_derives.rs +++ /dev/null @@ -1,158 +0,0 @@ -use crate::new_id; -use proc_macro::TokenStream; - -pub fn derive_abstract(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let abstract_ident = &input.ident; - let concrete_ident = new_id(format!("Concrete{}", abstract_ident)); - quote::quote!( - impl #impl_generics Abstract for #abstract_ident #type_generics #where_clause { - type Concrete = #concrete_ident #type_generics; - } - impl #impl_generics Concrete for #concrete_ident #type_generics #where_clause { - type Abstract = #abstract_ident #type_generics; - } - ) - .into() -} - -pub fn derive_collectable(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let name = &input.ident; - quote::quote!(impl #impl_generics Collectable #where_clause for #name #type_generics {}).into() -} - -pub fn derive_finalize(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let name = &input.ident; - quote::quote!(unsafe impl #impl_generics Finalize for #name #type_generics #where_clause {}) - .into() -} - -pub fn derive_notrace(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let name = &input.ident; - quote::quote!( - unsafe impl #impl_generics Trace for #name #type_generics #where_clause { - fn trace(&mut self, vis: &mut dyn Visitor) { } - } - ) - .into() -} - -pub fn derive_trace(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let name = &input.ident; - match &input.data { - syn::Data::Struct(data) => { - let field = data.fields.iter().enumerate().map(|(index, field)| { - field - .ident - .as_ref() - .map(|ident| quote::quote!(#ident)) - .unwrap_or_else(|| { - let index = syn::Index::from(index); - quote::quote!(#index) - }) - }); - quote::quote!( - unsafe impl #impl_generics Trace for #name #type_generics #where_clause { - fn trace(&mut self, vis: &mut dyn Visitor) { - #(self.#field.trace(vis));* - } - } - ) - .into() - } - syn::Data::Enum(data) => { - let variant = data.variants.iter().map(|v| &v.ident); - quote::quote!( - unsafe impl #impl_generics Trace for #name #type_generics #where_clause { - fn trace(&mut self, vis: &mut dyn Visitor) { - match self { - #(Self::#variant(data) => data.trace(vis),)* - } - } - } - ) - .into() - } - syn::Data::Union(_) => unreachable!(), - } -} - -pub fn derive_garbage(input: syn::DeriveInput) -> TokenStream { - let mut collectable = derive_collectable(input.clone()); - let finalize = derive_finalize(input.clone()); - let trace = derive_trace(input.clone()); - collectable.extend(finalize); - collectable.extend(trace); - collectable -} - -pub fn derive_nodebug(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let name = &input.ident; - quote::quote!( - impl #impl_generics std::fmt::Debug for #name #type_generics #where_clause { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", stringify!(#name)) - } - } - ) - .into() -} - -pub fn derive_alloc(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let abstract_id = &input.ident; - let concrete_id = new_id(format!("Concrete{}", abstract_id)); - quote::quote!( - impl #impl_generics Alloc<#abstract_id #type_generics> for #concrete_id #type_generics #where_clause { - fn alloc(self, ctx: Context) -> #abstract_id #type_generics { - #abstract_id(ctx.mutator().allocate(self, AllocationSpace::New).into()) - } - } - ) - .into() -} - -pub fn derive_send(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let name = &input.ident; - quote::quote!(unsafe impl #impl_generics Send for #name #type_generics #where_clause {}).into() -} - -pub fn derive_sync(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let name = &input.ident; - quote::quote!(unsafe impl #impl_generics Sync for #name #type_generics #where_clause {}).into() -} - -pub fn derive_unpin(input: syn::DeriveInput) -> TokenStream { - let (impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let name = &input.ident; - quote::quote!(impl #impl_generics Unpin for #name #type_generics #where_clause {}).into() -} - -pub fn derive_noserde(input: syn::DeriveInput) -> TokenStream { - let mut deserialize_generics = input.generics.clone(); - deserialize_generics.params.push(syn::parse_quote!('i)); - let (serialize_impl_generics, type_generics, where_clause) = input.generics.split_for_impl(); - let (deserialize_impl_generics, _, _) = deserialize_generics.split_for_impl(); - let name = &input.ident; - quote::quote!( - impl #serialize_impl_generics Serialize for #name #type_generics #where_clause { - fn serialize(&self, _: S) -> Result { - panic!("Attempted to serialize an unserializable type {}", stringify!(#name)) - } - } - - impl #deserialize_impl_generics Deserialize<'i> for #name #type_generics #where_clause { - fn deserialize>(_: D) -> Result { - panic!("Attempted to deserialize an undeserializable type {}", stringify!(#name)) - } - } - ) - .into() -} diff --git a/arc-runtime/macros/src/proc_macros.rs b/arc-runtime/macros/src/proc_macros.rs deleted file mode 100644 index 32e939c1a..000000000 --- a/arc-runtime/macros/src/proc_macros.rs +++ /dev/null @@ -1,285 +0,0 @@ -use crate::new_id; - -use proc_macro as pm; -use proc_macro::TokenStream; -use proc_macro2 as pm2; - -pub fn call(input: syn::Expr) -> TokenStream { - match input { - syn::Expr::Call(e) => { - let func = e.func; - let args = e.args; - if args.len() == 1 && !args.trailing_punct() { - quote::quote!(#func((#args,), ctx)).into() - } else { - quote::quote!(#func((#args), ctx)).into() - } - } - _ => panic!("Expected function call expression"), - } -} - -pub fn call_async(input: syn::Expr) -> TokenStream { - match input { - syn::Expr::Call(e) => { - let func = e.func; - let args = e.args; - if args.len() == 1 && !args.trailing_punct() { - quote::quote!(#func((#args,), ctx).await).into() - } else { - quote::quote!(#func((#args), ctx).await).into() - } - } - _ => panic!("Expected function call expression"), - } -} - -pub fn call_indirect(input: syn::Expr) -> TokenStream { - match input { - syn::Expr::Call(e) => { - let func = e.func; - let args = e.args; - if args.len() == 1 && !args.trailing_punct() { - quote::quote!((#func.ptr)((#args,), ctx)).into() - } else { - quote::quote!((#func.ptr)((#args), ctx)).into() - } - } - _ => panic!("Expected function call expression"), - } -} - -pub fn enwrap(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let mut path: syn::Path = parse(&mut iter); - concrete_enum_path(&mut path); - let data: syn::Expr = parse(&mut iter); - quote::quote!(#path(#data).alloc(ctx)).into() -} - -pub fn is(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let mut path: syn::Path = parse(&mut iter); - concrete_enum_path(&mut path); - let data: syn::Expr = parse(&mut iter); - quote::quote!(matches!(*#data.0.clone(), #path(_))).into() -} - -pub fn unwrap(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let mut path: syn::Path = parse(&mut iter); - concrete_enum_path(&mut path); - let expr: syn::Expr = parse(&mut iter); - quote::quote!(if let #path(v) = &*#expr.0 { v.clone() } else { unreachable!() }).into() -} - -pub fn new(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let mut data: syn::ExprStruct = parse(&mut iter); - concrete_struct_path(&mut data.path); - quote::quote!((#data).alloc(ctx)).into() -} - -pub fn vector(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let data: Vec = parse_all(&mut iter); - quote::quote!(_vector!([#(#data),*], ctx)).into() -} - -pub fn erase(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let expr: syn::Expr = parse(&mut iter); - let ident: syn::Ident = parse(&mut iter); - let (wrapper_impl, wrapper_cons) = generate_wrapper(&ident); - let wrapper = wrapper_cons(expr); - quote::quote!( - { - #wrapper_impl - Erased::erase(#wrapper, ctx) - } - ) - .into() -} - -pub fn unerase(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let expr: syn::Expr = parse(&mut iter); - let id: syn::Ident = parse(&mut iter); - let (wrapper_impl, _) = generate_wrapper(&id); - quote::quote!( - { - #wrapper_impl - Erased::unerase::<#id>(#expr, ctx) - } - ) - .into() -} - -pub fn push(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let channel: syn::Expr = parse(&mut iter); - let data: syn::Expr = parse(&mut iter); - quote::quote!(#channel.push(#data, ctx).await?).into() -} - -pub fn pull(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let channel: syn::Expr = parse(&mut iter); - quote::quote!(#channel.pull(ctx).await?).into() -} - -/// Create a future for pulling data from a channel. -pub fn pull_transition(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let future: syn::Pat = parse(&mut iter); - let pullable: syn::Expr = parse(&mut iter); - let state: syn::Expr = parse(&mut iter); - quote::quote!( - { - let mut tmp = #pullable.clone(); - let #future = async move { tmp.pull(ctx).await }.boxed(); - transition!(#state); - } - ) - .into() -} - -/// Create a future for pushing data into a channel. -pub fn push_transition(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let future: syn::Pat = parse(&mut iter); - let pushable: syn::Expr = parse(&mut iter); - let data: syn::Expr = parse(&mut iter); - let state: syn::Expr = parse(&mut iter); - quote::quote!( - { - let mut tmp = #pushable.clone(); - let #future = async move { tmp.push(#data, ctx).await }.boxed(); - transition!(#state); - } - ) - .into() -} - -// /// Transition to a new state. -pub fn transition(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let state: syn::Expr = parse(&mut iter); - quote::quote!(return (Pending, #state.into())).into() -} - -// /// Terminate the state machine. -pub fn terminate(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let state: syn::Expr = parse(&mut iter); - quote::quote!(return (Ready(()), #state.into())).into() -} - -// /// Wait until a future completes. -pub fn wait(input: TokenStream) -> TokenStream { - let mut iter = input.into_iter(); - let arg: syn::Expr = parse(&mut iter); - let cx: syn::Expr = parse(&mut iter); - let finished: syn::Expr = parse(&mut iter); - let pending: syn::Expr = parse(&mut iter); - quote::quote!( - match #arg.as_mut().poll(#cx) { - Ready(Finished) => terminate!(#finished), - Ready(Continue(x)) => x, - Pending => transition!(#pending), - } - ) - .into() -} - -fn generate_wrapper(id: &syn::Ident) -> (pm2::TokenStream, impl Fn(syn::Expr) -> pm2::TokenStream) { - let span = id.span().unwrap().start(); - let line = span.line; - let column = span.column; - let abstract_id: syn::Ident = new_id(format!("Wrapper_{}_{}", line, column)); - let concrete_id: syn::Ident = new_id(format!("ConcreteWrapper_{}_{}", line, column)); - let sharable_wrapper_mod_id = new_id(format!("sharable_{}", abstract_id)); - let sendable_wrapper_mod_id = new_id(format!("sendable_{}", abstract_id)); - let wrapper_impl = quote::quote!( - mod #sharable_wrapper_mod_id { - use arc_runtime::prelude::*; - #[derive(Clone, Debug, Send, Sync, Unpin, From, Deref, Abstract, Collectable, Finalize, Trace)] - #[repr(transparent)] - pub struct #abstract_id(pub #concrete_id); - #[derive(Clone, Debug, Collectable, Finalize, Trace)] - #[repr(transparent)] - pub struct #concrete_id(pub super::#id); - } - - mod #sendable_wrapper_mod_id { - use arc_runtime::prelude::*; - #[derive(Clone, Debug, Deref, From, Abstract, Serialize, Deserialize)] - #[repr(transparent)] - pub struct #abstract_id(pub #concrete_id); - #[derive(Clone, Debug, Serialize, Deserialize)] - #[repr(transparent)] - pub struct #concrete_id(pub ::T); - } - - impl DynSharable for #sharable_wrapper_mod_id::#abstract_id { - type T = ::T; - fn into_sendable(&self, ctx: Context) -> Self::T { - Self::T::erase(#sendable_wrapper_mod_id::#abstract_id(#sendable_wrapper_mod_id::#concrete_id(self.0.0.into_sendable(ctx))), ctx) - } - } - - impl DynSendable for #sendable_wrapper_mod_id::#abstract_id { - type T = Erased; - fn into_sharable(&self, ctx: Context) -> Self::T { - Self::T::erase(#sharable_wrapper_mod_id::#abstract_id(#sharable_wrapper_mod_id::#concrete_id(self.0.0.into_sharable(ctx))), ctx) - } - } - ); - let wrapper_cons = move |expr| quote::quote!(#sharable_wrapper_mod_id::#abstract_id(#sharable_wrapper_mod_id::#concrete_id(#expr))); - (wrapper_impl, wrapper_cons) -} - -fn concrete_enum_path(path: &mut syn::Path) { - let mut x = path.segments.iter_mut(); - match (x.next(), x.next(), x.next()) { - (Some(_), Some(i), Some(_)) => i.ident = new_id(format!("Concrete{}", i.ident)), - (Some(i), Some(_), None) => i.ident = new_id(format!("Concrete{}", i.ident)), - (Some(_), None, None) => {} - _ => unreachable!(), - } -} - -fn concrete_struct_path(path: &mut syn::Path) { - let mut x = path.segments.iter_mut(); - match (x.next(), x.next()) { - (Some(_), Some(i)) => i.ident = new_id(format!("Concrete{}", i.ident)), - (Some(i), None) => i.ident = new_id(format!("Concrete{}", i.ident)), - _ => unreachable!(), - } -} - -fn parse(input: &mut impl Iterator) -> T { - let mut stream = pm::TokenStream::new(); - while let Some(token) = input.next() { - match token { - pm::TokenTree::Punct(t) if t.as_char() == ',' => break, - _ => stream.extend([token]), - } - } - syn::parse::(stream).unwrap() -} - -fn parse_all(input: &mut impl Iterator) -> Vec { - let mut nodes = Vec::new(); - let mut stream = pm::TokenStream::new(); - while let Some(token) = input.next() { - match token { - pm::TokenTree::Punct(t) if t.as_char() == ',' => { - nodes.push(syn::parse::(stream).unwrap()); - stream = pm::TokenStream::new(); - } - _ => stream.extend([token]), - } - } - nodes -} diff --git a/arc-runtime/src/context.rs b/arc-runtime/src/context.rs deleted file mode 100644 index 810fcb187..000000000 --- a/arc-runtime/src/context.rs +++ /dev/null @@ -1,59 +0,0 @@ -use comet::immix::Immix; -use comet::immix::ImmixOptions; -use comet::mutator::MutatorRef; -use derive_more::Constructor as New; -use kompact::prelude::*; - -use crate::prelude::Send; -use crate::prelude::Sync; -use crate::prelude::Unpin; -use std::sync::Arc; - -/// The context of a single task. -#[derive(Copy, Clone, Send, Sync, Unpin)] -pub struct Context(*mut Core); - -/// The data stored by the context. -#[derive(New)] -struct Core { - pub component: Arc, - pub mutator: MutatorRef, -} - -impl Context { - #[allow(clippy::mut_from_ref)] - fn as_mut(&self) -> &mut Core { - // SAFETY: This is safe because the context is only ever accessed from a single task. - unsafe { &mut *self.0 } - } -} - -impl Context { - pub fn new(component: Arc, mutator: MutatorRef) -> Self { - Self(Box::leak(Box::new(Core::new(component, mutator))) as *mut Core) - } - pub fn destroy(self) { - // SAFETY: This is safe because the context is managed entirely by the code generator. This - // function is only ever called once. - unsafe { - Box::from_raw(self.0); - } - } - #[allow(clippy::mut_from_ref)] - pub fn mutator(&self) -> &mut MutatorRef { - &mut self.as_mut().mutator - } - #[allow(clippy::mut_from_ref)] - pub fn component(&self) -> &mut Arc { - &mut self.as_mut().component - } - pub fn launch(&self, f: F) - where - F: FnOnce() -> C, - C: ComponentDefinition + 'static, - { - let system = self.as_mut().component.system(); - let c = system.create(f); - system.start(&c); - } -} diff --git a/arc-runtime/src/control.rs b/arc-runtime/src/control.rs deleted file mode 100644 index 51ee9783d..000000000 --- a/arc-runtime/src/control.rs +++ /dev/null @@ -1,29 +0,0 @@ -use std::ops::ControlFlow; -use std::ops::FromResidual; -use std::ops::Try; - -#[derive(Debug)] -pub enum Control { - Continue(T), - Finished, -} - -impl FromResidual<()> for Control { - fn from_residual(residual: ()) -> Self { - Control::Finished - } -} - -impl Try for Control { - type Output = T; - type Residual = (); - fn from_output(output: T) -> Self { - Control::Continue(output) - } - fn branch(self) -> ControlFlow<(), T> { - match self { - Control::Continue(output) => ControlFlow::Continue(output), - Control::Finished => ControlFlow::Break(()), - } - } -} diff --git a/arc-runtime/src/data/cells.rs b/arc-runtime/src/data/cells.rs deleted file mode 100644 index 996c28063..000000000 --- a/arc-runtime/src/data/cells.rs +++ /dev/null @@ -1,43 +0,0 @@ -use crate::prelude::*; - -pub mod sharable { - use crate::prelude::*; - #[derive(Clone, From, Finalize, Collectable, Trace, Debug, Send, Sync, Unpin)] - pub struct Cell(pub Gc); -} - -pub mod sendable { - use crate::prelude::*; - #[derive(Clone, From, Send, Serialize, Deserialize)] - #[serde(bound = "")] - pub struct Cell(pub T); -} - -impl DynSharable for sharable::Cell { - type T = sendable::Cell; - fn into_sendable(&self, ctx: Context) -> Self::T { - sendable::Cell(self.0.into_sendable(ctx)) - } -} - -impl DynSendable for sendable::Cell { - type T = sharable::Cell; - fn into_sharable(&self, ctx: Context) -> Self::T { - sharable::Cell::new(self.0.into_sharable(ctx), ctx) - } -} - -pub use sharable::Cell; - -#[rewrite] -impl Cell { - pub fn new(v: T, ctx: Context) -> Cell { - Cell(ctx.mutator().allocate(v, AllocationSpace::New).into()) - } - pub fn get(self, ctx: Context) -> T { - self.0.inner() - } - pub fn set(mut self, v: T, ctx: Context) { - self.0 = ctx.mutator().allocate(v, AllocationSpace::New).into(); - } -} diff --git a/arc-runtime/src/data/channels/datagen.rs b/arc-runtime/src/data/channels/datagen.rs deleted file mode 100644 index 2d2e1e2b4..000000000 --- a/arc-runtime/src/data/channels/datagen.rs +++ /dev/null @@ -1,47 +0,0 @@ -#![allow(deprecated)] -#![allow(dead_code)] - -use crate::data::Data; -use crate::prelude::DateTime; - -use rand::distributions::Distribution; -use rand::distributions::Standard; -use rand::Rng; - -use std::marker::PhantomData; - -pub struct DataGen { - offset: i64, - count: usize, - rng: rand::prelude::ThreadRng, - marker: PhantomData, -} - -impl DataGen { - fn new(count: usize) -> Self { - Self { - offset: 0, - count, - rng: rand::prelude::thread_rng(), - marker: PhantomData, - } - } -} - -impl Iterator for DataGen -where - Standard: Distribution, -{ - type Item = (DateTime, T); - - fn next(&mut self) -> Option { - self.offset += 1; - self.count -= 1; - if self.count > 0 { - todo!() - // Some((DateTime::from_unix_timestamp(self.offset), self.rng.gen())) - } else { - None - } - } -} diff --git a/arc-runtime/src/data/channels/local/multicast.rs b/arc-runtime/src/data/channels/local/multicast.rs deleted file mode 100644 index 0e407a024..000000000 --- a/arc-runtime/src/data/channels/local/multicast.rs +++ /dev/null @@ -1,60 +0,0 @@ -use kompact::prelude::*; -use std::marker::PhantomData; -use tokio::sync::broadcast::Receiver; -use tokio::sync::broadcast::Sender; - -use crate::control::Control; -use crate::data::Sharable; - -use crate::prelude::*; - -#[derive(Collectable, Finalize, NoTrace, NoSerde, NoDebug)] -pub struct Pushable(Sender); - -impl Clone for Pushable { - fn clone(&self) -> Self { - Pushable(self.0.clone()) - } -} - -#[derive(Collectable, Finalize, NoTrace, NoSerde, NoDebug)] -pub struct Pullable(Sender, Receiver); - -impl Clone for Pullable { - fn clone(&self) -> Self { - Pullable(self.0.clone(), self.0.subscribe()) - } -} - -crate::data::convert_reflexive!({T: Sharable} Pushable); -crate::data::convert_reflexive!({T: Sharable} Pullable); - -crate::data::channels::impl_channel!(); - -/// TODO: Processing will currently only stop if all pullers are dropped. -pub fn channel(_: Context) -> (Pushable, Pullable) -where - T::T: Sendable, -{ - let (l, r) = tokio::sync::broadcast::channel(100); - (Pushable(l.clone()), Pullable(l, r)) -} - -impl Pushable { - pub async fn push(&self, data: T, ctx: Context) -> Control<()> { - self.0 - .send(data.into_sendable(ctx)) - .map(|_| Control::Continue(())) - .unwrap_or(Control::Finished) - } -} - -impl Pullable { - pub async fn pull(&mut self, ctx: Context) -> Control<::T> { - self.1 - .recv() - .await - .map(|v| Control::Continue(v.into_sharable(ctx))) - .unwrap_or(Control::Finished) - } -} diff --git a/arc-runtime/src/data/channels/local/parallel.rs b/arc-runtime/src/data/channels/local/parallel.rs deleted file mode 100644 index 84d4e6a30..000000000 --- a/arc-runtime/src/data/channels/local/parallel.rs +++ /dev/null @@ -1,68 +0,0 @@ -use derive_more::Constructor as New; -use kompact::prelude::*; -use tokio::sync::broadcast::Receiver; -use tokio::sync::broadcast::Sender; - -use std::collections::hash_map::DefaultHasher; -use std::hash::Hash; -use std::hash::Hasher; -use std::marker::PhantomData; - -use crate::prelude::Collectable; -use crate::prelude::Context; -use crate::prelude::Control; -use crate::prelude::Deserialize; -use crate::prelude::Deserializer; -use crate::prelude::DynSendable; -use crate::prelude::DynSharable; -use crate::prelude::Finalize; -use crate::prelude::NoDebug; -use crate::prelude::NoSerde; -use crate::prelude::NoTrace; -use crate::prelude::Sendable; -use crate::prelude::Serialize; -use crate::prelude::Serializer; -use crate::prelude::Sharable; -use crate::prelude::Trace; -use crate::prelude::Visitor; - -use crate::data::channels::local::multicast as mc; - -#[derive(Clone, New, Collectable, Finalize, NoTrace, NoSerde, NoDebug)] -pub struct Pushable { - lanes: Vec>, - parallelism: u64, - extractor: fn(T) -> K, -} - -#[derive(Clone, New, Collectable, Finalize, NoTrace, NoSerde, NoDebug)] -pub struct Pullable { - lanes: Vec>, -} - -crate::data::convert_reflexive!({T: Sharable, K: Sharable + Hash} Pushable); -crate::data::convert_reflexive!({T: Sharable} Pullable); - -pub fn channel( - parallelism: u64, - extractor: fn(T) -> K, - ctx: Context, -) -> (Pushable, Pullable) { - let (l, r) = (0..parallelism).map(|_| mc::channel(ctx)).unzip(); - (Pushable::new(l, parallelism, extractor), Pullable::new(r)) -} - -impl Pushable { - pub async fn push(&self, data: T, ctx: Context) -> Control<()> { - let mut key = DefaultHasher::new(); - (self.extractor)(data.clone()).hash(&mut key); - let lane = key.finish() % self.parallelism; - self.lanes[lane as usize].push(data, ctx).await - } -} - -impl Pullable { - pub async fn pull(&mut self, lane: usize, ctx: Context) -> Control<::T> { - self.lanes[lane].pull(ctx).await - } -} diff --git a/arc-runtime/src/data/channels/local/window.rs b/arc-runtime/src/data/channels/local/window.rs deleted file mode 100644 index 03410518f..000000000 --- a/arc-runtime/src/data/channels/local/window.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub struct Pushable(T); -pub struct Pullable(T); diff --git a/arc-runtime/src/data/channels/mod.rs b/arc-runtime/src/data/channels/mod.rs deleted file mode 100644 index 758ba897d..000000000 --- a/arc-runtime/src/data/channels/mod.rs +++ /dev/null @@ -1,44 +0,0 @@ -use crate::context::Context; -use kompact::prelude::KompactSystem; - -// pub mod remote { -// pub mod multicast; -// pub mod parallel; -// pub mod window; -// } -pub mod local { - pub mod multicast; - pub mod parallel; - // pub mod window; -} - -/// A trait for a channel which is implemented for both endpoints (`Pushable` and `Pullable`). -pub trait Channel { - type Pushable; - type Pullable; - fn channel(ctx: Context) -> (Self::Pushable, Self::Pullable); -} - -macro_rules! impl_channel { - () => { - impl crate::data::channels::Channel for Pushable { - type Pushable = Self; - type Pullable = Pullable; - - fn channel(ctx: Context) -> (Self::Pushable, Self::Pullable) { - channel(ctx) - } - } - - impl crate::data::channels::Channel for Pullable { - type Pushable = Pushable; - type Pullable = Self; - - fn channel(ctx: Context) -> (Self::Pushable, Self::Pullable) { - channel(ctx) - } - } - }; -} - -pub(crate) use impl_channel; diff --git a/arc-runtime/src/data/channels/remote/broadcast.rs b/arc-runtime/src/data/channels/remote/broadcast.rs deleted file mode 100644 index dbb8fcba8..000000000 --- a/arc-runtime/src/data/channels/remote/broadcast.rs +++ /dev/null @@ -1,161 +0,0 @@ -//! A Broadcast channel. -//! Every data item in the channel can be pulled at most once by each consumer. -//! The channel maintains an offset for each consumer, and a minimum offset. -//! This requires that the number of consumers is known in advance. -//! Can be used to implement a "data-parallel" operator. - -use kompact::prelude::*; - -use crate::control::Control; -use crate::data::*; -use crate::prelude::*; - -use std::collections::HashMap; -use std::collections::VecDeque; - -#[derive(ComponentDefinition)] -pub(crate) struct Channel { - ctx: ComponentContext, - push_queue: VecDeque>, - data_queue: VecDeque, - pull_queue: VecDeque>, - min_offset: usize, - offsets: HashMap, - opened: bool, - pushers: usize, - pullers: usize, -} - -impl Channel { - fn new() -> Self { - Self { - ctx: ComponentContext::uninitialised(), - push_queue: VecDeque::with_capacity(100), - data_queue: VecDeque::with_capacity(10), - pull_queue: VecDeque::with_capacity(100), - min_offset: 0, - offsets: vec![(0, 0); 1].into_iter().collect(), - opened: false, - pullers: 1, - pushers: 1, - } - } -} - -pub fn channel(ctx: &mut Context) -> (Pushable, Pullable) { - let chan = ctx.component.system().create(Channel::new); - ctx.component.system().start(&chan); - (Pushable(chan.actor_ref()), Pullable(chan.actor_ref(), 1)) -} - -impl ComponentLifecycle for Channel {} - -#[derive(Debug)] -pub(crate) enum Message { - PushRequest(Ask), - PullRequest(Ask), - Open, - AddPusher, - AddPuller(Ask<(), usize>), - DelPusher, - DelPuller(usize), -} - -impl Actor for Channel { - type Message = Message; - - fn receive_local(&mut self, msg: Self::Message) -> Handled { - match msg { - Message::PushRequest(ask) => self.push_queue.push_back(ask), - Message::PullRequest(ask) => self.pull_queue.push_back(ask), - Message::Open => self.opened = true, - Message::AddPusher => self.pushers += 1, - Message::AddPuller(ask) => { - ask.reply(self.pullers); - self.pullers += 1; - } - Message::DelPusher => self.pushers -= 1, - Message::DelPuller(id) => { - self.pullers -= 1; - self.offsets.remove(&id); - } - } - if self.opened { - while !self.push_queue.is_empty() - && self.data_queue.len() < self.data_queue.capacity() - { - let (promise, data) = self.push_queue.pop_front().unwrap().take(); - promise.fulfil(()).unwrap(); - self.data_queue.push_back(data); - } - while !self.pull_queue.is_empty() && !self.data_queue.is_empty() { - let (promise, id) = self.pull_queue.pop_front().unwrap().take(); - let offset = self.offsets[&id] - self.min_offset; - let data = self.data_queue.pop_front().unwrap(); - promise.fulfil(data).unwrap(); - } - } - if self.pushers == 0 || self.offsets.len() == 0 { - Handled::DieNow - } else { - Handled::Ok - } - } - - fn receive_network(&mut self, msg: NetMessage) -> Handled { - todo!() - } -} - -pub struct Pushable(pub(crate) ActorRef>); - -pub struct Pullable(pub(crate) ActorRef>, pub(crate) usize); - -impl Clone for Pushable { - fn clone(&self) -> Self { - self.0.tell(Message::AddPusher); - Pushable(self.0.clone()) - } -} - -impl Clone for Pullable { - fn clone(&self) -> Self { - let id = self - .0 - .ask_with(|promise| Message::AddPuller(Ask::new(promise, ()))) - .wait(); - Pullable(self.0.clone(), id) - } -} - -impl Drop for Pushable { - fn drop(&mut self) { - self.0.tell(Message::DelPusher); - } -} - -impl Drop for Pullable { - fn drop(&mut self) { - self.0.tell(Message::DelPuller(self.1)); - } -} - -impl Pushable { - pub async fn push(&self, data: T) -> Control<()> { - self.0 - .ask_with(|promise| Message::PushRequest(Ask::new(promise, data))) - .await - .map(Control::Continue) - .unwrap_or(Control::Finished) - } -} - -impl Pullable { - pub async fn pull(&self) -> Control { - self.0 - .ask_with(|promise| Message::PullRequest(Ask::new(promise, self.1))) - .await - .map(Control::Continue) - .unwrap_or(Control::Finished) - } -} diff --git a/arc-runtime/src/data/channels/remote/data_parallel.rs b/arc-runtime/src/data/channels/remote/data_parallel.rs deleted file mode 100644 index e69de29bb..000000000 diff --git a/arc-runtime/src/data/channels/remote/task_parallel.rs b/arc-runtime/src/data/channels/remote/task_parallel.rs deleted file mode 100644 index 3050ccacd..000000000 --- a/arc-runtime/src/data/channels/remote/task_parallel.rs +++ /dev/null @@ -1,139 +0,0 @@ -use kompact::component::AbstractComponent; -use kompact::prelude::*; -use time::*; - -use crate::control::Control; -use crate::data::*; -use crate::prelude::*; - -use std::collections::HashMap; -use std::collections::VecDeque; -use std::ops::ControlFlow; -use std::ops::FromResidual; -use std::ops::Try; -use std::sync::Arc; -use std::time::Duration; - -#[derive(ComponentDefinition)] -pub(crate) struct Channel { - ctx: ComponentContext, - push_queue: VecDeque>, - data_queue: VecDeque, - pull_queue: VecDeque>, - pushers: usize, - pullers: usize, -} - -impl Channel { - pub fn new() -> Self { - Channel { - ctx: ComponentContext::uninitialised(), - push_queue: VecDeque::with_capacity(100), - data_queue: VecDeque::with_capacity(10), - pull_queue: VecDeque::with_capacity(100), - pullers: 1, - pushers: 1, - } - } -} - -pub fn channel(ctx: &mut Context) -> (Pushable, Pullable) { - let chan = ctx.component.system().create(Channel::new); - ctx.component.system().start(&chan); - (Pushable(chan.actor_ref()), Pullable(chan.actor_ref())) -} - -impl ComponentLifecycle for Channel {} - -#[derive(Debug)] -pub(crate) enum Message { - PushRequest(Ask), - PullRequest(Ask<(), T>), - AddPusher, - AddPuller, - DelPusher, - DelPuller, -} - -impl Actor for Channel { - type Message = Message; - - fn receive_local(&mut self, msg: Self::Message) -> Handled { - match msg { - Message::PushRequest(ask) => self.push_queue.push_back(ask), - Message::PullRequest(ask) => self.pull_queue.push_back(ask), - Message::AddPusher => self.pushers += 1, - Message::AddPuller => self.pullers += 1, - Message::DelPusher => self.pushers -= 1, - Message::DelPuller => self.pullers -= 1, - } - while !self.push_queue.is_empty() && self.data_queue.len() < self.data_queue.capacity() { - let (promise, data) = self.push_queue.pop_front().unwrap().take(); - promise.fulfil(()).unwrap(); - self.data_queue.push_back(data); - } - while !self.pull_queue.is_empty() && !self.data_queue.is_empty() { - let (promise, id) = self.pull_queue.pop_front().unwrap().take(); - let data = self.data_queue.pop_front().unwrap(); - promise.fulfil(data).unwrap(); - } - if self.pushers == 0 && self.data_queue.is_empty() || self.pullers == 0 { - Handled::DieNow - } else { - Handled::Ok - } - } - - fn receive_network(&mut self, msg: NetMessage) -> Handled { - todo!() - } -} - -pub struct Pushable(pub(crate) ActorRef>); - -pub struct Pullable(pub(crate) ActorRef>); - -impl Clone for Pushable { - fn clone(&self) -> Self { - self.0.tell(Message::AddPusher); - Pushable(self.0.clone()) - } -} - -impl Clone for Pullable { - fn clone(&self) -> Self { - Pullable(self.0.clone()) - } -} - -impl Drop for Pushable { - fn drop(&mut self) { - self.0.tell(Message::DelPusher); - } -} - -impl Drop for Pullable { - fn drop(&mut self) { - self.0.tell(Message::DelPuller); - } -} - -impl Pushable { - pub async fn push(&self, data: T) -> Control<()> { - self.0 - .ask_with(|promise| Message::PushRequest(Ask::new(promise, data))) - .await - .map(Control::Continue) - .unwrap_or(Control::Finished) - } -} - -impl Pullable { - pub async fn pull(&self) -> Control { - self.0 - .ask_with(|promise| Message::PullRequest(Ask::new(promise, ()))) - .await - .map(Control::Continue) - .unwrap_or(Control::Finished) - } -} diff --git a/arc-runtime/src/data/channels/remote/window.rs b/arc-runtime/src/data/channels/remote/window.rs deleted file mode 100644 index e69de29bb..000000000 diff --git a/arc-runtime/src/data/dataframe.rs b/arc-runtime/src/data/dataframe.rs deleted file mode 100644 index c1c52060a..000000000 --- a/arc-runtime/src/data/dataframe.rs +++ /dev/null @@ -1,48 +0,0 @@ -use crate::prelude::*; - -pub mod sharable { - use crate::prelude::*; - - #[derive( - Clone, From, Deref, DerefMut, Debug, Collectable, Finalize, Send, Sync, Unpin, NoTrace, - )] - #[from(forward)] - pub struct DataFrame(pub Gc); - - #[derive(Debug, Collectable, NoTrace, Finalize, Send, Sync, Unpin)] - pub struct ConcreteDataFrame(pub polars::frame::DataFrame); - - impl Alloc for ConcreteDataFrame { - fn alloc(self, ctx: Context) -> DataFrame { - DataFrame(ctx.mutator().allocate(self, AllocationSpace::New).into()) - } - } -} - -mod sendable { - use crate::prelude::*; - - #[derive(Clone, From, Send, Serialize, Deserialize)] - #[from(forward)] - pub struct String(pub ConcreteString); - - pub type ConcreteString = Box; -} - -impl DynSharable for sharable::DataFrame { - type T = (); - fn into_sendable(&self, ctx: Context) -> Self::T { - panic!("DataFrame is not sendable") - } -} - -pub use sharable::DataFrame; - -impl DataFrame { - pub fn new(ctx: Context) -> Self { - sharable::ConcreteDataFrame( - polars::frame::DataFrame::new::(vec![]).unwrap(), - ) - .alloc(ctx) - } -} diff --git a/arc-runtime/src/data/functions.rs b/arc-runtime/src/data/functions.rs deleted file mode 100644 index d9088c126..000000000 --- a/arc-runtime/src/data/functions.rs +++ /dev/null @@ -1,100 +0,0 @@ -use crate::context::Context; -use crate::data::DynSharable; -use comet::api::Collectable; -use comet::api::Finalize; -use comet::api::Trace; -use std::fmt::Debug; -use std::ptr::NonNull; - -#[macro_export] -macro_rules! declare_functions { - ($($id:ident),* $(,)?) => { - #[derive(Send, Sync, Unpin, Collectable, Finalize, NoTrace)] - pub struct Function { - pub ptr: fn(I, Context) -> O, - pub tag: FunctionTag, - } - #[derive(Debug, Copy, Send, Sync, Unpin, Serialize, Deserialize)] - pub struct FunctionTag(pub Tag, pub std::marker::PhantomData<(I, O)>); - #[derive(Debug, Clone, Copy, Send, Serialize, Deserialize)] - #[allow(non_camel_case_types)] - pub enum Tag { - $($id,)* - } - impl Clone for Function { - fn clone(&self) -> Self { - Self { ptr: self.ptr.clone(), tag: self.tag.clone() } - } - } - impl std::fmt::Debug for Function { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - Ok(()) - } - } - impl Clone for FunctionTag { - fn clone(&self) -> Self { - Self(self.0, std::marker::PhantomData) - } - } - impl DynSharable for Function { - type T = FunctionTag; - fn into_sendable(&self, ctx: Context) -> Self::T { - self.tag.clone() - } - } - impl DynSendable for FunctionTag { - type T = Function; - fn into_sharable(&self, ctx: Context) -> Self::T { - unsafe { - match self.0 { - $(Tag::$id => Function { - ptr: std::mem::transmute($id as usize), - tag: self.clone() - }),* - } - } - } - } - impl Serialize for Function { - fn serialize(&self, serializer: S) -> Result { - self.tag.0.serialize(serializer) - } - } - impl<'i, I, O> Deserialize<'i> for Function { - fn deserialize>(deserializer: D) -> Result { - unsafe { - match Tag::deserialize(deserializer)? { - $(Tag::$id => Ok(Function { - ptr: std::mem::transmute($id as usize), - tag: FunctionTag(Tag::$id, std::marker::PhantomData) - }),)* - } - } - } - } - }; -} - -#[macro_export] -macro_rules! declare { - (functions:[$($id:ident),* $(,)?], tasks:[]) => { - declare_functions! { - $($id),* - } - }; -} - -#[macro_export] -macro_rules! function { - // Create a function value - ($fun:ident) => { - Function { - ptr: $fun, - tag: FunctionTag(Tag::$fun, std::marker::PhantomData), - } - }; - // Create a function type - (($($input:ty),* $(,)?) -> $output:ty) => { - Function<($($input,)*), $output> - }; -} diff --git a/arc-runtime/src/data/garbage.rs b/arc-runtime/src/data/garbage.rs deleted file mode 100644 index 47ab59772..000000000 --- a/arc-runtime/src/data/garbage.rs +++ /dev/null @@ -1,52 +0,0 @@ -use comet::api::Collectable; -use comet::api::Finalize; -use comet::api::Trace; -use comet::immix::Immix; - -use derive_more::AsRef; - -use crate::prelude::*; - -pub trait Garbage: Collectable + Trace + Finalize {} -impl Garbage for T where T: Collectable + Trace + Finalize {} - -#[derive(AsRef, Deref, DerefMut, From, Debug)] -#[deref(forward)] -#[deref_mut(forward)] -#[as_ref(forward)] -pub struct Gc(comet::api::Gc); - -impl PartialEq for Gc { - fn eq(&self, other: &Self) -> bool { - self.0 == other.0 - } -} - -impl Clone for Gc { - fn clone(&self) -> Self { - self.0.into() - } -} - -impl Gc { - pub fn inner(self) -> T { - (*self.0).clone() - } -} - -pub trait Alloc { - fn alloc(self, ctx: Context) -> T; -} - -macro_rules! alloc_identity { - { $ty:ty } => { - impl Alloc<$ty> for $ty { - #[inline(always)] - fn alloc(self, ctx: Context) -> $ty { - self - } - } - } -} - -pub(crate) use alloc_identity; diff --git a/arc-runtime/src/data/mod.rs b/arc-runtime/src/data/mod.rs deleted file mode 100644 index de48624d9..000000000 --- a/arc-runtime/src/data/mod.rs +++ /dev/null @@ -1,68 +0,0 @@ -pub mod functions; -pub mod garbage; -pub mod primitives; -pub mod strings; -pub mod vectors; -#[cfg(feature = "dataframes")] -pub mod dataframe; -pub mod series; -pub mod channels; -pub mod cells; - -use crate::data::garbage::Garbage; - -use comet::gc_base::GcBase; -use dyn_clone::DynClone; - -use std::fmt::Debug; -use std::hash::Hash; - -use crate::prelude::*; - -pub trait Concrete { - type Abstract; -} - -pub trait Abstract { - type Concrete; -} - -pub trait DynSendable: AsyncSafe + DynClone { - type T: Sharable; - fn into_sharable(&self, ctx: Context) -> Self::T; -} - -pub trait DynSharable: AsyncSafe + DynClone + Garbage + Debug { - type T: Sendable; - fn into_sendable(&self, ctx: Context) -> Self::T; -} - -pub trait AsyncSafe: Send + Sync + Unpin {} -impl AsyncSafe for T where T: Send + Sync + Unpin {} - -pub trait Sendable: Sized + DynSendable + Clone + Serialize + DeserializeOwned {} -pub trait Sharable: Sized + DynSharable + Clone {} -pub trait DataItem: Sized + Copy + Debug + AsyncSafe {} - -impl Sharable for T where T: Sized + DynSharable + Clone {} -impl Sendable for T where T: Sized + DynSendable + Clone + Serialize + DeserializeOwned {} -impl DataItem for T where T: Sized + Copy + Debug + AsyncSafe {} - -dyn_clone::clone_trait_object!( DynSharable); -dyn_clone::clone_trait_object!( DynSendable); - -#[macro_export] -macro_rules! convert_reflexive { - {$({$($impl_generics:tt)+})* $ty:ty $({$($where_clause:tt)+})*} => { - impl $(<$($impl_generics)+>)* DynSharable for $ty $($($where_clause)+)* { - type T = Self; - fn into_sendable(&self, _: Context) -> Self { self.clone() } - } - impl $(<$($impl_generics)+>)* DynSendable for $ty $($($where_clause)+)* { - type T = Self; - fn into_sharable(&self, _: Context) -> Self { self.clone() } - } - } -} - -pub use convert_reflexive; diff --git a/arc-runtime/src/data/primitives.rs b/arc-runtime/src/data/primitives.rs deleted file mode 100644 index 1e026823b..000000000 --- a/arc-runtime/src/data/primitives.rs +++ /dev/null @@ -1,78 +0,0 @@ -use crate::context::Context; -use crate::data::convert_reflexive; -use crate::data::garbage::alloc_identity; -use crate::data::strings::String; -use crate::data::Alloc; -use crate::data::DynSendable; -use crate::data::DynSharable; -use macros::rewrite; - -pub use bool; -pub use char; -pub use f32; -pub use f64; -pub use i128; -pub use i16; -pub use i32; -pub use i64; -pub use i8; -pub use u128; -pub use u16; -pub use u32; -pub use u64; -pub use u8; -#[allow(non_camel_case_types)] -pub type unit = (); -pub type Unit = (); -pub use std::ops::Range; - -convert_reflexive!(i8); -convert_reflexive!(i16); -convert_reflexive!(i32); -convert_reflexive!(i64); -convert_reflexive!(i128); -convert_reflexive!(u8); -convert_reflexive!(u16); -convert_reflexive!(u32); -convert_reflexive!(u64); -convert_reflexive!(u128); -convert_reflexive!(f32); -convert_reflexive!(f64); -convert_reflexive!(bool); -// convert_reflexive!(char); -convert_reflexive!(unit); - -alloc_identity!(i8); -alloc_identity!(i16); -alloc_identity!(i32); -alloc_identity!(i64); -alloc_identity!(i128); -alloc_identity!(u8); -alloc_identity!(u16); -alloc_identity!(u32); -alloc_identity!(u64); -alloc_identity!(f32); -alloc_identity!(f64); -alloc_identity!(bool); -alloc_identity!(char); -alloc_identity!(unit); - -#[allow(non_upper_case_globals)] -pub const unit: unit = (); -#[allow(non_upper_case_globals)] -pub const Unit: unit = (); - -#[rewrite] -pub fn assert(b: bool) { - assert!(b); -} - -#[rewrite] -pub fn panic(s: String) { - panic!("{}", s.as_str()) -} - -#[rewrite] -pub fn print(s: String) { - println!("{}", s.as_str()) -} diff --git a/arc-runtime/src/data/series.rs b/arc-runtime/src/data/series.rs deleted file mode 100644 index e69de29bb..000000000 diff --git a/arc-runtime/src/data/strings.rs b/arc-runtime/src/data/strings.rs deleted file mode 100644 index 1d2c8a77d..000000000 --- a/arc-runtime/src/data/strings.rs +++ /dev/null @@ -1,115 +0,0 @@ -use crate::prelude::*; - -pub mod sharable { - use crate::prelude::*; - - #[derive(Clone, From, Deref, DerefMut, Debug, Collectable, Finalize, Send, Sync, Unpin)] - #[from(forward)] - pub struct String(pub Gc); - - pub type ConcreteString = comet::alloc::string::String; - - impl Alloc for ConcreteString { - fn alloc(self, ctx: Context) -> String { - String(ctx.mutator().allocate(self, AllocationSpace::New).into()) - } - } - - unsafe impl Trace for String { - fn trace(&mut self, vis: &mut dyn Visitor) { - self.0.trace(vis) - } - } -} - -mod sendable { - use crate::prelude::*; - - #[derive(Clone, From, Send, Serialize, Deserialize)] - #[from(forward)] - pub struct String(pub ConcreteString); - - pub type ConcreteString = Box; -} - -impl DynSharable for sharable::String { - type T = sendable::String; - fn into_sendable(&self, ctx: Context) -> Self::T { - self.0.to_string().into() - } -} - -impl DynSendable for sendable::String { - type T = sharable::String; - fn into_sharable(&self, ctx: Context) -> Self::T { - String::from_str(self.0.as_ref(), ctx) - } -} - -pub use sharable::String; - -#[rewrite] -impl String { - pub fn new(ctx: Context) -> String { - sharable::ConcreteString::new(ctx.mutator()).alloc(ctx) - } - - pub fn with_capacity(capacity: usize, ctx: Context) -> String { - sharable::ConcreteString::with_capacity(ctx.mutator(), capacity).alloc(ctx) - } - - pub fn push_char(mut self, ch: char, ctx: Context) { - self.0.push(ctx.mutator(), ch) - } - - pub fn push_str(mut self, s: &str, ctx: Context) { - self.0.push_str(ctx.mutator(), s) - } - - pub fn from_str(s: &str, ctx: Context) -> String { - let mut new = sharable::ConcreteString::with_capacity(ctx.mutator(), s.len()); - new.push_str(ctx.mutator(), s); - new.alloc(ctx) - } - - pub fn remove(mut self, idx: u32, _ctx: Context) -> char { - self.0.remove(idx as usize) - } - - pub fn insert_char(mut self, idx: u32, ch: char, ctx: Context) { - self.0.insert(ctx.mutator(), idx as usize, ch) - } - - pub fn is_empty(mut self, _ctx: Context) -> bool { - self.0.is_empty() - } - - pub fn split_off(mut self, at: u32, ctx: Context) -> String { - self.0.split_off(ctx.mutator(), at as usize).alloc(ctx) - } - - pub fn clear(mut self, _ctx: Context) { - self.0.clear() - } - - pub fn len(self, _ctx: Context) -> u32 { - self.0.len() as u32 - } - - pub fn from_i32(i: i32, ctx: Context) -> String { - let mut new = String::new(ctx); - new.0.push_str(ctx.mutator(), &i.to_string()); - new - } - - pub fn eq(self, other: String, ctx: Context) -> bool { - self.0.eq(&other.0) - } - - pub fn concat(self, other: String, ctx: Context) -> String { - let mut new = String::new(ctx); - new.0.push_str(ctx.mutator(), &self.0); - new.0.push_str(ctx.mutator(), &other.0); - new - } -} diff --git a/arc-runtime/src/data/vectors.rs b/arc-runtime/src/data/vectors.rs deleted file mode 100644 index b112c1a94..000000000 --- a/arc-runtime/src/data/vectors.rs +++ /dev/null @@ -1,145 +0,0 @@ -use crate::prelude::*; - -pub mod sharable { - use crate::prelude::*; - - #[derive( - Clone, From, Deref, DerefMut, Finalize, Collectable, Debug, Send, Sync, Unpin, Trace, - )] - #[from(forward)] - pub struct Vec(pub Gc>); - - pub type ConcreteVec = comet::alloc::vector::Vector; - - impl Alloc> for ConcreteVec { - fn alloc(self, ctx: Context) -> Vec { - Vec(ctx.mutator().allocate(self, AllocationSpace::New).into()) - } - } -} - -mod sendable { - use crate::prelude::*; - - #[derive(Clone, From, Send, Serialize, Deserialize)] - #[serde(bound = "")] - #[from(forward)] - pub struct Vec(pub ConcreteVec); - - pub type ConcreteVec = std::vec::Vec; -} - -impl DynSharable for sharable::Vec { - type T = sendable::Vec; - fn into_sendable(&self, ctx: Context) -> Self::T { - self.0 - .iter() - .map(|v| v.clone().into_sendable(ctx)) - .collect::>() - .into_boxed_slice() - .into() - } -} - -impl DynSendable for sendable::Vec { - type T = sharable::Vec; - fn into_sharable(&self, ctx: Context) -> Self::T { - let mut s = Vec::::with_capacity(self.0.len(), ctx); - for v in self.0.iter() { - let v = v.into_sharable(ctx); - s.0.push(ctx.mutator(), v); - } - s - } -} - -pub use sharable::Vec; - -impl Vec { - pub fn as_slice(&self, ctx: Context) -> &[T] { - self.0.as_slice() - } - pub fn retain(mut self, f: F, ctx: Context) - where - F: FnMut(&T) -> bool, - { - self.0.retain(f); - } - pub fn as_slice_mut(&mut self, ctx: Context) -> &mut [T] { - self.0.as_slice_mut() - } - - pub fn dedup(mut self, ctx: Context) - where - T: PartialEq, - { - self.0.dedup(); - } - - pub fn write_barrier(mut self, ctx: Context) { - self.0.write_barrier(ctx.mutator()) - } - - pub fn shrink_to(mut self, min_capacity: usize, ctx: Context) { - self.0.shrink_to(ctx.mutator(), min_capacity); - } - - pub fn resize(mut self, new_len: usize, value: T, ctx: Context) { - self.0.resize(ctx.mutator(), new_len, value); - } -} - -#[rewrite] -impl Vec { - pub fn new(ctx: Context) -> Vec { - sharable::ConcreteVec::::new(ctx.mutator()).alloc(ctx) - } - - pub fn with_capacity(capacity: usize, ctx: Context) -> Vec { - sharable::ConcreteVec::::with_capacity(ctx.mutator(), capacity).alloc(ctx) - } - - pub fn capacity(self, ctx: Context) -> usize { - self.0.capacity() - } - - pub fn len(self, ctx: Context) -> usize { - self.0.len() - } - - pub fn clear(mut self, ctx: Context) { - self.0.clear(); - } - - pub fn push(mut self, value: T, ctx: Context) { - self.0.push(ctx.mutator(), value); - } - - pub fn pop(mut self, ctx: Context) -> Option { - self.0.pop() - } - - pub fn remove(mut self, index: usize, ctx: Context) -> T { - self.0.remove(index) - } - - pub fn get(self, index: usize, ctx: Context) -> T { - self.0.at(index).clone() - } - - pub fn insert(mut self, index: usize, value: T, ctx: Context) { - self.0.insert(ctx.mutator(), index, value); - } - - pub fn is_empty(self, ctx: Context) -> bool { - self.0.is_empty() - } -} - -#[allow(non_snake_case)] -pub fn Vec_dedup(self_param: Vec, ctx: Context) -where - T: PartialEq, -{ - Vec::dedup(self_param, ctx) -} diff --git a/arc-runtime/src/lib.rs b/arc-runtime/src/lib.rs deleted file mode 100644 index 0dc050a5a..000000000 --- a/arc-runtime/src/lib.rs +++ /dev/null @@ -1,219 +0,0 @@ -// #![feature(fn_traits)] -// #![feature(unboxed_closures)] -// #![feature(arbitrary_self_types)] -// #![feature(async_closure)] -// #![feature(async_stream)] -// #![feature(stream_from_iter)] -#![feature(try_trait_v2)] -#![feature(type_alias_impl_trait)] -#![feature(once_cell)] -#![feature(never_type)] -#![allow(unused)] -#![allow(clippy::type_complexity)] -#![allow(clippy::needless_doctest_main)] -#![allow(clippy::wrong_self_convention)] -#![allow(clippy::len_without_is_empty)] - -pub mod context; -pub mod control; -pub mod data; -pub mod macros; -pub mod operators; -pub mod runtime; -pub mod task; - -pub mod prelude { - // Data types - pub use crate::context::Context; - pub use crate::control::Control; - pub use crate::control::Control::Continue; - pub use crate::control::Control::Finished; - pub use crate::data::channels; - pub use crate::data::channels::Channel; - pub use crate::data::garbage::Alloc; - pub use crate::data::garbage::Gc; - pub use crate::data::primitives::bool; - pub use crate::data::primitives::char; - pub use crate::data::primitives::f32; - pub use crate::data::primitives::f64; - pub use crate::data::primitives::i128; - pub use crate::data::primitives::i16; - pub use crate::data::primitives::i32; - pub use crate::data::primitives::i64; - pub use crate::data::primitives::i8; - pub use crate::data::primitives::u128; - pub use crate::data::primitives::u16; - pub use crate::data::primitives::u32; - pub use crate::data::primitives::u64; - pub use crate::data::primitives::u8; - pub use crate::data::primitives::unit; - pub use crate::data::primitives::Unit; - pub use crate::data::Abstract; - pub use crate::data::Concrete; - pub use crate::data::DynSendable; - pub use crate::data::DynSharable; - pub use crate::data::Sendable; - pub use crate::data::Sharable; - pub use crate::runtime::Runtime; - pub use crate::task::message::TaskMessage; - - pub use crate::data::primitives::assert; - pub use crate::data::primitives::panic; - pub use crate::data::primitives::print; - - pub use crate::data::strings::String; - pub use crate::data::strings::String_clear; - pub use crate::data::strings::String_from_str; - pub use crate::data::strings::String_insert_char; - pub use crate::data::strings::String_is_empty; - pub use crate::data::strings::String_len; - pub use crate::data::strings::String_new; - pub use crate::data::strings::String_push_char; - pub use crate::data::strings::String_push_str; - pub use crate::data::strings::String_remove; - pub use crate::data::strings::String_split_off; - pub use crate::data::strings::String_with_capacity; - pub use crate::data::strings::String_from_i32; - pub use crate::data::strings::String_eq; - pub use crate::data::strings::String_concat; - - pub use crate::data::vectors::Vec; - pub use crate::data::vectors::Vec_capacity; - pub use crate::data::vectors::Vec_clear; - pub use crate::data::vectors::Vec_dedup; - pub use crate::data::vectors::Vec_get; - pub use crate::data::vectors::Vec_insert; - pub use crate::data::vectors::Vec_is_empty; - pub use crate::data::vectors::Vec_len; - pub use crate::data::vectors::Vec_new; - pub use crate::data::vectors::Vec_pop; - pub use crate::data::vectors::Vec_push; - pub use crate::data::vectors::Vec_remove; - pub use crate::data::vectors::Vec_with_capacity; - - pub use crate::data::cells::Cell; - pub use crate::data::cells::Cell_get; - pub use crate::data::cells::Cell_new; - pub use crate::data::cells::Cell_set; - - // Declarative macros - pub use crate::access; - pub use crate::convert_reflexive; - pub use crate::declare_functions; - pub use crate::declare; - pub use crate::function; - pub use crate::letroot; - pub use crate::val; - - // Hidden macros - pub use crate::_vector; - - // Procedural macros - pub use macros::call; - pub use macros::call_async; - pub use macros::call_indirect; - pub use macros::enwrap; - pub use macros::erase; - pub use macros::is; - pub use macros::new; - pub use macros::pull; - pub use macros::pull_transition; - pub use macros::push; - pub use macros::push_transition; - pub use macros::rewrite; - pub use macros::terminate; - pub use macros::transition; - pub use macros::unerase; - pub use macros::unwrap; - pub use macros::vector; - pub use macros::wait; - pub use macros::Abstract; - pub use macros::Alloc; - pub use macros::Collectable; - pub use macros::Finalize; - pub use macros::NoDebug; - pub use macros::NoSerde; - pub use macros::NoTrace; - pub use macros::Send; - pub use macros::Sync; - pub use macros::Trace; - pub use macros::Unpin; - - // Re-exports - pub use kompact::prelude::info; - pub use kompact::prelude::warn; - pub use kompact::prelude::Actor; - pub use kompact::prelude::ActorRaw; - pub use kompact::prelude::Component; - pub use kompact::prelude::ComponentContext; - pub use kompact::prelude::ComponentDefinition; - pub use kompact::prelude::ComponentDefinitionAccess; - pub use kompact::prelude::ComponentLifecycle; - pub use kompact::prelude::ComponentLogging; - pub use kompact::prelude::DeadletterBox; - pub use kompact::prelude::DynamicPortAccess; - pub use kompact::prelude::ExecuteResult; - pub use kompact::prelude::Handled; - pub use kompact::prelude::KompactConfig; - pub use kompact::prelude::KompactSystem; - pub use kompact::prelude::MsgEnvelope; - pub use kompact::prelude::NetMessage; - pub use kompact::prelude::NetworkConfig; - pub use kompact::prelude::Never; - pub use kompact::prelude::SystemHandle; - - pub use comet::api::Collectable; - pub use comet::api::Finalize; - pub use comet::api::Trace; - pub use comet::api::Visitor; - pub use comet::gc_base::AllocationSpace; - pub use comet::immix::instantiate_immix; - pub use comet::immix::Immix; - pub use comet::immix::ImmixOptions; - pub use comet::mopa::TraitObject; - pub use comet::mutator::MutatorRef; - pub use comet::shadow_stack::Rootable; - pub use comet::shadow_stack::Rooted; - pub use comet::shadow_stack::ShadowStack; - pub use comet::shadow_stack::ShadowStackInternal; - - pub use derive_more::Constructor as New; - pub use derive_more::Deref; - pub use derive_more::DerefMut; - pub use derive_more::From; - - pub use time::macros::date; - pub use time::macros::time; - pub use time::Duration; - pub use time::PrimitiveDateTime as DateTime; - - pub use futures::future::BoxFuture; - pub use futures::future::FutureExt; - pub use futures::executor::block_on; - - pub use replace_with::replace_with_or_abort_and_return; - - pub use hexf::hexf32; - pub use hexf::hexf64; - - pub use serde::de::DeserializeOwned; - pub use serde::Deserialize; - pub use serde::Deserializer; - pub use serde::Serialize; - pub use serde::Serializer; - pub use serde_derive::Deserialize; - pub use serde_derive::Serialize; - - pub use std::any::Any; - pub use std::any::TypeId; - pub use std::cell::UnsafeCell; - pub use std::fmt::Debug; - pub use std::future::Future; - pub use std::hash::Hash; - pub use std::pin::Pin; - pub use std::sync::Arc; - pub use std::task::Context as PollContext; - pub use std::task::Poll; - pub use std::task::Poll::Pending; - pub use std::task::Poll::Ready; -} diff --git a/arc-runtime/src/macros.rs b/arc-runtime/src/macros.rs deleted file mode 100644 index 49f962019..000000000 --- a/arc-runtime/src/macros.rs +++ /dev/null @@ -1,97 +0,0 @@ -/// Get the value of a variable. -/// -/// ``` -/// use arc_runtime::prelude::*; -/// let a = 5; -/// let b = val!(a); -/// ``` -#[macro_export] -macro_rules! val { - ($arg:expr) => { - $arg - }; -} - -macro_rules! inline { - ($($tt:tt)*) => { $($tt)* }; -} - -/// Access a struct's field. -/// -/// ``` -/// use arc_runtime::prelude::*; -/// #[rewrite] -/// pub struct Bar { -/// pub x: i32, -/// pub y: i32 -/// } -/// #[rewrite(main)] -/// fn main() { -/// let a = new!(Bar { x: 0, y: 1 }); -/// let b = access!(a, x); -/// } -/// ``` -#[macro_export] -macro_rules! access { - ($arg:expr, $field:tt) => { - $arg.clone().$field.clone() - }; -} - -#[macro_export] -macro_rules! letroot { - ($var_name:ident : $t:ty = $stack:expr, $value:expr) => { - let stack: &ShadowStack = &$stack; - let value = $value; - #[allow(unused_unsafe)] - let mut $var_name = unsafe { - ShadowStackInternal::<$t>::construct( - stack, - stack.head.get(), - core::mem::transmute::<_, TraitObject>(&value as &dyn Rootable).vtable as usize, - value, - ) - }; - #[allow(unused_unsafe)] - stack - .head - .set(unsafe { core::mem::transmute(&mut $var_name) }); - #[allow(unused_mut)] - let mut $var_name = unsafe { Rooted::construct(&mut $var_name.value) }; - }; - - ($var_name:ident = $stack:expr, $value:expr) => { - let stack: &ShadowStack = &$stack; - let value = $value; - #[allow(unused_unsafe)] - let mut $var_name = unsafe { - ShadowStackInternal::<_>::construct( - stack, - stack.head.get(), - core::mem::transmute::<_, TraitObject>(&value as &dyn Rootable).vtable as usize, - value, - ) - }; - #[allow(unused_unsafe)] - stack - .head - .set(unsafe { core::mem::transmute(&mut $var_name) }); - #[allow(unused_mut)] - #[allow(unused_unsafe)] - let mut $var_name = unsafe { Rooted::construct(&mut $var_name.value) }; - }; -} - -#[macro_export] -macro_rules! _vector { - ([$($x:expr),* $(,)?], $ctx:expr) => {{ - let stack = $ctx.mutator().shadow_stack(); - letroot!(vec = stack, Some(Vec::new($ctx))); - - $( - vec.as_mut().unwrap().0.push($ctx.mutator(), $x); - vec.as_mut().unwrap().0.write_barrier($ctx.mutator()); - )* - vec.take().unwrap() - }} -} diff --git a/arc-runtime/src/operators.rs b/arc-runtime/src/operators.rs deleted file mode 100644 index d1f56bf91..000000000 --- a/arc-runtime/src/operators.rs +++ /dev/null @@ -1,96 +0,0 @@ -//! Builtin streaming operators. Everything required to support the SQL-interface. -#![allow(clippy::type_complexity)] - -use crate::data::Sharable; -use crate::prelude::*; - -use crate::data::channels::local::multicast as clm; -// use crate::channels::local::data_parallel as cld; -// use crate::channels::local::data_parallel as clt; -// use crate::channels::local::window as clw; - -use crate::prelude::DateTime; - -use rand::distributions::Distribution; -use rand::distributions::Standard; -use rand::Rng; - -use std::marker::PhantomData; - -use kompact::prelude::*; - -use std::sync::Arc; - -impl clm::Pullable { - pub fn iterate(self, f: fn(Self) -> (Self, clm::Pullable)) -> clm::Pullable { - todo!() - } - -// pub fn key_by(self, f: fn(I) -> K) -> cld::Pullable { -// todo!() -// } - - pub fn map(self, f: fn(I) -> O) -> clm::Pullable { - todo!() - } - - pub fn filter(self, f: fn(I) -> bool) -> clm::Pullable { - todo!() - } - - pub fn flat_map(self, f: fn(I) -> clm::Pullable) -> clm::Pullable { - todo!() - } - - pub fn reduce(self, f: fn(O, I) -> O) -> clm::Pullable { - todo!() - } - -// pub fn join( -// self, -// other: clw::Pullable, -// f: fn(I, I) -> K, -// ) -> clm::Pullable { -// todo!() -// } -// -// pub fn tumbling_window(self, len: Duration) -> clw::Pullable { -// todo!() -// } -} - -pub struct DataGen { - offset: i64, - count: usize, - rng: rand::prelude::ThreadRng, - marker: PhantomData, -} - -impl DataGen { - fn new(count: usize) -> Self { - Self { - offset: 0, - count, - rng: rand::prelude::thread_rng(), - marker: PhantomData, - } - } -} - -impl Iterator for DataGen -where - Standard: Distribution, -{ - type Item = (DateTime, T); - - fn next(&mut self) -> Option { - self.offset += 1; - self.count -= 1; - if self.count > 0 { - todo!() - // Some((DateTime::from_unix_timestamp(self.offset), self.rng.gen())) - } else { - None - } - } -} diff --git a/arc-runtime/src/runtime.rs b/arc-runtime/src/runtime.rs deleted file mode 100644 index 983526c52..000000000 --- a/arc-runtime/src/runtime.rs +++ /dev/null @@ -1,21 +0,0 @@ -use comet::immix::Immix; -use comet::immix::ImmixOptions; -use comet::mutator::MutatorRef; -use kompact::prelude::*; - -pub struct Runtime { - pub system: KompactSystem, -} - -impl Runtime { - pub fn new() -> Self { - let system = KompactConfig::default().build().unwrap(); - Self { system } - } -} - -impl Default for Runtime { - fn default() -> Self { - Self::new() - } -} diff --git a/arc-runtime/src/task/message.rs b/arc-runtime/src/task/message.rs deleted file mode 100644 index ee57d63ab..000000000 --- a/arc-runtime/src/task/message.rs +++ /dev/null @@ -1,4 +0,0 @@ -#[derive(Debug)] -pub enum TaskMessage { - Kill, -} diff --git a/arc-runtime/src/task/mod.rs b/arc-runtime/src/task/mod.rs deleted file mode 100644 index e216a5018..000000000 --- a/arc-runtime/src/task/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod message; diff --git a/arc-runtime/tests/allocation.rs b/arc-runtime/tests/allocation.rs deleted file mode 100644 index 931c6eb66..000000000 --- a/arc-runtime/tests/allocation.rs +++ /dev/null @@ -1,49 +0,0 @@ -use comet::api::Collectable; -use comet::api::Finalize; -use comet::api::Gc; -use comet::api::Trace; -use comet::api::Visitor; -use comet::gc_base::AllocationSpace; -use comet::immix::instantiate_immix; -use comet::immix::Immix; -use comet::immix::ImmixOptions; - -pub enum List { - Nil, - Cons(T, Gc, Immix>), -} - -unsafe impl Trace for List { - fn trace(&mut self, vis: &mut dyn Visitor) { - if let Self::Cons(data, next) = self { - data.trace(vis); - next.trace(vis); - } - } -} - -unsafe impl Finalize for List {} - -impl Collectable for List {} - -#[test] -fn main() { - let opts = ImmixOptions::default(); - let mut mutator = instantiate_immix(opts); - - let mut l: Gc, Immix> = mutator.allocate(List::Nil, AllocationSpace::New); - - for i in 0..100 { - l = mutator.allocate(List::Cons(i, l), AllocationSpace::New); - } - - for i in 0..100 { - match *l { - List::Nil => break, - List::Cons(data, tail) => { - assert_eq!(data, 99 - i); - l = tail; - } - } - } -} diff --git a/arc-runtime/tests/basic.rs b/arc-runtime/tests/basic.rs deleted file mode 100644 index 500238f23..000000000 --- a/arc-runtime/tests/basic.rs +++ /dev/null @@ -1,75 +0,0 @@ -#![allow(unused_mut)] -#![allow(unreachable_code)] -#![allow(unused_variables)] -#![feature(arbitrary_self_types)] -use arc_runtime::data::channels::local::multicast::*; -use arc_runtime::prelude::*; - -#[derive(ComponentDefinition)] -struct DoThing { - ctx: ComponentContext, - a: Pullable, - b: Pullable, - c: Pushable, -} - -impl Actor for DoThing { - type Message = TaskMessage; - - fn receive_local(&mut self, msg: Self::Message) -> Handled { - Handled::Ok - } - - fn receive_network(&mut self, msg: kompact::prelude::NetMessage) -> Handled { - Handled::Ok - } -} - -impl DoThing { - fn new(a: Pullable, b: Pullable, c: Pushable) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - a, - b, - c, - } - } - - async fn run(mut self: ComponentDefinitionAccess, ctx: Context) -> Control<()> { - loop { - let x = self.a.pull(ctx).await?; - let y = self.b.pull(ctx).await?; - self.c.push(x + y, ctx).await?; - } - Control::Finished - } -} - -fn do_thing(a: Pullable, b: Pullable, ctx: Context) -> Pullable { - let (c0, c1): (Pushable, Pullable) = channel(ctx); - let task = ctx.component().system().create(move || DoThing::new(a, b, c0)); - ctx.component().system().start(&task); - c1 -} - -impl ComponentLifecycle for DoThing { - fn on_start(&mut self) -> Handled { - self.spawn_local(move |mut async_self| async move { - let ctx = todo!(); - async_self.run(ctx).await; - Handled::DieNow - }); - Handled::Ok - } -} - -fn read_stream() -> Pullable { - todo!() -} - -fn main() { - let ctx = todo!(); - let a: Pullable = read_stream(); - let b: Pullable = read_stream(); - let c = do_thing(a, b, ctx); -} diff --git a/arc-runtime/tests/closures.rs b/arc-runtime/tests/closures.rs deleted file mode 100644 index db1340cfc..000000000 --- a/arc-runtime/tests/closures.rs +++ /dev/null @@ -1,26 +0,0 @@ -#![allow(unused)] - -#[allow(non_camel_case_types)] -#[cfg(test)] -mod test_toplevel { - - use arc_runtime::prelude::*; - - declare_functions!(f); - - #[rewrite] - fn f(a: i32) -> i32 { - a + a - } - - #[rewrite(main)] - #[test] - fn test() { - let x: function!((i32) -> i32) = function!(f); - let y: function!((i32,) -> i32) = function!(f); - let y: i32 = call_indirect!(x(1)); - let y: i32 = call_indirect!(x(1,)); - let z: i32 = call!(f(1)); - let z: i32 = call!(f(1,)); - } -} diff --git a/arc-runtime/tests/context.rs b/arc-runtime/tests/context.rs deleted file mode 100644 index d871c47f5..000000000 --- a/arc-runtime/tests/context.rs +++ /dev/null @@ -1,76 +0,0 @@ -#![allow(unused_mut)] -#![allow(unreachable_code)] -#![allow(unused_variables)] -#![feature(arbitrary_self_types)] -use arc_runtime::data::channels::local::multicast::*; -use arc_runtime::prelude::*; - -#[derive(ComponentDefinition)] -struct DoThing { - ctx: ComponentContext, - a: Pullable, - b: Pullable, - c: Pushable, -} - -impl Actor for DoThing { - type Message = TaskMessage; - - fn receive_local(&mut self, msg: Self::Message) -> Handled { - Handled::Ok - } - - fn receive_network(&mut self, msg: kompact::prelude::NetMessage) -> Handled { - Handled::Ok - } -} - -impl DoThing { - fn new(a: Pullable, b: Pullable, c: Pushable) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - a, - b, - c, - } - } - - async fn run(mut self: ComponentDefinitionAccess, ctx: Context) -> Control<()> { - loop { - let x = self.a.pull(ctx).await?; - let y = self.b.pull(ctx).await?; - self.c.push(x + y, ctx).await?; - } - Control::Finished - } -} - -fn do_thing(a: Pullable, b: Pullable, ctx: Context) -> Pullable { - let (c0, c1): (Pushable, Pullable) = channel(ctx); - let task = ctx.component().system().create(move || DoThing::new(a, b, c0)); - ctx.component().system().start(&task); - c1 -} - -impl ComponentLifecycle for DoThing { - fn on_start(&mut self) -> Handled { - self.spawn_local(move |mut async_self| async move { - let ctx = todo!(); - async_self.run(ctx).await; - Handled::DieNow - }); - futures::task::waker_ref(&self.ctx.typed_component()); - Handled::Ok - } -} - -fn read_stream() -> Pullable { - todo!() -} - -fn main() { - let ctx = todo!(); - let a: Pullable = read_stream(); - let b: Pullable = read_stream(); - let c = do_thing(a, b, ctx); -} diff --git a/arc-runtime/tests/externs.rs b/arc-runtime/tests/externs.rs deleted file mode 100644 index b70ffc9ac..000000000 --- a/arc-runtime/tests/externs.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![allow(unused)] - -use arc_runtime::prelude::*; - -#[rewrite(unmangled = "identity")] -fn identity_i32(x: i32) -> i32 {} - -#[rewrite(unmangled = "identity")] -fn identity_i64(x: i64) -> i64 {} - -#[rewrite(unmangled = "identity")] -fn identity_i128(x: i128) -> i128 {} - -#[rewrite] -fn identity(x: T) -> T { - x -} diff --git a/arc-runtime/tests/functions.rs b/arc-runtime/tests/functions.rs deleted file mode 100644 index 13558cf2e..000000000 --- a/arc-runtime/tests/functions.rs +++ /dev/null @@ -1,57 +0,0 @@ -#![allow(dead_code)] - -use arc_runtime::prelude::*; - -#[rewrite] -fn foo(x: i32) { - let a: i32 = x - 1; - if x == 0 { - println!("Hello, world!"); - } else { - foo((a,)) - } -} - -// Expands into: - -// fn _foo(x: i32, ctx: Context) { -// let a: i32 = x - 1; -// if x == 0 { -// println!("Hello, world!"); -// } else { -// _foo(a, ctx) -// } -// } - -#[rewrite(main)] -fn main() { - let x: String = String::from_str("Hello, world!"); - let y: &str = "Hello, world!"; - let _z: unit = String::push_str(x, y); -} - -// Expands into: - -// fn _bar() { -// let system = &KompactConfig::default().build().unwrap(); -// let mutator = &mut instantiate_immix(ImmixOptions::default()); -// let ctx = Context::new(system, mutator); -// -// let stack: &ShadowStack = &ctx.mutator.shadow_stack(); -// let value = String::from_str("Hello, world!", ctx); -// #[allow(unused_unsafe)] -// let mut x = unsafe { -// ShadowStackInternal::::construct( -// stack, -// stack.head.get(), -// core::mem::transmute::<_, TraitObject>(&value as &dyn Rootable).vtable as usize, -// value, -// ) -// }; -// #[allow(unused_unsafe)] -// stack.head.set(unsafe { core::mem::transmute(&mut x) }); -// #[allow(unused_mut)] -// let mut x = unsafe { Rooted::construct(&mut x.value) }; -// let y: &str = "Hello, world!"; -// let _z: unit = String::push_str(x.clone(), y, ctx); -// } diff --git a/arc-runtime/tests/future.rs b/arc-runtime/tests/future.rs deleted file mode 100644 index c744f83cb..000000000 --- a/arc-runtime/tests/future.rs +++ /dev/null @@ -1,130 +0,0 @@ -// #![allow(unused)] -#![feature(never_type)] -#![allow(unused)] - -use arc_runtime::prelude::*; -use std::future::Future; -use std::pin::Pin; -use std::rc::Rc; -use std::task::Context as PollContext; -use std::task::Poll; - -use futures::future::BoxFuture; -use futures::FutureExt; - -use arc_runtime::data::channels::local::multicast::channel; -use arc_runtime::data::channels::local::multicast::Pullable; -use arc_runtime::data::channels::local::multicast::Pushable; - -enum State { - State0 { - a: Pullable, - b: Pushable, - }, - State1 { - a: Pullable, - b: Pushable, - pull: BoxFuture<'static, Control>, - }, - State3 { - a: Pullable, - b: Pushable, - push: BoxFuture<'static, Control<()>>, - }, -} - -impl Future for State { - type Output = (); - - fn poll(self: Pin<&mut Self>, cx: &mut PollContext<'_>) -> Poll { - let ctx = todo!(); - replace_with::replace_with_or_abort_and_return(self.get_mut(), |state| state.transition(cx, ctx)) - } -} - -impl State { - fn transition(self, cx: &mut PollContext<'_>, ctx: Context) -> (Poll<()>, Self) { - match self { - State::State0 { mut a, b } => { - let pull = a.pull(ctx).boxed(); - let pull = unsafe { std::mem::transmute(pull) }; - (Poll::Pending, State::State1 { a, b, pull }) - } - State::State1 { a, b, mut pull } => { - if let Poll::Ready(Control::Continue(x)) = pull.as_mut().poll(cx) { - let push = b.push(x, ctx).boxed(); - let push = unsafe { std::mem::transmute(push) }; - (Poll::Pending, State::State3 { a, b, push }) - } else { - (Poll::Pending, State::State1 { a, b, pull }) - } - } - State::State3 { a, b, mut push } => { - if let Poll::Ready(Control::Continue(())) = push.as_mut().poll(cx) { - (Poll::Pending, State::State0 { a, b }) - } else { - (Poll::Pending, State::State3 { a, b, push }) - } - } - } - } -} - -#[derive(ComponentDefinition)] -struct DoThing { - ctx: ComponentContext, - a: Pullable, - b: Pushable, -} - -impl Actor for DoThing { - type Message = TaskMessage; - - fn receive_local(&mut self, msg: Self::Message) -> Handled { - Handled::Ok - } - - fn receive_network(&mut self, msg: kompact::prelude::NetMessage) -> Handled { - Handled::Ok - } -} - -impl ComponentLifecycle for DoThing { - fn on_start(&mut self) -> Handled { - self.spawn_local(move |async_self| async move { - State::State0 { - a: async_self.a.clone(), - b: async_self.b.clone(), - } - .await; - Handled::DieNow - }); - Handled::Ok - } -} - -impl DoThing { - fn new(a: Pullable, b: Pushable) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - a, - b, - } - } -} - -fn do_thing(a: Pullable, ctx: Context) -> Pullable { - let (b0, b1): (Pushable, Pullable) = channel(ctx); - ctx.launch(move || DoThing::new(a, b0)); - b1 -} - -fn read_stream() -> Pullable { - todo!() -} - -fn main() { - let ctx = todo!(); - let a: Pullable = read_stream(); - let b: Pullable = do_thing(a, ctx); -} diff --git a/arc-runtime/tests/generic_enum_rewrite.rs b/arc-runtime/tests/generic_enum_rewrite.rs deleted file mode 100644 index 5d5c19a04..000000000 --- a/arc-runtime/tests/generic_enum_rewrite.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![allow(unused)] - -use arc_runtime::prelude::*; - -#[rewrite] -pub enum Foo { - X(A), -} - -#[rewrite] -pub enum Bar { - X(A), - Y(B), -} - -type Baz = Bar, Bar>; diff --git a/arc-runtime/tests/generic_struct_rewrite.rs b/arc-runtime/tests/generic_struct_rewrite.rs deleted file mode 100644 index ce331a168..000000000 --- a/arc-runtime/tests/generic_struct_rewrite.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![allow(unused)] - -use arc_runtime::prelude::*; - -#[rewrite] -pub struct Foo { - pub a: A, -} - -#[rewrite] -pub struct Bar { - pub a: A, - pub b: B, -} - -type Baz = Bar, Bar>; diff --git a/arc-runtime/tests/nonpersistent_task.rs b/arc-runtime/tests/nonpersistent_task.rs deleted file mode 100644 index d3ff1de10..000000000 --- a/arc-runtime/tests/nonpersistent_task.rs +++ /dev/null @@ -1,43 +0,0 @@ -use arc_runtime::prelude::*; - -declare_functions!(f); - -#[rewrite] -fn f(x: i32) -> i32 { - x + 1 -} - -#[rewrite(nonpersistent)] -async fn source(mut i: Vec, #[output] mut o: Pushable) { - for x in i.into_iter().cloned() { - push!(o, x); - } -} - -#[rewrite(nonpersistent)] -async fn map(mut i: Pullable, mut f: function!((i32) -> i32), #[output] mut o: Pushable) { - loop { - let x = pull!(i); - let y = call_indirect!(f(x)); - push!(o, y); - } -} - -#[rewrite(nonpersistent)] -async fn log(mut i: Pullable) { - loop { - println!("Logging {}", pull!(i)); - } -} - -use arc_runtime::data::channels::local::multicast::Pullable; - -#[rewrite(main)] -#[test] -fn rewrite_impersistent_task() { - let v: Vec = vector![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; - let s: Pullable = call!(source(v)); - let f: function!((i32) -> i32) = function!(f); - let s: Pullable = call!(map(s, f)); - call!(log(s)); -} diff --git a/arc-runtime/tests/persistent_task.rs b/arc-runtime/tests/persistent_task.rs deleted file mode 100644 index c3125de44..000000000 --- a/arc-runtime/tests/persistent_task.rs +++ /dev/null @@ -1,114 +0,0 @@ -use arc_runtime::prelude::*; - -declare_functions!(x); - -// #[rewrite(nonpersistent)] -// mod source { -// fn task(i: Vec, #[output] o: Pushable) { -// for x in i.into_iter().cloned() { -// push!(o, x); -// } -// } -// } - -#[rewrite(persistent)] -mod map { - fn task(a: Pullable, f: function!((i32) -> i32), #[output] b: Pushable) {} - - struct State0 { - a: Pullable, - f: function!((i32) -> i32), - b: Pushable, - } - - struct State1 { - a: Pullable, - f: function!((i32) -> i32), - b: Pushable, - pull: BoxFuture<'static, Control>, - } - - struct State2 { - a: Pullable, - f: function!((i32) -> i32), - b: Pushable, - push: BoxFuture<'static, Control<()>>, - } - - struct State3 {} - - enum State { - State0(State0), - State1(State1), - State2(State2), - State3(State3), - } - - fn transition0( - State0 { - mut a, - mut b, - mut f, - }: State0, - _cx: &mut PollContext, - ctx: Context, - ) -> (Poll<()>, State) { - pull_transition!(pull, a, State1 { a, b, f, pull }); - } - - fn transition1( - State1 { - mut a, - mut b, - mut f, - mut pull, - }: State1, - cx: &mut PollContext, - ctx: Context, - ) -> (Poll<()>, State) { - let x = wait!(pull, cx, State1 { a, b, f, pull }, State3 {}); - let y = call_indirect!(f(x)); - push_transition!(push, b, y, State2 { a, b, f, push }); - } - - fn transition2( - State2 { - mut a, - mut b, - mut f, - mut push, - }: State2, - cx: &mut PollContext, - ctx: Context, - ) -> (Poll<()>, State) { - wait!(push, cx, State2 { a, b, f, push }, State0 { a, b, f }); - transition!(State0 { a, b, f }); - } - - fn transition3(State3 {}: State3, _cx: &mut PollContext, ctx: Context) -> (Poll<()>, State) { - unreachable!() - } -} - -// #[rewrite(nonpersistent)] -// mod log { -// fn task(i: Pullable) { -// loop { -// println!("Logging {}", pull!(i)); -// } -// } -// } - -#[rewrite] -fn x(x: i32) -> i32 { - x + 1 -} - -// #[rewrite(main)] -// #[test] -// fn rewrite_impersistent_task() { -// let v = vector!(1i32, 2, 3); -// let s = direct_call!(source(*v)); -// let s = direct_call!(map(*s, function!(x))); -// let s = direct_call!(log(*s)); -// } diff --git a/arc-runtime/tests/prost.rs b/arc-runtime/tests/prost.rs deleted file mode 100644 index 9cd66f7ad..000000000 --- a/arc-runtime/tests/prost.rs +++ /dev/null @@ -1,169 +0,0 @@ -#[cfg(all(test, feature = "backend_arcon"))] -mod prost_test1 { - use prost::Message; - use prost::Oneof; - - #[derive(Message, Clone, Eq, PartialEq)] - struct Foo { - #[prost(int32)] - a: i32, - #[prost(message)] - b: Option, - } - - #[derive(Message, Clone, Eq, PartialEq)] - struct Baz { - #[prost(message)] - c0: Option, - #[prost(message)] - c1: Option, - } - - #[derive(Message, Clone, Eq, PartialEq)] - struct Qux { - #[prost(oneof = "QuxEnum", tags = "1, 2, 3")] - inner: Option, - } - - #[derive(Oneof, Clone, Eq, PartialEq)] - enum QuxEnum { - #[prost(message, tag = "1")] - Zot(Box), - } - - #[derive(Message, Clone, Eq, PartialEq)] - struct Zot { - #[prost(message)] - d: Option, - } - - #[test] - fn test() { - let foo = Foo { - a: 0, - b: Baz { - c0: Qux { - inner: QuxEnum::Zot( - Zot { - d: Foo { a: 3, b: None }.into(), - } - .into(), - ) - .into(), - } - .into(), - c1: Qux { - inner: QuxEnum::Zot( - Zot { - d: Foo { a: 3, b: None }.into(), - } - .into(), - ) - .into(), - } - .into(), - } - .into(), - }; - - let mut buf = Vec::new(); - - let expected = foo.clone(); - - foo.encode(&mut buf).unwrap(); - let found = Foo::decode(&buf[..]).unwrap(); - - assert_eq!(expected, found); - } -} - -#[cfg(all(test, feature = "backend_arcon"))] -mod prost_test2 { - use prost::Message; - use prost::Oneof; - - // NOTE: Tags must start from 1 or else prost panics - - #[derive(Message, Clone, Eq, PartialEq)] - struct List { - #[prost(oneof = "ListEnum", tags = "1, 2")] - this: Option, - } - - impl ListEnum { - fn wrap(self) -> List { - List { this: Some(self) } - } - } - - #[derive(Oneof, Clone, Eq, PartialEq)] - enum ListEnum { - #[prost(message, tag = "1")] - Cons(Box), - #[prost(message, tag = "2")] - Nil(Nil), - } - - #[derive(Message, Clone, Eq, PartialEq)] - struct Cons { - #[prost(int32)] - val: i32, - #[prost(message)] - tail: Option, - } - - #[derive(Message, Clone, Eq, PartialEq)] - struct Nil {} - - #[test] - fn test() { - let list: List = ListEnum::Cons( - Cons { - val: 0, - tail: ListEnum::Cons( - Cons { - val: 0, - tail: ListEnum::Nil(Nil {}).into(), - } - .into(), - ) - .into(), - } - .into(), - ); - - let mut buf = Vec::new(); - - let expected = list.clone(); - - list.encode(&mut buf).unwrap(); - let found = List::decode(&buf[..]).unwrap(); - - assert_eq!(expected, found); - } -} - -#[cfg(all(test, feature = "backend_arcon"))] -mod prost_test3 { - use prost::Message; - - #[derive(Message, Clone, Eq, PartialEq)] - struct Zib { - #[prost(message, required)] - e: (), - } - - #[test] - fn test() { - let z = Zib { e: () }; - - let mut buf = Vec::new(); - - let expected = z.clone(); - - z.encode(&mut buf).unwrap(); - let found = Zib::decode(&buf[..]).unwrap(); - - assert_eq!(expected, found); - } -} diff --git a/arc-runtime/tests/source_map_log.rs b/arc-runtime/tests/source_map_log.rs deleted file mode 100644 index 873d63676..000000000 --- a/arc-runtime/tests/source_map_log.rs +++ /dev/null @@ -1,235 +0,0 @@ -#![allow(unused)] -#![feature(arbitrary_self_types)] -#![allow(unused_mut)] - -macro_rules! compile_test { - {$($mod:tt)::+} => { - use arc_runtime::prelude::*; - - // NOTE: The `where` clause is not necessary when we have monomorphised the code. - #[derive(ComponentDefinition)] - struct Source where T::T: Sendable { - ctx: ComponentContext, - vec: Vec, - pushable: $($mod)::+::Pushable, - } - - #[derive(ComponentDefinition)] - struct Map where A::T: Sendable, B::T: Sendable { - ctx: ComponentContext, - pullable: $($mod)::+::Pullable, - fun: fn(A) -> B, - pushable: $($mod)::+::Pushable, - } - - #[derive(ComponentDefinition)] - struct Log where T::T: Sendable { - ctx: ComponentContext, - pullable: $($mod)::+::Pullable, - } - - impl Source where T::T: Sendable { - fn new(vec: Vec, pushable: $($mod)::+::Pushable) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - vec, - pushable, - } - } - - async fn run(mut self: ComponentDefinitionAccess, ctx: Context) -> Control<()> { - let i = self.vec.clone(); - for x in 0..i.clone().len(ctx) { - let j = i.clone(); - let v = j.get(x, ctx); - self.pushable.push(v.clone(), ctx).await?; - } - Control::Finished - } - } - - impl Map where A::T: Sendable, B::T: Sendable { - fn new(pullable: $($mod)::+::Pullable, f: fn(A) -> B, pushable: $($mod)::+::Pushable) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - pullable, - fun: f, - pushable, - } - } - - async fn run(mut self: ComponentDefinitionAccess, ctx: Context) -> Control<()> { - let f = self.fun; - loop { - let data = self.pullable.pull(ctx).await?; - self.pushable.push(f(data), ctx).await?; - } - } - } - - impl Log where T::T: Sendable { - fn new(pullable: $($mod)::+::Pullable) -> Self { - Self { - ctx: ComponentContext::uninitialised(), - pullable, - } - } - - async fn run(mut self: ComponentDefinitionAccess, ctx: Context) -> Control<()> { - loop { - let data = self.pullable.pull(ctx).await?; - info!(self.log(), "Logging {:?}", data); - } - } - } - - impl ComponentLifecycle for Source where T::T: Sendable { - fn on_start(&mut self) -> Handled { - self.spawn_local(move |async_self| async move { - let component = async_self.ctx().component(); - let mutator = instantiate_immix(ImmixOptions::default()); - let ctx = Context::new(component, mutator); - async_self.run(ctx).await; - Handled::DieNow - }); - Handled::Ok - } - } - - impl ComponentLifecycle for Map where A::T: Sendable, B::T: Sendable { - fn on_start(&mut self) -> Handled { - self.spawn_local(move |async_self| async move { - let component = async_self.ctx().component(); - let mutator = instantiate_immix(ImmixOptions::default()); - let ctx = Context::new(component, mutator); - async_self.run(ctx).await; - Handled::DieNow - }); - Handled::Ok - } - } - - impl ComponentLifecycle for Log where T::T: Sendable { - fn on_start(&mut self) -> Handled { - self.spawn_local(move |async_self| async move { - let component = async_self.ctx().component(); - let mutator = instantiate_immix(ImmixOptions::default()); - let ctx = Context::new(component, mutator); - async_self.run(ctx).await; - Handled::DieNow - }); - Handled::Ok - } - } - - impl Actor for Source where T::T: Sendable { - type Message = TaskMessage; - - fn receive_local(&mut self, _msg: Self::Message) -> Handled { - Handled::Ok - } - - fn receive_network(&mut self, _msg: NetMessage) -> Handled { - unreachable!() - } - } - - impl Actor for Map where A::T: Sendable, B::T: Sendable { - type Message = TaskMessage; - - fn receive_local(&mut self, _msg: Self::Message) -> Handled { - Handled::Ok - } - - fn receive_network(&mut self, _msg: NetMessage) -> Handled { - unreachable!() - } - } - - impl Actor for Log where T::T: Sendable { - type Message = TaskMessage; - - fn receive_local(&mut self, _msg: Self::Message) -> Handled { - Handled::Ok - } - - fn receive_network(&mut self, _msg: NetMessage) -> Handled { - unreachable!() - } - } - - fn source(vec: Vec, ctx: Context) -> $($mod)::+::Pullable where T::T: Sendable { - let (o0, o1) = $($mod)::+::channel(ctx); - ctx.launch(move || Source::new(vec, o0)); - o1 - } - - fn map(a: $($mod)::+::Pullable, f: fn(A) -> B, ctx: Context) -> $($mod)::+::Pullable where A::T: Sendable, B::T: Sendable { - let (b0, b1) = $($mod)::+::channel(ctx); - ctx.launch(move || Map::new(a, f, b0)); - b1 - } - - fn log(a: $($mod)::+::Pullable, ctx: Context) where T::T: Sendable { - ctx.launch(move || Log::new(a)); - } - - fn plus_one(x: i32) -> i32 { - x + 1 - } - - #[derive(ComponentDefinition, Actor)] - struct Main { - ctx: ComponentContext, - } - - impl Main { - fn new() -> Self { - Self { - ctx: ComponentContext::uninitialised() - } - } - } - - fn run_main(ctx: Context) { - let v = vector![1i32, 2, 3]; - let v = source(v, ctx); - let v = map(v, plus_one, ctx); - let _ = log(v, ctx); - } - - impl ComponentLifecycle for Main { - fn on_start(&mut self) -> Handled { - let component = self.ctx().component(); - let mutator = instantiate_immix(ImmixOptions::default()); - let ctx = Context::new(component, mutator); - run_main(ctx); - self.ctx().system().shutdown_async(); - Handled::DieNow - } - } - - fn main() { - let system = KompactConfig::default().build().unwrap(); - let main = system.create(move || Main::new()); - system.start(&main); - system.await_termination(); - } - } -} - -// mod source_map_log_remote_concurrent { -// compile_test!(arc_runtime::data::channels::remote::concurrent); -// } - -// mod source_map_log_remote_broadcast { -// compile_test!(arc_runtime::data::channels::remote::broadcast); -// } - -// mod source_map_log_local_concurrent { -// compile_test!(arc_runtime::data::channels::local::task_parallel); -// } - -mod source_map_log_local_broadcast { - compile_test!(arc_runtime::data::channels::local::multicast); -} diff --git a/arc-runtime/tests/types.rs b/arc-runtime/tests/types.rs deleted file mode 100644 index 83299fa3b..000000000 --- a/arc-runtime/tests/types.rs +++ /dev/null @@ -1,106 +0,0 @@ -mod basic1 { - use arc_runtime::prelude::*; - #[rewrite] - pub struct Point { - pub x: i32, - pub y: i32, - } - - #[rewrite] - pub enum Foo { - FooBar(i32), - FooBaz(f32), - } -} - -mod basic2 { - use arc_runtime::prelude::*; - #[rewrite] - pub struct A { - pub b: B, - } - - #[rewrite] - pub struct B { - pub c: i32, - } -} - -mod basic3 { - use arc_runtime::prelude::*; - #[rewrite] - pub enum A { - AB(B), - AC(C), - } - - #[rewrite] - pub struct B { - pub v: i32, - } - - #[rewrite] - pub struct C {} -} - -mod list { - use arc_runtime::prelude::*; - - #[rewrite] - pub enum List { - ListCons(Cons), - ListNil(unit), - } - - #[rewrite] - pub struct Cons { - pub v: i32, - pub t: List, - } - - #[rewrite(main)] - #[test] - fn test() { - let l: List = enwrap!(ListNil, unit); - let _x: bool = is!(ListCons, l); - let h: Cons = new!(Cons { v: 5, t: l }); - let l: List = enwrap!(ListCons, h); - let h: Cons = unwrap!(ListCons, l); - assert_eq!(h.v, 5); - } -} - -mod structs { - use arc_runtime::prelude::*; - - #[rewrite] - pub struct Foo { - pub a: i32, - pub b: Bar, - } - - #[rewrite] - pub struct Bar {} - - #[rewrite(main)] - #[test] - fn test() { - let x0: Bar = new!(Bar {}); - let _f: Foo = new!(Foo { a: 0, b: x0 }); - } -} - -mod unit { - use arc_runtime::prelude::*; - - #[rewrite] - pub enum Foo { - FooBar(unit), - } - - #[rewrite(main)] - #[test] - fn test() { - let _x: Foo = enwrap!(FooBar, unit); - } -} diff --git a/arc-website/Makefile b/arc-website/Makefile deleted file mode 100644 index f590e72db..000000000 --- a/arc-website/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -all: - rm -r static/* - make -C ../arc-docs build-with-deps; mv -f ../arc-docs/target/html static/docs - make -C ../arc-report; mv -f ../arc-report/target/main.pdf static/Arc-Report.pdf - zola build - -build: - zola build diff --git a/arc-website/config.toml b/arc-website/config.toml deleted file mode 100644 index 5631822d2..000000000 --- a/arc-website/config.toml +++ /dev/null @@ -1,34 +0,0 @@ -# The URL the site will be built for -base_url = "https://cda-group.github.io/arc" -title = "Arc-Lang" - -# Whether to automatically compile all Sass files in the sass directory -compile_sass = true - -# Whether to build a search index to be used later on by a JavaScript library -build_search_index = false - -output_dir = "target" - -theme = "adidoks" - -[markdown] -# Whether to do syntax highlighting -# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola -highlight_code = false - -[extra] -author = "Klas Segeljakt" -github = "https://github.com/segeljakt" -twitter = "https://twitter.com/KlasSegeljakt" -email = "klasseg@kth.se" - -[[extra.menu.social]] -name = "GitHub" -pre = '' -url = "https://github.com/cda-group/arc" -post = "v0.1.0" -weight = 20 - -[extra.footer] -info = 'Powered by Netlify, Zola, and AdiDoks' diff --git a/arc-website/content/_index.md b/arc-website/content/_index.md deleted file mode 100644 index d900e17fe..000000000 --- a/arc-website/content/_index.md +++ /dev/null @@ -1,54 +0,0 @@ -+++ -title = "Arc-Lang" - -[extra] -lead = 'A programming language for continuous deep analytics.' -url = "/docs//" -url_button = "Get started" -repo_version = "" -repo_license = "" -repo_url = "https://github.com/cda-group/arc" - -[[extra.menu.main]] -name = "Docs" -section = "docs" -url = "/docs/" -weight = 20 - -[[extra.menu.main]] -name = "Blog" -section = "blog" -url = "/blog/" -weight = 20 - -[[extra.menu.main]] -name = "Research Report" -section = "report" -url = "Arc-Report.pdf?" -weight = 20 - -[[extra.list]] -title = "Stream Analytics" -content = 'Data Streams are supported for managing large quantities of live generated data.' - -[[extra.list]] -title = "Batch Analytics" -content = 'Data Frames are supported for crunching numbers and manipulating data.' - -[[extra.list]] -title = "Extensible" -content = 'Libraries can be developed in Rust and imported into Arc-Lang if low-level control is required.' - -[[extra.list]] -title = "Python API" -content = 'Applications can be created either directly in Arc-Lang or in our lazily evaluated Python API.' - -[[extra.list]] -title = "SQL-like syntax" -content = 'Arc-Lang has a familiar syntax to those who are used to working with SQL.' - -[[extra.list]] -title = "Heterogeneous" -content = 'Data can be gathered by, processed on, and served at a variety of devices. Arc-Lang programs can both execute natively and through WebAssembly.' - -+++ diff --git a/arc-website/content/authors/_index.md b/arc-website/content/authors/_index.md deleted file mode 100644 index 5c5c0fdbc..000000000 --- a/arc-website/content/authors/_index.md +++ /dev/null @@ -1,12 +0,0 @@ -+++ -title = "Authors" -description = "The authors of the blog articles." -date = 2022-02-23T08:00:00+00:00 -updated = 2022-02-23T08:00:00+00:00 -draft = false - -[extra.author_pages] -"segeljakt" = "authors/segeljakt.md" -+++ - -The authors of the blog articles. diff --git a/arc-website/content/authors/segeljakt.md b/arc-website/content/authors/segeljakt.md deleted file mode 100644 index e7fcba516..000000000 --- a/arc-website/content/authors/segeljakt.md +++ /dev/null @@ -1,11 +0,0 @@ -+++ -title = "Aaran Xu" -description = "Creator of AdiDoks." -date = 2021-04-01T08:50:45+00:00 -updated = 2021-04-01T08:50:45+00:00 -draft = false -+++ - -Creator of **AdiDoks**. - -[@segeljakt](https://github.com/segeljakt) diff --git a/arc-website/content/blog/1-introduction.md b/arc-website/content/blog/1-introduction.md deleted file mode 100644 index 7265570b1..000000000 --- a/arc-website/content/blog/1-introduction.md +++ /dev/null @@ -1,62 +0,0 @@ -+++ -title = "Introduction" -description = "Introducing Arc-Lang, a programming language for building data science applications." -date = 2022-03-17 -updated = 2022-03-17 -draft = false -template = "blog/page.html" - -[extra] -lead = "" -+++ - -# Arc-Lang - -This blog post gives an introduction to **Arc-Lang** - a programming language for big-data analytics - and sheds light on its vision and implementation. The Arc-Lang research project is funded by [SSF](https://strategiska.se/en/) and has gone through many revisions prior to this blog post. This history will be discussed in a later post. - -## Introduction - -Data analytics pipelines are becoming increasingly more complicated due to the growing number of requirements imposed by data science. Not only must data be processed and analyzed scalably with respect to its volume and velocity, but also intricately by involving many different types of data. Arc-Lang is a programming language for data analytics that supports parallel operations over multiple data types including datastreams and dataframes. As an example, a basic word-count application can be implemented as follows in Arc-Lang: - -``` -val lines = read_stdin(); - -val word_counts = - from line in lines, - word in line.split(" ") - yield #{word, count:1} - group word - window 10min - reduce (+) of count - identity 0; - -write_stdout(word_counts); -``` - -The goal of Arc-Lang is to make big-data analytics easy. Arc-Lang targets streaming analytics (i.e., processing data continuously as it is being generated) and batch analytics (i.e., processing data in large chunks all-at-once). From the streaming-perspective, Arc-Lang must be able to manage data at a fine granularity that is generated by many types of sensors, arriving at varying rates, in different formats, sizes, qualities, and possibly out-of-order. Datastreams can in addition be massive in numbers, ranging into the billions, due to the plethora of data sources that have emerged in the recent IoT boom. From the batch-perspective, Arc-Lang must be able to handle different kinds of collection-based data types whose sizes can scale to massive sizes, e.g., tensors and dataframes. - -To cope with the requirements of batch and stream data management, a runtime system is needed which can exploit distributed programming to enable scalability through partitioning and parallelism. Distributed programming is however difficult without abstraction. Application developers must manage problems such as fault tolerance, exactly-once-processing, and coordination while considering tradeoffs in security and efficiency. To this end, distributed systems leverage high-level DSLs which are more friendly towards end-users. DSLs in the form of query languages, frameworks, and libraries allow application developers to focus on domain-specific problems, such as the development of algorithms, and to disregard engineering-related issues. In addition, DSLs that are intermediate languages have been adopted by multiple systems both as a solution to enable reuse by breaking the dependence between the user and runtime, and to enable target-independent optimisation. There is always a tradeoff that must be faced in DSL design. DSLs make some problems easier to solve at the expense of making other problems harder to solve. How a DSL is implemented can also have an impact on its ability to solve problems. - - - -Different categories of DSLs are highlighted in the figure above. - -### Approach - -In relation to other DSLs, Arc-Lang is a standalone compiled DSL implemented in OCaml. The idea of Arc-Lang's is to combine general purpose imperative and functional programming over *small data* with declarative programming over *big data*. As an example, it should be possible to perform both fine-grained processing over individual data items of a datastream, while also being able to compose pipelines of relational operations through SQL-style queries. Arc-Lang is statically typed for the purpose of performance and safety, but at the same time also inferred and polymorphic to enable ease of use and reuse. - -The approach of implementing the language as a standalone DSL allows for more creative freedom in the language design. At the same time, this approach requires everything, including optimisations and libraries, to be implemented from scratch. - -To address the issue of optimisation, we are using the [MLIR](https://mlir.llvm.org/) compiler framework to implement Arc-MLIR - an intermediate language - which Arc-Lang programs translate into for optimisations. MLIR defines a universal intermediate language which can be extended with custom dialects. A dialect includes a set of operations, types, type rules, analyses, rewrite rules (to the same dialect), and lowerings (to other dialects). All dialects adhere to the same meta-syntax and meta-semantics which allows them to be interweaved in the same program code. The MLIR framework handles parsing, type checking, line information tracking among other things. Additionally, MLIR provides tooling for testing, parallel compilation, documentation, CLI usage, etc. The plan is to extend Arc-MLIR with custom domain-specific optimisations for the declarative part of Arc-Lang and to capitalize on MLIR's ability to derive general-purpose optimisations such as constant propagation for Arc-Lang's functional and imperative side. - -To address the shortcoming of libraries, Arc-Lang allows both types and functions to be defined externally (inside Rust) and imported into the language. Most of the external functionality is encapsulated inside a runtime library named Arc-Runtime. Arc-Runtime builds on the [kompact](https://github.com/kompics/kompact) Component-Actor framework to provide distributed abstractions. - -## Summary - -In summary, Arc-Lang as a whole consists of three parts: - -* **Arc-Lang**: A high-level programming language for big data analytics. -* **Arc-MLIR**: An intermediate language for optimising Arc-Lang. -* **Arc-Runtime**: A distributed runtime for executing Arc-Lang. - - diff --git a/arc-website/content/blog/_index.md b/arc-website/content/blog/_index.md deleted file mode 100644 index 95ecd8e1c..000000000 --- a/arc-website/content/blog/_index.md +++ /dev/null @@ -1,7 +0,0 @@ -+++ -title = "Blog" -description = "Blog" -sort_by = "date" -paginate_by = 2 -template = "blog/section.html" -+++ diff --git a/arc-website/content/privacy-policy/_index.md b/arc-website/content/privacy-policy/_index.md deleted file mode 100644 index d8050da75..000000000 --- a/arc-website/content/privacy-policy/_index.md +++ /dev/null @@ -1,27 +0,0 @@ -+++ -title = "Privacy Policy" -description = "We do not use cookies and we do not collect any personal data." -date = 2021-05-01T08:00:00+00:00 -updated = 2020-05-01T08:00:00+00:00 -draft = false - -[extra] -class = "page single" -+++ - -__TLDR__: We do not use cookies and we do not collect any personal data. - -## Website visitors - -- No personal information is collected. -- No information is stored in the browser. -- No information is shared with, sent to or sold to third-parties. -- No information is shared with advertising companies. -- No information is mined and harvested for personal and behavioral trends. -- No information is monetized. - -## Contact us - -[Contact us](https://github.com/aaranxu/adidoks) if you have any questions. - -Effective Date: _1st May 2021_ diff --git a/arc-website/themes/adidoks b/arc-website/themes/adidoks deleted file mode 160000 index 906865945..000000000 --- a/arc-website/themes/adidoks +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 906865945f81a9c23b2a69ceb3ddd88e156a48d5