Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bin/generate_tests
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def generate(specs: pathlib.Path, exercise: pathlib.Path) -> None:
"""
).strip()
data = {
"cases": list(enumerate(cases)),
"cases": cases,
"header": header,
"solution": json.loads((exercise / ".meta/config.json").read_text())["files"]["solution"][0]
}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/acronym/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< "{{ case["input"]["phrase"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/affine-cipher/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< "{{ [case["property"], case["input"]["key"]["a"], case["input"]["key"]["b"], case["input"]["phrase"]] | join("|") }}"
{%- if case["expect_error"] %}
assert_failure
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/all-your-base/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} -v ibase={{ case["input"]["inputBase"] }} -v obase={{ case["input"]["outputBase"] }} <<< "{{ case["input"]["digits"] | join(" ") }}"
{%- if case["expect_error"] %}
assert_failure
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/allergies/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["descriptions"] | join(": ") }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- if case["property"] == "allergicTo" %}
run gawk -f {{ solution }} <<< '{{ [case["input"]["score"], case["property"] | camel_to_snake, case["input"]["item"]] | join(",") }}'
assert_success
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/alphametics/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case.description }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run awk -f alphametics.awk <<< "{{ case.input.puzzle }}"
assert_success
{% if case.expected %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/anagram/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} -v key={{ case["input"]["subject"] }} <<WORD_LIST
{{ case["input"]["candidates"] | join("\n") }}
WORD_LIST
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/armstrong-numbers/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
# The two large tests require the -M option to handle big numbers.
# Refer to the instructions of the Grains exercise:
# https://exercism.org/tracks/awk/exercises/grains
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- set flags="" %}
{%- if case["input"]["number"] > 10000000 %}
{%- set flags="-M " %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/atbash-cipher/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} -v direction={{ case["property"] }} <<< "{{ case["input"]["phrase"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/binary-search/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} -v value={{ case["input"]["value"] }} <<< "{{ case["input"]["array"] | join(",") }}"
{%- if case["expect_error"] %}
assert_success
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/bob/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< ${{ case["input"]["heyBob"] | repr}}
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/book-store/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<END_INPUT
{%- if case["input"]["basket"] %}
{{ case["input"]["basket"] | join("\n") }}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/bottle-song/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} -v startBottles={{ case["input"]["startBottles"] }} -v takeDown={{ case["input"]["takeDown"] }}

expected="{{ case["expected"] | join("\n") }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/bowling/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- set rolls = case["input"]["previousRolls"] %}
{%- if case["property"] == "roll" %}
{%- set rolls = rolls + [case["input"]["roll"]] %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/change/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
#
# The output is expected to be a space separated list
# of coins, sorted in ascending order
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<END_INPUT
{{ case["input"]["coins"] | join(" ") }}
{{ case["input"]["target"] }}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/clock/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
# subtract hh mm delta
# equal hh mm hh mm

{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- if case["property"] == "equal" %}
{%- set args = [
case["property"],
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/collatz-conjecture/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< "{{ case["input"]["number"] }}"
{%- if case["expect_error"] %}
assert_failure
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/crypto-square/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< "{{ case["input"]["plaintext"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/darts/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< '{{ case["input"]["x"] }} {{ case["input"]["y"] }}'
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/diamond/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< {{ case["input"]["letter"] }}
assert_success
{%- for line in case["expected"] %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/difference-of-squares/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< "{{ case["property"] | camel_to_snake | replace("difference_of_squares", "difference") }},{{ case["input"]["number"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/eliuds-eggs/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< "{{ case["input"]["number"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/flower-field/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} << 'END_INPUT'
{%- if case["input"]["garden"] %}
{{ case["input"]["garden"] | join("\n") | replace(" ", ".") }}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/food-chain/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
expected=$(cat << END_EXPECTED
{{ case["expected"] | join("\n") }}
END_EXPECTED
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/forth/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["descriptions"] | join(": ") }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<END
{{ case["input"]["instructions"] | join("\n")}}
END
Expand Down
8 changes: 4 additions & 4 deletions exercises/practice/forth/test-forth.bats
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bats
load bats-extra

# generated on 2026-06-30T17:59:19+00:00
# generated on 2026-08-13T17:20:33+00:00

@test "parsing and numbers: numbers just get pushed onto the stack" {
# [[ $BATS_RUN_SKIPPED == "true" ]] || skip
Expand Down Expand Up @@ -503,7 +503,7 @@ END
}


@test macro_empty_definition {
@test "new word with empty definition" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f forth.awk <<END
: foo ;
Expand All @@ -512,7 +512,7 @@ END
assert_output --partial "empty macro definition"
}

@test macro_missing_semicolon {
@test "new word definition missing the required semicolon" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f forth.awk <<END
: foo 1
Expand All @@ -524,7 +524,7 @@ END

# each file gets it's own forth evaluator:
# a stack and macros, and prints the stack at the end of the file
@test each_file_gets_its_own_forth {
@test "each input file has its own evaluator" {
[[ $BATS_RUN_SKIPPED == "true" ]] || skip
echo ': + - ;' > first.txt
echo '1 1 +' >> first.txt
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/gigasecond/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip

run gawk -f {{ solution }} <<< '{{ case["input"]["moment"] }}'
assert_success
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/grade-school/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- if case["property"] == "roster" %}
run gawk -f {{ solution }} -v action={{ case["property"] }} << END_INPUT
{%- else %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/grains/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{%- if case["property"] == "total" %}
run gawk -M -f {{ solution }} <<< total
{%- else %}
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/hamming/.meta/template.j2
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ populate_test_file() {
teardown() {
rm -f input.txt
}
{% for idx, case in cases %}
{% for case in cases %}
@test '{{ case["description"] }}' {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
populate_test_file '{{ case["input"]["strand1"] }}' '{{ case["input"]["strand2"] }}'
run gawk -f {{ solution }} input.txt
{%- if case["expect_error"] %}
Expand Down
2 changes: 1 addition & 1 deletion exercises/practice/hello-world/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
run gawk -f {{ solution }}

Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/house/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
expected=$(cat <<END
{{ case["expected"] | join("\n") }}
END
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/isbn-verifier/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< "{{ case["input"]["isbn"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/isogram/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} <<< "{{ case["input"]["phrase"] }}"
assert_success
assert_output "{{ case["expected"] }}"
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/killer-sudoku-helper/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
expected=$(cat << END
{{ case["expected"] | map("join", " ") | join("\n") }}
END
Expand Down
4 changes: 2 additions & 2 deletions exercises/practice/kindergarten-garden/.meta/template.j2
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{{ header }}
{% for idx, case in cases %}
{% for case in cases %}
@test "{{ case["description"] }}" {
{% if idx == 0 %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
{% if loop.first %}# {% endif %}[[ $BATS_RUN_SKIPPED == "true" ]] || skip
run gawk -f {{ solution }} -v name="{{ case["input"]["student"] }}" << END_GARDEN
{{ case["input"]["diagram"] }}
END_GARDEN
Expand Down
Loading