diff --git a/.gitignore b/.gitignore index 6fe064a..a4dcc25 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,9 @@ dist-ssr *.njsproj *.sln *.sw? + +# Code of Points extraction: the PDF must never be committed +scripts/extract-cop/en_1.1.-WAG-Code-of-Points-2025-2028.pdf +scripts/extract-cop/review.html +scripts/extract-cop/.venv +__pycache__ diff --git a/README.md b/README.md index c9b00dd..8879027 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ We are building a web application that helps gymnastics coaches plan their gymna ## Status -The first delivery is a specification. There is no working application yet. +The first delivery was a specification. There is no working application yet, but the catalog data has been extracted from the Code of Points and is in [`data/`](data/). The code in `src/` is the Vite starter project with one example test. The tooling is set up: TypeScript, ESLint, Prettier and Vitest. @@ -21,7 +21,7 @@ The code in `src/` is the Vite starter project with one example test. The toolin ## The dataset -The catalog data comes from the FIG Women's Artistic Gymnastics Code of Points 2025–2028, which is published as a PDF. We will extract the apparatus, element groups, elements and vaults from the PDF with a script, and load them into the database with a seed script. Neither script is written yet. +The catalog data comes from the FIG Women's Artistic Gymnastics Code of Points 2025–2028, which is published as a PDF. We have extracted the apparatus, element groups, elements and vaults from the PDF with a Python script in [`scripts/extract-cop/`](scripts/extract-cop/), and the result is in [`data/`](data/). [docs/EXTRACTION.md](docs/EXTRACTION.md) explains how it was done and what has been checked by hand. The data will be loaded into the database with a seed script, which is not written yet. The data is used for educational purposes. All rights to the Code of Points belong to FIG (Fédération Internationale de Gymnastique). @@ -78,6 +78,16 @@ Other commands: | `pnpm format` | Formats all files with Prettier | | `pnpm test` | Runs the tests with Vitest | +## Project structure + +| Folder | Contents | +| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `data/` | The catalog data extracted from the Code of Points: JSON files and one image per element | +| `docs/` | The specification: user interface plans, data model, example data and AI usage. [docs/EXTRACTION.md](docs/EXTRACTION.md) explains how `data/` was made | +| `public/` | Static files served as they are, such as the favicon | +| `scripts/extract-cop/` | The Python script that extracts `data/` from the Code of Points PDF | +| `src/` | The frontend code. For now the Vite starter project and one example test | + ## Working in this repository `main` is protected — you cannot push to it directly. Work on a branch and diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..339ce8c --- /dev/null +++ b/data/README.md @@ -0,0 +1,14 @@ +# Catalog data + +These files are generated by [`scripts/extract-cop/`](../scripts/extract-cop/) from the FIG Women's Artistic Gymnastics Code of Points 2025–2028. Do not edit them by hand: fix the script and run it again instead. All rights to the content belong to FIG (Fédération Internationale de Gymnastique), and the data is used here for educational purposes. + +The structure of the data is described in [docs/DATA_MODEL.md](../docs/DATA_MODEL.md). How the data was made, and what has been checked by hand, is explained in [docs/EXTRACTION.md](../docs/EXTRACTION.md). + +| File | Contents | +| -------------------- | ---------------------------------------------------------------------------------------------- | +| `apparatus.json` | The four apparatus: vault, uneven bars, balance beam and floor exercise | +| `elementGroups.json` | The element groups on each apparatus, with their number and name | +| `elements.json` | The elements on uneven bars, balance beam and floor exercise, with code, value and description | +| `vaults.json` | The vaults, with code, D-value and description | +| `variantGroups.json` | For each code with more than one variant, the ids of its variants | +| `images/` | One drawing per element and vault, in a folder per apparatus: `images/UB/UB-2.305-a.webp` | diff --git a/data/apparatus.json b/data/apparatus.json new file mode 100644 index 0000000..7cf1a27 --- /dev/null +++ b/data/apparatus.json @@ -0,0 +1,18 @@ +[ + { + "id": "VT", + "name": "Vault" + }, + { + "id": "UB", + "name": "Uneven bars" + }, + { + "id": "BB", + "name": "Balance beam" + }, + { + "id": "FX", + "name": "Floor exercise" + } +] diff --git a/data/elementGroups.json b/data/elementGroups.json new file mode 100644 index 0000000..84003c4 --- /dev/null +++ b/data/elementGroups.json @@ -0,0 +1,134 @@ +[ + { + "id": "VT-1", + "apparatusId": "VT", + "number": 1, + "name": "Handspring, Yamashita, round-off with or without turn in 1st and/or 2nd flight phase" + }, + { + "id": "VT-2", + "apparatusId": "VT", + "number": 2, + "name": "Handspring fwd with/without 1/1 turn (360°) in 1st flight phase – salto fwd/bwd with/without twist in 2nd flight phase" + }, + { + "id": "VT-3", + "apparatusId": "VT", + "number": 3, + "name": "Handspring with ¼ - ½ turn (90°-180°) in 1st flight phase (Tsukahara) – salto bwd with/without twist in 2nd flight phase" + }, + { + "id": "VT-4", + "apparatusId": "VT", + "number": 4, + "name": "Round-off (Yurchenko) with/wo ¾ turn (270°) in 1st flight phase – salto bwd with/without twist in 2nd flight phase" + }, + { + "id": "VT-5", + "apparatusId": "VT", + "number": 5, + "name": "Round-off with ½ turn (180°) in 1st flight phase – salto fwd/bwd with/without twist in 2nd flight phase" + }, + { + "id": "UB-1", + "apparatusId": "UB", + "number": 1, + "name": "Mounts" + }, + { + "id": "UB-2", + "apparatusId": "UB", + "number": 2, + "name": "Casts and clear hip circles" + }, + { + "id": "UB-3", + "apparatusId": "UB", + "number": 3, + "name": "Giant circles" + }, + { + "id": "UB-4", + "apparatusId": "UB", + "number": 4, + "name": "Stalder circles" + }, + { + "id": "UB-5", + "apparatusId": "UB", + "number": 5, + "name": "Pike circles" + }, + { + "id": "UB-6", + "apparatusId": "UB", + "number": 6, + "name": "Dismounts" + }, + { + "id": "BB-1", + "apparatusId": "BB", + "number": 1, + "name": "Mounts" + }, + { + "id": "BB-2", + "apparatusId": "BB", + "number": 2, + "name": "Gymnastic leaps, jumps and hops" + }, + { + "id": "BB-3", + "apparatusId": "BB", + "number": 3, + "name": "Gymnastic turns" + }, + { + "id": "BB-4", + "apparatusId": "BB", + "number": 4, + "name": "Holds and acrobatic non-flight" + }, + { + "id": "BB-5", + "apparatusId": "BB", + "number": 5, + "name": "Acrobatic flight" + }, + { + "id": "BB-6", + "apparatusId": "BB", + "number": 6, + "name": "Dismounts" + }, + { + "id": "FX-1", + "apparatusId": "FX", + "number": 1, + "name": "Gymnastic leaps, jumps and hops" + }, + { + "id": "FX-2", + "apparatusId": "FX", + "number": 2, + "name": "Gymnastic turns" + }, + { + "id": "FX-3", + "apparatusId": "FX", + "number": 3, + "name": "Hand support elements" + }, + { + "id": "FX-4", + "apparatusId": "FX", + "number": 4, + "name": "Saltos forward & sideward" + }, + { + "id": "FX-5", + "apparatusId": "FX", + "number": 5, + "name": "Saltos backward" + } +] diff --git a/data/elements.json b/data/elements.json new file mode 100644 index 0000000..0af5ac5 --- /dev/null +++ b/data/elements.json @@ -0,0 +1,6743 @@ +[ + { + "id": "UB-1.101-a", + "elementGroupId": "UB-1", + "code": "1.101", + "value": 0.1, + "description": "Glide kip to support on LB", + "name": null, + "image": "UB-1.101-a.webp" + }, + { + "id": "UB-1.101-b", + "elementGroupId": "UB-1", + "code": "1.101", + "value": 0.1, + "description": "Glide kip with ½ turn (180°) kip to support on LB", + "name": null, + "image": "UB-1.101-b.webp" + }, + { + "id": "UB-1.102-a", + "elementGroupId": "UB-1", + "code": "1.102", + "value": 0.1, + "description": "Jump with ½ turn (180°) kip to support on LB", + "name": null, + "image": "UB-1.102-a.webp" + }, + { + "id": "UB-1.102-b", + "elementGroupId": "UB-1", + "code": "1.102", + "value": 0.1, + "description": "Jump with ½ turn (180°) stoop through to rear support on LB (back kip)", + "name": null, + "image": "UB-1.102-b.webp" + }, + { + "id": "UB-1.103-a", + "elementGroupId": "UB-1", + "code": "1.103", + "value": 0.1, + "description": "Glide on LB (or swing fwd on HB) and stoop through to rear support (back kip)", + "name": null, + "image": "UB-1.103-a.webp" + }, + { + "id": "UB-1.103-b", + "elementGroupId": "UB-1", + "code": "1.103", + "value": 0.1, + "description": "Glide on LB (or swing fwd on HB) and stoop through to rear support (back kip), straddle cut bwd to hang on same bar", + "name": null, + "image": "UB-1.103-b.webp" + }, + { + "id": "UB-1.104-a", + "elementGroupId": "UB-1", + "code": "1.104", + "value": 0.1, + "description": "Jump to hang on HB – also with reverse grip – kip to support", + "name": null, + "image": "UB-1.104-a.webp" + }, + { + "id": "UB-1.105-a", + "elementGroupId": "UB-1", + "code": "1.105", + "value": 0.1, + "description": "Facing HB – Jump with 1/1 turn (360°) to hang on HB", + "name": null, + "image": "UB-1.105-a.webp" + }, + { + "id": "UB-1.106-a", + "elementGroupId": "UB-1", + "code": "1.106", + "value": 0.1, + "description": "Straddle vault with hand repulsion over LB to catch HB", + "name": null, + "image": "UB-1.106-a.webp" + }, + { + "id": "UB-1.202-a", + "elementGroupId": "UB-1", + "code": "1.202", + "value": 0.2, + "description": "Jump with 1/1 turn (360°) and Glide kip to support on LB", + "name": null, + "image": "UB-1.202-a.webp" + }, + { + "id": "UB-1.203-a", + "elementGroupId": "UB-1", + "code": "1.203", + "value": 0.2, + "description": "Reverse kip from: – glide fwd on LB – swing fwd on HB – stoop through to kip hang, back kip swing, seat (pike) circle bwd to rear support", + "name": null, + "image": "UB-1.203-a.webp" + }, + { + "id": "UB-1.203-b", + "elementGroupId": "UB-1", + "code": "1.203", + "value": 0.2, + "description": "Reverse kip from: – glide fwd on LB – swing fwd on HB – stoop through to kip hang, back kip swing, seat (pike) circle bwd to rear support", + "name": null, + "image": "UB-1.203-b.webp" + }, + { + "id": "UB-1.204-a", + "elementGroupId": "UB-1", + "code": "1.204", + "value": 0.2, + "description": "Facing HB – Jump with ½ turn (180°) – kip to support on HB", + "name": null, + "image": "UB-1.204-a.webp" + }, + { + "id": "UB-1.204-b", + "elementGroupId": "UB-1", + "code": "1.204", + "value": 0.2, + "description": "Free jump with ½ turn (180°) over LB to hang on HB", + "name": null, + "image": "UB-1.204-b.webp" + }, + { + "id": "UB-1.206-a", + "elementGroupId": "UB-1", + "code": "1.206", + "value": 0.2, + "description": "Free straddle jump over LB to hang on HB", + "name": null, + "image": "UB-1.206-a.webp" + }, + { + "id": "UB-1.206-b", + "elementGroupId": "UB-1", + "code": "1.206", + "value": 0.2, + "description": "Hecht jump (legs together) with hand repulsion over LB to hang on HB", + "name": null, + "image": "UB-1.206-b.webp" + }, + { + "id": "UB-1.207-a", + "elementGroupId": "UB-1", + "code": "1.207", + "value": 0.2, + "description": "Salto fwd tucked, piked or straddled over LB into L hang on LB", + "name": null, + "image": "UB-1.207-a.webp" + }, + { + "id": "UB-1.208-a", + "elementGroupId": "UB-1", + "code": "1.208", + "value": 0.2, + "description": "Round-off in front of LB – flight bwd (straddled) through clear straddle support on LB", + "name": null, + "image": "UB-1.208-a.webp" + }, + { + "id": "UB-1.210-a", + "elementGroupId": "UB-1", + "code": "1.210", + "value": 0.2, + "description": "Jump to hstd on LB with hips bent, then extended", + "name": null, + "image": "UB-1.210-a.webp" + }, + { + "id": "UB-1.210-b", + "elementGroupId": "UB-1", + "code": "1.210", + "value": 0.2, + "description": "Jump to hstd on LB with hips bent, then extended, with ½ turn (180°) in hstd phase, legs together or straddle", + "name": null, + "image": "UB-1.210-b.webp" + }, + { + "id": "UB-1.304-a", + "elementGroupId": "UB-1", + "code": "1.304", + "value": 0.3, + "description": "Jump with ½ turn (180°) over LB – kip to support on HB", + "name": null, + "image": "UB-1.304-a.webp" + }, + { + "id": "UB-1.306-a", + "elementGroupId": "UB-1", + "code": "1.306", + "value": 0.3, + "description": "Free stretch jump over LB with legs together to hang on HB", + "name": "Makhautsova", + "image": "UB-1.306-a.webp" + }, + { + "id": "UB-1.307-a", + "elementGroupId": "UB-1", + "code": "1.307", + "value": 0.3, + "description": "Facing HB – salto fwd to hang on HB", + "name": null, + "image": "UB-1.307-a.webp" + }, + { + "id": "UB-1.307-b", + "elementGroupId": "UB-1", + "code": "1.307", + "value": 0.3, + "description": "Roll fwd piked with hand repulsion over LB with flight to hang on HB", + "name": null, + "image": "UB-1.307-b.webp" + }, + { + "id": "UB-1.308-a", + "elementGroupId": "UB-1", + "code": "1.308", + "value": 0.3, + "description": "Round-off in front of LB – flight bwd over LB with legs together or straddled to hang on HB", + "name": null, + "image": "UB-1.308-a.webp" + }, + { + "id": "UB-1.310-a", + "elementGroupId": "UB-1", + "code": "1.310", + "value": 0.3, + "description": "Jump to hstd on LB with hips bent, then extended and 1/1 turn (360°) in hstd phase, legs together or straddle", + "name": null, + "image": "UB-1.310-a.webp" + }, + { + "id": "UB-1.310-b", + "elementGroupId": "UB-1", + "code": "1.310", + "value": 0.3, + "description": "Jump with extended body to hdst on LB also with ½ turn (180°)", + "name": null, + "image": "UB-1.310-b.webp" + }, + { + "id": "UB-1.406-a", + "elementGroupId": "UB-1", + "code": "1.406", + "value": 0.4, + "description": "Hecht jump (legs together) with hand repulsion and 1/1 turn (360°) over LB to hang on HB", + "name": "Gebeshian", + "image": "UB-1.406-a.webp" + }, + { + "id": "UB-1.406-b", + "elementGroupId": "UB-1", + "code": "1.406", + "value": 0.4, + "description": "Free stretch jump (legs together) with 1/1 turn (360°) over LB to hang on HB", + "name": "Petrova", + "image": "UB-1.406-b.webp" + }, + { + "id": "UB-1.407-a", + "elementGroupId": "UB-1", + "code": "1.407", + "value": 0.4, + "description": "Salto fwd tucked over LB to hang on HB without touching LB", + "name": null, + "image": "UB-1.407-a.webp" + }, + { + "id": "UB-1.408-a", + "elementGroupId": "UB-1", + "code": "1.408", + "value": 0.4, + "description": "Round-off in front of LB – flight bwd over LB with 1/1 turn (360°) to hang on HB", + "name": null, + "image": "UB-1.408-a.webp" + }, + { + "id": "UB-1.409-a", + "elementGroupId": "UB-1", + "code": "1.409", + "value": 0.4, + "description": "Round-off in front of LB – tucked salto bwd over LB to hang on LB", + "name": "Jentsch", + "image": "UB-1.409-a.webp" + }, + { + "id": "UB-1.409-b", + "elementGroupId": "UB-1", + "code": "1.409", + "value": 0.4, + "description": "Round-off in front of LB, flic-flac through hstd phase on LB", + "name": "González", + "image": "UB-1.409-b.webp" + }, + { + "id": "UB-1.410-a", + "elementGroupId": "UB-1", + "code": "1.410", + "value": 0.4, + "description": "Jump with extended body to hstd on LB with 1/1 turn (360°) in hstd phase", + "name": "Maaranen", + "image": "UB-1.410-a.webp" + }, + { + "id": "UB-1.411-a", + "elementGroupId": "UB-1", + "code": "1.411", + "value": 0.4, + "description": "Jump to clear support on HB – clear hip circle to hstd on HB", + "name": "McNamara", + "image": "UB-1.411-a.webp" + }, + { + "id": "UB-1.411-b", + "elementGroupId": "UB-1", + "code": "1.411", + "value": 0.4, + "description": "Jump to clear support on HB – clear hip circle to hstd on HB, with ½ turn (180°) in hstd phase on HB", + "name": null, + "image": "UB-1.411-b.webp" + }, + { + "id": "UB-1.509-a", + "elementGroupId": "UB-1", + "code": "1.509", + "value": 0.5, + "description": "Round-off in front of LB, flic-flac with 1/1 turn (360°) to clear support or through hstd phase on LB", + "name": "Gurova", + "image": "UB-1.509-a.webp" + }, + { + "id": "UB-1.609-a", + "elementGroupId": "UB-1", + "code": "1.609", + "value": 0.6, + "description": "Round-off in front of LB – tucked arabian salto over LB to hang on HB without touching the LB", + "name": null, + "image": "UB-1.609-a.webp" + }, + { + "id": "UB-1.709-a", + "elementGroupId": "UB-1", + "code": "1.709", + "value": 0.7, + "description": "Round-off in front of LB – piked arabian salto over LB to hang on HB without touching the LB", + "name": null, + "image": "UB-1.709-a.webp" + }, + { + "id": "UB-2.101-a", + "elementGroupId": "UB-2", + "code": "2.101", + "value": 0.1, + "description": "Cast to hstd with legs straddled or with hips bent", + "name": null, + "image": "UB-2.101-a.webp" + }, + { + "id": "UB-2.101-b", + "elementGroupId": "UB-2", + "code": "2.101", + "value": 0.1, + "description": "Cast to hstd with legs straddled or with hips bent, with hop-grip change", + "name": null, + "image": "UB-2.101-b.webp" + }, + { + "id": "UB-2.104-a", + "elementGroupId": "UB-2", + "code": "2.104", + "value": 0.1, + "description": "Hip circle fwd (hips touching bar)", + "name": null, + "image": "UB-2.104-a.webp" + }, + { + "id": "UB-2.105-a", + "elementGroupId": "UB-2", + "code": "2.105", + "value": 0.1, + "description": "Hip circle bwd (hips touching bar)", + "name": null, + "image": "UB-2.105-a.webp" + }, + { + "id": "UB-2.105-b", + "elementGroupId": "UB-2", + "code": "2.105", + "value": 0.1, + "description": "Clear hip circle bwd or hip circle bwd on LB – hip repulsion (“false-pop”) – with regrasp on LB", + "name": null, + "image": "UB-2.105-b.webp" + }, + { + "id": "UB-2.201-a", + "elementGroupId": "UB-2", + "code": "2.201", + "value": 0.2, + "description": "Cast to hstd with legs together and hips extended", + "name": null, + "image": "UB-2.201-a.webp" + }, + { + "id": "UB-2.201-b", + "elementGroupId": "UB-2", + "code": "2.201", + "value": 0.2, + "description": "Cast to hstd with legs together and hips extended, with hop-grip change", + "name": null, + "image": "UB-2.201-b.webp" + }, + { + "id": "UB-2.201-c", + "elementGroupId": "UB-2", + "code": "2.201", + "value": 0.2, + "description": "Cast to hstd with legs together and hips extended, with ½ turn (180°) legs together or straddled", + "name": null, + "image": "UB-2.201-c.webp" + }, + { + "id": "UB-2.202-a", + "elementGroupId": "UB-2", + "code": "2.202", + "value": 0.2, + "description": "Front support on HB – stoop with flight or free straddle fwd over HB and ½ turn (180°) to hang on HB", + "name": null, + "image": "UB-2.202-a.webp" + }, + { + "id": "UB-2.202-b", + "elementGroupId": "UB-2", + "code": "2.202", + "value": 0.2, + "description": "Front support on HB – stoop with flight or free straddle fwd over HB and ½ turn (180°) to hang on HB", + "name": null, + "image": "UB-2.202-b.webp" + }, + { + "id": "UB-2.206-a", + "elementGroupId": "UB-2", + "code": "2.206", + "value": 0.2, + "description": "Clear underswing on LB, release and counter movement fwd in flight to hang on HB.", + "name": null, + "image": "UB-2.206-a.webp" + }, + { + "id": "UB-2.301-a", + "elementGroupId": "UB-2", + "code": "2.301", + "value": 0.3, + "description": "Cast with 1/1 turn (360°) to hstd", + "name": null, + "image": "UB-2.301-a.webp" + }, + { + "id": "UB-2.302-a", + "elementGroupId": "UB-2", + "code": "2.302", + "value": 0.3, + "description": "Hip circle bwd hecht with flight and ½ turn (180°) passing over bar to hang on same bar", + "name": null, + "image": "UB-2.302-a.webp" + }, + { + "id": "UB-2.302-b", + "elementGroupId": "UB-2", + "code": "2.302", + "value": 0.3, + "description": "Clear hip circle bwd hecht with flight and ½ turn (180°) passing over bar to hang on same bar", + "name": null, + "image": "UB-2.302-b.webp" + }, + { + "id": "UB-2.303-a", + "elementGroupId": "UB-2", + "code": "2.303", + "value": 0.3, + "description": "From front support on HB – cast with release and 1/1 turn (360°) to hang on HB", + "name": "Caslavska", + "image": "UB-2.303-a.webp" + }, + { + "id": "UB-2.305-a", + "elementGroupId": "UB-2", + "code": "2.305", + "value": 0.3, + "description": "Clear hip circle to hstd", + "name": null, + "image": "UB-2.305-a.webp" + }, + { + "id": "UB-2.305-b", + "elementGroupId": "UB-2", + "code": "2.305", + "value": 0.3, + "description": "Clear hip circle to hstd, with hop-grip change in hstd phase", + "name": null, + "image": "UB-2.305-b.webp" + }, + { + "id": "UB-2.305-c", + "elementGroupId": "UB-2", + "code": "2.305", + "value": 0.3, + "description": "Clear hip circle to hstd, with ½ turn (180°) to hstd", + "name": null, + "image": "UB-2.305-c.webp" + }, + { + "id": "UB-2.306-a", + "elementGroupId": "UB-2", + "code": "2.306", + "value": 0.3, + "description": "Clear hip circle bwd on HB with hecht to clear support on LB", + "name": "Pedrick", + "image": "UB-2.306-a.webp" + }, + { + "id": "UB-2.307-a", + "elementGroupId": "UB-2", + "code": "2.307", + "value": 0.3, + "description": "Outer front support – clear hip circle bwd on LB with hecht to hang on HB", + "name": "Yarotska", + "image": "UB-2.307-a.webp" + }, + { + "id": "UB-2.401-a", + "elementGroupId": "UB-2", + "code": "2.401", + "value": 0.4, + "description": "Cast with 1½ turn (540°) to hstd", + "name": "Reeder", + "image": "UB-2.401-a.webp" + }, + { + "id": "UB-2.403-a", + "elementGroupId": "UB-2", + "code": "2.403", + "value": 0.4, + "description": "From inner front support on LB – cast with salto roll fwd to hang on HB (Radochla roll)", + "name": "Radochla", + "image": "UB-2.403-a.webp" + }, + { + "id": "UB-2.404-a", + "elementGroupId": "UB-2", + "code": "2.404", + "value": 0.4, + "description": "Clear hip circle fwd to hstd (Weiler-kip)", + "name": null, + "image": "UB-2.404-a.webp" + }, + { + "id": "UB-2.404-b", + "elementGroupId": "UB-2", + "code": "2.404", + "value": 0.4, + "description": "Clear hip circle fwd to hstd, with ½ turn (180°) in hstd phase", + "name": null, + "image": "UB-2.404-b.webp" + }, + { + "id": "UB-2.405-a", + "elementGroupId": "UB-2", + "code": "2.405", + "value": 0.4, + "description": "Clear hip circle with 1/1 turn (360°) to hstd", + "name": null, + "image": "UB-2.405-a.webp" + }, + { + "id": "UB-2.406-a", + "elementGroupId": "UB-2", + "code": "2.406", + "value": 0.4, + "description": "Inner front support on LB – clear hip circle through hstd with flight to hang on HB", + "name": "Shaposhnikova", + "image": "UB-2.406-a.webp" + }, + { + "id": "UB-2.407-a", + "elementGroupId": "UB-2", + "code": "2.407", + "value": 0.4, + "description": "Outer front support – clear hip circle bwd on LB with hecht with ½ turn (180°) to hang on HB (legs together or straddled)", + "name": null, + "image": "UB-2.407-a.webp" + }, + { + "id": "UB-2.503-a", + "elementGroupId": "UB-2", + "code": "2.503", + "value": 0.5, + "description": "Front support on HB – cast with salto fwd straddled to hang on HB (Comaneci salto)", + "name": "Comaneci", + "image": "UB-2.503-a.webp" + }, + { + "id": "UB-2.504-a", + "elementGroupId": "UB-2", + "code": "2.504", + "value": 0.5, + "description": "Clear hip circle fwd to hstd with 1/1 turn (360°) in hstd phase", + "name": "Godwin", + "image": "UB-2.504-a.webp" + }, + { + "id": "UB-2.504-b", + "elementGroupId": "UB-2", + "code": "2.504", + "value": 0.5, + "description": "Clear hip circle forward (Weiler) into salto fwd straddled to hang on HB (Comaneci salto)", + "name": "Adalsteinsdottir", + "image": "UB-2.504-b.webp" + }, + { + "id": "UB-2.505-a", + "elementGroupId": "UB-2", + "code": "2.505", + "value": 0.5, + "description": "Clear hip circle with 1½ turn (540°) to hstd", + "name": null, + "image": "UB-2.505-a.webp" + }, + { + "id": "UB-2.506-a", + "elementGroupId": "UB-2", + "code": "2.506", + "value": 0.5, + "description": "Clear hip circle on HB, counter straddle over HB to hang on HB", + "name": "Hindorff", + "image": "UB-2.506-a.webp" + }, + { + "id": "UB-2.506-b", + "elementGroupId": "UB-2", + "code": "2.506", + "value": 0.5, + "description": "Clear hip circle on HB with counter straddle over the HB with ½ turn (180°) to hang in mixed L grip", + "name": "Martins", + "image": "UB-2.506-b.webp" + }, + { + "id": "UB-2.506-c", + "elementGroupId": "UB-2", + "code": "2.506", + "value": 0.5, + "description": "Clear hip circle through hstd with ½ turn (180°) in flight to hang on HB", + "name": "Khorkina", + "image": "UB-2.506-c.webp" + }, + { + "id": "UB-2.606-a", + "elementGroupId": "UB-2", + "code": "2.606", + "value": 0.6, + "description": "Clear hip circle on HB, counter pike over HB to hang on HB", + "name": "Shang", + "image": "UB-2.606-a.webp" + }, + { + "id": "UB-2.606-b", + "elementGroupId": "UB-2", + "code": "2.606", + "value": 0.6, + "description": "Clear hip circle on HB, counter pike over HB with ½ turn (180°) to hang in mixed L grip", + "name": "Black", + "image": "UB-2.606-b.webp" + }, + { + "id": "UB-2.706-a", + "elementGroupId": "UB-2", + "code": "2.706", + "value": 0.7, + "description": "Clear hip circle on HB, with counter stretched -reverse in layout position over HB to hang", + "name": "Zhang", + "image": "UB-2.706-a.webp" + }, + { + "id": "UB-3.201-a", + "elementGroupId": "UB-3", + "code": "3.201", + "value": 0.2, + "description": "Giant circle bwd in regular grip, or on one arm", + "name": "Liu", + "image": "UB-3.201-a.webp" + }, + { + "id": "UB-3.201-b", + "elementGroupId": "UB-3", + "code": "3.201", + "value": 0.2, + "description": "Giant circle bwd in regular grip, or on one arm, with ½ turn (180°) hstd", + "name": null, + "image": "UB-3.201-b.webp" + }, + { + "id": "UB-3.206-a", + "elementGroupId": "UB-3", + "code": "3.206", + "value": 0.2, + "description": "Giant circle fwd in reverse, regular or mix grip", + "name": null, + "image": "UB-3.206-a.webp" + }, + { + "id": "UB-3.206-b", + "elementGroupId": "UB-3", + "code": "3.206", + "value": 0.2, + "description": "Giant circle fwd in reverse, regular or mix grip, with legs straddled or hips bent in upswing phase", + "name": null, + "image": "UB-3.206-b.webp" + }, + { + "id": "UB-3.206-c", + "elementGroupId": "UB-3", + "code": "3.206", + "value": 0.2, + "description": "Giant circle fwd in reverse, regular or mix grip, with ½ turn (180°) to hstd", + "name": null, + "image": "UB-3.206-c.webp" + }, + { + "id": "UB-3.301-a", + "elementGroupId": "UB-3", + "code": "3.301", + "value": 0.3, + "description": "Giant circle bwd with 1/1 turn (360°) to hstd", + "name": null, + "image": "UB-3.301-a.webp" + }, + { + "id": "UB-3.304-a", + "elementGroupId": "UB-3", + "code": "3.304", + "value": 0.3, + "description": "Hang on HB, facing LB – swing fwd and roll bwd (legs straddled) to clear support on LB", + "name": null, + "image": "UB-3.304-a.webp" + }, + { + "id": "UB-3.306-a", + "elementGroupId": "UB-3", + "code": "3.306", + "value": 0.3, + "description": "Giant circle fwd with 1/1 turn (360°) to hstd", + "name": null, + "image": "UB-3.306-a.webp" + }, + { + "id": "UB-3.307-a", + "elementGroupId": "UB-3", + "code": "3.307", + "value": 0.3, + "description": "Swing bwd – straddle flight bwd over LB to hstd on LB", + "name": null, + "image": "UB-3.307-a.webp" + }, + { + "id": "UB-3.308-a", + "elementGroupId": "UB-3", + "code": "3.308", + "value": 0.3, + "description": "Swing bwd salto fwd tucked to hang on HB (Jaeger-Salto)", + "name": null, + "image": "UB-3.308-a.webp" + }, + { + "id": "UB-3.309-a", + "elementGroupId": "UB-3", + "code": "3.309", + "value": 0.3, + "description": "Swing bwd with free stoop or straddle vault and ½ turn (180°) over HB to hang", + "name": "Zhang/Volpi", + "image": "UB-3.309-a.webp" + }, + { + "id": "UB-3.309-b", + "elementGroupId": "UB-3", + "code": "3.309", + "value": 0.3, + "description": "Swing bwd with free stoop or straddle vault and ½ turn (180°) over HB to hang", + "name": "Zhang/Volpi", + "image": "UB-3.309-b.webp" + }, + { + "id": "UB-3.310-a", + "elementGroupId": "UB-3", + "code": "3.310", + "value": 0.3, + "description": "Giant circle fwd in L grip with piked or stretched body (L grip giant)", + "name": "Zaytseva", + "image": "UB-3.310-a.webp" + }, + { + "id": "UB-3.310-b", + "elementGroupId": "UB-3", + "code": "3.310", + "value": 0.3, + "description": "Giant circle fwd in L grip with piked or stretched body (L grip giant), with ½ turn (180°) to hstd", + "name": null, + "image": "UB-3.310-b.webp" + }, + { + "id": "UB-3.401-a", + "elementGroupId": "UB-3", + "code": "3.401", + "value": 0.4, + "description": "Giant circle bwd with 1½ or 2/1 turn (540° or 720°) to hstd, also with hop 1/1 turn (360°) to hstd", + "name": "Chusovitina", + "image": "UB-3.401-a.webp" + }, + { + "id": "UB-3.401-b", + "elementGroupId": "UB-3", + "code": "3.401", + "value": 0.4, + "description": "Giant circle bwd with 1½ or 2/1 turn (540° or 720°) to hstd, also with hop 1/1 turn (360°) to hstd", + "name": "Chusovitina", + "image": "UB-3.401-b.webp" + }, + { + "id": "UB-3.401-c", + "elementGroupId": "UB-3", + "code": "3.401", + "value": 0.4, + "description": "Giant circle bwd with 1½ or 2/1 turn (540° or 720°) to hstd, also with hop 1/1 turn (360°) to hstd", + "name": "Chusovitina", + "image": "UB-3.401-c.webp" + }, + { + "id": "UB-3.402-a", + "elementGroupId": "UB-3", + "code": "3.402", + "value": 0.4, + "description": "Hang on HB – Swing fwd with ½ turn (180°) and flight to hstd on LB", + "name": null, + "image": "UB-3.402-a.webp" + }, + { + "id": "UB-3.403-a", + "elementGroupId": "UB-3", + "code": "3.403", + "value": 0.4, + "description": "Long swing fwd, counter straddle-reverse hecht over HB to hang (Tkatchev)", + "name": "Davydova", + "image": "UB-3.403-a.webp" + }, + { + "id": "UB-3.403-b", + "elementGroupId": "UB-3", + "code": "3.403", + "value": 0.4, + "description": "Tkatchev with ½ turn (180°)", + "name": "Kononenko", + "image": "UB-3.403-b.webp" + }, + { + "id": "UB-3.403-c", + "elementGroupId": "UB-3", + "code": "3.403", + "value": 0.4, + "description": "Swing fwd with ½ turn (180°), pike vault over HB to hang", + "name": "Monckton", + "image": "UB-3.403-c.webp" + }, + { + "id": "UB-3.404-a", + "elementGroupId": "UB-3", + "code": "3.404", + "value": 0.4, + "description": "Hang on HB, facing LB – swing fwd, salto bwd stretched between bars to clear support on LB", + "name": "Pak", + "image": "UB-3.404-a.webp" + }, + { + "id": "UB-3.405-a", + "elementGroupId": "UB-3", + "code": "3.405", + "value": 0.4, + "description": "Swing fwd with ½ turn (180°) and salto fwd straddled to hang on HB (Deltchev Salto)", + "name": null, + "image": "UB-3.405-a.webp" + }, + { + "id": "UB-3.405-b", + "elementGroupId": "UB-3", + "code": "3.405", + "value": 0.4, + "description": "Swing fwd with ½ turn (180°) and salto fwd straddled to hang on HB (Deltchev Salto), piked", + "name": "Moreno/Nakamura", + "image": "UB-3.405-b.webp" + }, + { + "id": "UB-3.405-c", + "elementGroupId": "UB-3", + "code": "3.405", + "value": 0.4, + "description": "Swing fwd and salto bwd piked with ½ turn (180°) to hang on HB (Gienger Salto)", + "name": null, + "image": "UB-3.405-c.webp" + }, + { + "id": "UB-3.407-a", + "elementGroupId": "UB-3", + "code": "3.407", + "value": 0.4, + "description": "Swing bwd release and ½ turn (180°) in flight between the bars to clear support on LB", + "name": "Ejova", + "image": "UB-3.407-a.webp" + }, + { + "id": "UB-3.408-a", + "elementGroupId": "UB-3", + "code": "3.408", + "value": 0.4, + "description": "Jaeger Salto straddled to hang on HB", + "name": null, + "image": "UB-3.408-a.webp" + }, + { + "id": "UB-3.408-b", + "elementGroupId": "UB-3", + "code": "3.408", + "value": 0.4, + "description": "Jaeger Salto straddled with ½ turn (180°) to hang on HB", + "name": "Li Ya", + "image": "UB-3.408-b.webp" + }, + { + "id": "UB-3.408-c", + "elementGroupId": "UB-3", + "code": "3.408", + "value": 0.4, + "description": "Jaeger Salto piked to hang on HB", + "name": null, + "image": "UB-3.408-c.webp" + }, + { + "id": "UB-3.409-a", + "elementGroupId": "UB-3", + "code": "3.409", + "value": 0.4, + "description": "Swing bwd with ½ turn (180°) and straddle flight bwd over HB to hang", + "name": "Khorkina", + "image": "UB-3.409-a.webp" + }, + { + "id": "UB-3.410-a", + "elementGroupId": "UB-3", + "code": "3.410", + "value": 0.4, + "description": "Giant circle fwd in L grip with 1/1 turn (360°) to hstd", + "name": null, + "image": "UB-3.410-a.webp" + }, + { + "id": "UB-3.502-a", + "elementGroupId": "UB-3", + "code": "3.502", + "value": 0.5, + "description": "Hang on HB – Swing fwd with 1½ turn (540°) and flight over LB to hang on LB", + "name": "Strong", + "image": "UB-3.502-a.webp" + }, + { + "id": "UB-3.503-a", + "elementGroupId": "UB-3", + "code": "3.503", + "value": 0.5, + "description": "Tkatchev piked", + "name": null, + "image": "UB-3.503-a.webp" + }, + { + "id": "UB-3.503-b", + "elementGroupId": "UB-3", + "code": "3.503", + "value": 0.5, + "description": "Long swing fwd with ½ turn (180°) - ½ turn (180°) to counter straddle in flight over HB to hang", + "name": "Shushunova", + "image": "UB-3.503-b.webp" + }, + { + "id": "UB-3.504-a", + "elementGroupId": "UB-3", + "code": "3.504", + "value": 0.5, + "description": "Pak Salto with 1/1 turn (360°)", + "name": "Bhardwaj", + "image": "UB-3.504-a.webp" + }, + { + "id": "UB-3.505-a", + "elementGroupId": "UB-3", + "code": "3.505", + "value": 0.5, + "description": "Swing fwd and salto bwd with ½ turn (180°) stretched to hang on HB", + "name": null, + "image": "UB-3.505-a.webp" + }, + { + "id": "UB-3.506-a", + "elementGroupId": "UB-3", + "code": "3.506", + "value": 0.5, + "description": "Giant circle fwd in reverse grip to hstd with initiation of 1/1 turn (360°) on one arm before hstd phase", + "name": null, + "image": "UB-3.506-a.webp" + }, + { + "id": "UB-3.506-b", + "elementGroupId": "UB-3", + "code": "3.506", + "value": 0.5, + "description": "Giant circle fwd in reverse grip with 1½ turn (540°) to hstd", + "name": null, + "image": "UB-3.506-b.webp" + }, + { + "id": "UB-3.510-a", + "elementGroupId": "UB-3", + "code": "3.510", + "value": 0.5, + "description": "Giant circle fwd in L grip with initiation of 1/1 turn (360°) on 1 arm before hstd phase, completed to hstd", + "name": null, + "image": "UB-3.510-a.webp" + }, + { + "id": "UB-3.510-b", + "elementGroupId": "UB-3", + "code": "3.510", + "value": 0.5, + "description": "Giant circle fwd in L grip with 1½ turn (540°) to hstd (any technique accepted)", + "name": null, + "image": "UB-3.510-b.webp" + }, + { + "id": "UB-3.604-a", + "elementGroupId": "UB-3", + "code": "3.604", + "value": 0.6, + "description": "Facing outward on HB - swing fwd and counter salto fwd with legs straddled to hang on HB in reverse grip", + "name": "Kim", + "image": "UB-3.604-a.webp" + }, + { + "id": "UB-3.608-a", + "elementGroupId": "UB-3", + "code": "3.608", + "value": 0.6, + "description": "Jaeger Salto stretched to hang on HB", + "name": "Capuccitti", + "image": "UB-3.608-a.webp" + }, + { + "id": "UB-3.705-a", + "elementGroupId": "UB-3", + "code": "3.705", + "value": 0.7, + "description": "Swing fwd and salto bwd stretched with 1½ turn (540°) to hang on HB", + "name": "Hristakieva", + "image": "UB-3.705-a.webp" + }, + { + "id": "UB-3.708-a", + "elementGroupId": "UB-3", + "code": "3.708", + "value": 0.7, + "description": "Swing bwd with salto fwd tucked over HB to hang on HB", + "name": "Mo", + "image": "UB-3.708-a.webp" + }, + { + "id": "UB-3.708-b", + "elementGroupId": "UB-3", + "code": "3.708", + "value": 0.7, + "description": "Jaeger Salto stretched with 1/1turn (360°), to hang on HB", + "name": "Yang", + "image": "UB-3.708-b.webp" + }, + { + "id": "UB-4.101-a", + "elementGroupId": "UB-4", + "code": "4.101", + "value": 0.1, + "description": "Clear straddle circle fwd to clear support", + "name": null, + "image": "UB-4.101-a.webp" + }, + { + "id": "UB-4.103-a", + "elementGroupId": "UB-4", + "code": "4.103", + "value": 0.1, + "description": "Clear straddle circle fwd in L grip to clear support", + "name": null, + "image": "UB-4.103-a.webp" + }, + { + "id": "UB-4.104-a", + "elementGroupId": "UB-4", + "code": "4.104", + "value": 0.1, + "description": "Clear straddle circle bwd to clear support", + "name": null, + "image": "UB-4.104-a.webp" + }, + { + "id": "UB-4.106-a", + "elementGroupId": "UB-4", + "code": "4.106", + "value": 0.1, + "description": "Rear support – seat (pike) circle fwd to rear support", + "name": null, + "image": "UB-4.106-a.webp" + }, + { + "id": "UB-4.107-a", + "elementGroupId": "UB-4", + "code": "4.107", + "value": 0.1, + "description": "Rear support – seat (pike) circle bwd to rear support", + "name": null, + "image": "UB-4.107-a.webp" + }, + { + "id": "UB-4.201-a", + "elementGroupId": "UB-4", + "code": "4.201", + "value": 0.2, + "description": "Kip on HB, passing through clear straddle support – swing/press to hstd and ½ turn (180°) in hstd phase", + "name": null, + "image": "UB-4.201-a.webp" + }, + { + "id": "UB-4.205-a", + "elementGroupId": "UB-4", + "code": "4.205", + "value": 0.2, + "description": "Facing inward – Stalder bwd with release and counter movement fwd in flight to hang on HB", + "name": null, + "image": "UB-4.205-a.webp" + }, + { + "id": "UB-4.208-a", + "elementGroupId": "UB-4", + "code": "4.208", + "value": 0.2, + "description": "Clear pike circle bwd on LB with counter flight to hang on HB", + "name": null, + "image": "UB-4.208-a.webp" + }, + { + "id": "UB-4.302-a", + "elementGroupId": "UB-4", + "code": "4.302", + "value": 0.3, + "description": "Clear straddle circle bwd on HB with flight to clear support on LB", + "name": null, + "image": "UB-4.302-a.webp" + }, + { + "id": "UB-4.304-a", + "elementGroupId": "UB-4", + "code": "4.304", + "value": 0.3, + "description": "Stalder bwd to hstd, also with hop-grip change in hstd phase or with ½ turn (180°) to hstd", + "name": null, + "image": "UB-4.304-a.webp" + }, + { + "id": "UB-4.304-b", + "elementGroupId": "UB-4", + "code": "4.304", + "value": 0.3, + "description": "Stalder bwd to hstd, also with hop-grip change in hstd phase or with ½ turn (180°) to hstd", + "name": null, + "image": "UB-4.304-b.webp" + }, + { + "id": "UB-4.304-c", + "elementGroupId": "UB-4", + "code": "4.304", + "value": 0.3, + "description": "Stalder bwd to hstd, also with hop-grip change in hstd phase or with ½ turn (180°) to hstd", + "name": null, + "image": "UB-4.304-c.webp" + }, + { + "id": "UB-4.305-a", + "elementGroupId": "UB-4", + "code": "4.305", + "value": 0.3, + "description": "Facing inward – Stalder bwd with hecht flight to hang on HB", + "name": null, + "image": "UB-4.305-a.webp" + }, + { + "id": "UB-4.308-a", + "elementGroupId": "UB-4", + "code": "4.308", + "value": 0.3, + "description": "Clear pike circle bwd on LB with hecht flight to hang on HB", + "name": "Zgoba", + "image": "UB-4.308-a.webp" + }, + { + "id": "UB-4.308-b", + "elementGroupId": "UB-4", + "code": "4.308", + "value": 0.3, + "description": "Clear pike circle bwd on HB with flight to clear support on LB", + "name": "Sayer", + "image": "UB-4.308-b.webp" + }, + { + "id": "UB-4.401-a", + "elementGroupId": "UB-4", + "code": "4.401", + "value": 0.4, + "description": "Stalder fwd to hstd", + "name": null, + "image": "UB-4.401-a.webp" + }, + { + "id": "UB-4.401-b", + "elementGroupId": "UB-4", + "code": "4.401", + "value": 0.4, + "description": "Stalder fwd to hstd, with ½ turn (180°) to hstd", + "name": null, + "image": "UB-4.401-b.webp" + }, + { + "id": "UB-4.402-a", + "elementGroupId": "UB-4", + "code": "4.402", + "value": 0.4, + "description": "Clear straddle circle bwd on HB with flight fwd to hstd on LB", + "name": null, + "image": "UB-4.402-a.webp" + }, + { + "id": "UB-4.403-a", + "elementGroupId": "UB-4", + "code": "4.403", + "value": 0.4, + "description": "Stalder fwd in L grip to hstd", + "name": "White", + "image": "UB-4.403-a.webp" + }, + { + "id": "UB-4.403-b", + "elementGroupId": "UB-4", + "code": "4.403", + "value": 0.4, + "description": "Stalder fwd in L grip to hstd, with ½ turn (180°) to hstd", + "name": "White", + "image": "UB-4.403-b.webp" + }, + { + "id": "UB-4.404-a", + "elementGroupId": "UB-4", + "code": "4.404", + "value": 0.4, + "description": "Stalder bwd with 1/1 turn (360°) to hstd", + "name": "Frederick", + "image": "UB-4.404-a.webp" + }, + { + "id": "UB-4.405-a", + "elementGroupId": "UB-4", + "code": "4.405", + "value": 0.4, + "description": "Facing outward – Stalder bwd through hstd with flight to hang on HB", + "name": null, + "image": "UB-4.405-a.webp" + }, + { + "id": "UB-4.406-a", + "elementGroupId": "UB-4", + "code": "4.406", + "value": 0.4, + "description": "Clear pike circle fwd to hstd", + "name": null, + "image": "UB-4.406-a.webp" + }, + { + "id": "UB-4.406-b", + "elementGroupId": "UB-4", + "code": "4.406", + "value": 0.4, + "description": "Clear pike circle fwd to hstd, with ½ turn (180°) to hstd", + "name": null, + "image": "UB-4.406-b.webp" + }, + { + "id": "UB-4.407-a", + "elementGroupId": "UB-4", + "code": "4.407", + "value": 0.4, + "description": "Clear pike circle bwd to hstd", + "name": null, + "image": "UB-4.407-a.webp" + }, + { + "id": "UB-4.407-b", + "elementGroupId": "UB-4", + "code": "4.407", + "value": 0.4, + "description": "Clear pike circle bwd to hstd, with ½ turn (180°) to hstd", + "name": null, + "image": "UB-4.407-b.webp" + }, + { + "id": "UB-4.501-a", + "elementGroupId": "UB-4", + "code": "4.501", + "value": 0.5, + "description": "Stalder fwd with 1/1 turn (360°) to hstd", + "name": null, + "image": "UB-4.501-a.webp" + }, + { + "id": "UB-4.502-a", + "elementGroupId": "UB-4", + "code": "4.502", + "value": 0.5, + "description": "Stalder bwd on HB with counter straddle - reverse hecht over HB to hang", + "name": "Ricna", + "image": "UB-4.502-a.webp" + }, + { + "id": "UB-4.502-b", + "elementGroupId": "UB-4", + "code": "4.502", + "value": 0.5, + "description": "Stalder bwd on HB with counter straddle reverse hecht over HB with ½ (180°) turn to hang in mixed L grip", + "name": "Derwael / Fenton", + "image": "UB-4.502-b.webp" + }, + { + "id": "UB-4.503-a", + "elementGroupId": "UB-4", + "code": "4.503", + "value": 0.5, + "description": "Stalder fwd in L grip with 1/1 turn (360°) to hstd (any technique accepted)", + "name": null, + "image": "UB-4.503-a.webp" + }, + { + "id": "UB-4.503-b", + "elementGroupId": "UB-4", + "code": "4.503", + "value": 0.5, + "description": "Stalder fwd in L grip with 1/1 turn (360°) to hstd (any technique accepted)", + "name": null, + "image": "UB-4.503-b.webp" + }, + { + "id": "UB-4.504-a", + "elementGroupId": "UB-4", + "code": "4.504", + "value": 0.5, + "description": "Stalder bwd with 1½ turn (540°) to hstd", + "name": null, + "image": "UB-4.504-a.webp" + }, + { + "id": "UB-4.505-a", + "elementGroupId": "UB-4", + "code": "4.505", + "value": 0.5, + "description": "Stalder bwd through hstd with flight and ½ turn (180°), to hang on HB", + "name": null, + "image": "UB-4.505-a.webp" + }, + { + "id": "UB-4.506-a", + "elementGroupId": "UB-4", + "code": "4.506", + "value": 0.5, + "description": "Clear pike circle fwd with 1/1 turn (360°) to hstd", + "name": null, + "image": "UB-4.506-a.webp" + }, + { + "id": "UB-4.507-a", + "elementGroupId": "UB-4", + "code": "4.507", + "value": 0.5, + "description": "Clear pike circle bwd with 1/1 turn (360°) to hstd.", + "name": null, + "image": "UB-4.507-a.webp" + }, + { + "id": "UB-4.508-a", + "elementGroupId": "UB-4", + "code": "4.508", + "value": 0.5, + "description": "Clear pike circle bwd through hstd with flight to hang on HB", + "name": "Komova", + "image": "UB-4.508-a.webp" + }, + { + "id": "UB-4.508-b", + "elementGroupId": "UB-4", + "code": "4.508", + "value": 0.5, + "description": "Clear pike circle bwd through hstd with flight to hang on HB, with ½ turn (180°)", + "name": null, + "image": "UB-4.508-b.webp" + }, + { + "id": "UB-4.508-c", + "elementGroupId": "UB-4", + "code": "4.508", + "value": 0.5, + "description": "Clear pike circle bwd with counter straddle (open hip before flight) – reverse hecht over HB to hang", + "name": "Galante", + "image": "UB-4.508-c.webp" + }, + { + "id": "UB-4.602-a", + "elementGroupId": "UB-4", + "code": "4.602", + "value": 0.6, + "description": "Stalder bwd on HB with counter pike - reverse hecht over HB to hang", + "name": "Downie", + "image": "UB-4.602-a.webp" + }, + { + "id": "UB-4.608-a", + "elementGroupId": "UB-4", + "code": "4.608", + "value": 0.6, + "description": "Clear pike circle bwd with counter pike – reverse hecht over HB to hang", + "name": null, + "image": "UB-4.608-a.webp" + }, + { + "id": "UB-4.708-a", + "elementGroupId": "UB-4", + "code": "4.708", + "value": 0.7, + "description": "Clear pike circle bwd with counter stretched - reverse hecht in layout position over HB to hang", + "name": "Nemour", + "image": "UB-4.708-a.webp" + }, + { + "id": "UB-5.101-a", + "elementGroupId": "UB-5", + "code": "5.101", + "value": 0.1, + "description": "Rear support on LB or HB – seat (pike) circle fwd with straddle cut bwd to hang on same bar", + "name": null, + "image": "UB-5.101-a.webp" + }, + { + "id": "UB-5.104-a", + "elementGroupId": "UB-5", + "code": "5.104", + "value": 0.1, + "description": "Underswing bwd (inverted pike swing), dislocate (Schleudern) to hang on HB", + "name": null, + "image": "UB-5.104-a.webp" + }, + { + "id": "UB-5.105-a", + "elementGroupId": "UB-5", + "code": "5.105", + "value": 0.1, + "description": "Sole circle forward (piked or straddle)", + "name": null, + "image": "UB-5.105-a.webp" + }, + { + "id": "UB-5.106-a", + "elementGroupId": "UB-5", + "code": "5.106", + "value": 0.1, + "description": "Sole circle forward in L grip (piked or straddle)", + "name": null, + "image": "UB-5.106-a.webp" + }, + { + "id": "UB-5.108-a", + "elementGroupId": "UB-5", + "code": "5.108", + "value": 0.1, + "description": "Sole circle bwd (piked or straddle)", + "name": null, + "image": "UB-5.108-a.webp" + }, + { + "id": "UB-5.202-a", + "elementGroupId": "UB-5", + "code": "5.202", + "value": 0.2, + "description": "Rear support on HB – seat circle bwd with release to hang on LB", + "name": null, + "image": "UB-5.202-a.webp" + }, + { + "id": "UB-5.207-a", + "elementGroupId": "UB-5", + "code": "5.207", + "value": 0.2, + "description": "Underswing on LB (support of feet) with counter movement fwd in flight to hang on HB", + "name": null, + "image": "UB-5.207-a.webp" + }, + { + "id": "UB-5.301-a", + "elementGroupId": "UB-5", + "code": "5.301", + "value": 0.3, + "description": "Outer rear support on HB – fall bwd to inverted pike swing or seat (pike) circle fwd – straddle cut bwd with flight over LB to hang", + "name": null, + "image": "UB-5.301-a.webp" + }, + { + "id": "UB-5.301-b", + "elementGroupId": "UB-5", + "code": "5.301", + "value": 0.3, + "description": "Outer rear support on HB – fall bwd to inverted pike swing or seat (pike) circle fwd – straddle cut bwd with flight over LB to hang", + "name": null, + "image": "UB-5.301-b.webp" + }, + { + "id": "UB-5.301-c", + "elementGroupId": "UB-5", + "code": "5.301", + "value": 0.3, + "description": "Rear support on LB - seat (pike) circle fwd with straddle cut bwd and grip change to hang on HB.", + "name": null, + "image": "UB-5.301-c.webp" + }, + { + "id": "UB-5.302-a", + "elementGroupId": "UB-5", + "code": "5.302", + "value": 0.3, + "description": "Clear rear pike support on HB (legs together) – full circle swing bwd to finish in clear rear support on HB", + "name": "Steinemann circle", + "image": "UB-5.302-a.webp" + }, + { + "id": "UB-5.303-a", + "elementGroupId": "UB-5", + "code": "5.303", + "value": 0.3, + "description": "Clear rear pike support (legs together) on HB – full circle swing bwd with stoop out bwd to hang on HB", + "name": "Li Li", + "image": "UB-5.303-a.webp" + }, + { + "id": "UB-5.304-a", + "elementGroupId": "UB-5", + "code": "5.304", + "value": 0.3, + "description": "Schleudern to near hstd with hop-change to regular grip on HB", + "name": null, + "image": "UB-5.304-a.webp" + }, + { + "id": "UB-5.304-b", + "elementGroupId": "UB-5", + "code": "5.304", + "value": 0.3, + "description": "Stoop trough on HB, dislocate and release with ½ (180°) turn in flight between the bars to catch LB in hang", + "name": "Alt", + "image": "UB-5.304-b.webp" + }, + { + "id": "UB-5.305-a", + "elementGroupId": "UB-5", + "code": "5.305", + "value": 0.3, + "description": "Pike sole circle fwd in reverse grip to hstd", + "name": null, + "image": "UB-5.305-a.webp" + }, + { + "id": "UB-5.305-b", + "elementGroupId": "UB-5", + "code": "5.305", + "value": 0.3, + "description": "Pike sole circle fwd in reverse grip to hstd, with ½ turn (180°) to hstd", + "name": null, + "image": "UB-5.305-b.webp" + }, + { + "id": "UB-5.306-a", + "elementGroupId": "UB-5", + "code": "5.306", + "value": 0.3, + "description": "Pike sole circle fwd in L grip to hstd", + "name": null, + "image": "UB-5.306-a.webp" + }, + { + "id": "UB-5.306-b", + "elementGroupId": "UB-5", + "code": "5.306", + "value": 0.3, + "description": "Pike sole circle fwd in L grip to hstd, with ½ turn (180°)", + "name": null, + "image": "UB-5.306-b.webp" + }, + { + "id": "UB-5.307-a", + "elementGroupId": "UB-5", + "code": "5.307", + "value": 0.3, + "description": "Underswing on HB or LB with hand release and 1½ turn (540°) to hang", + "name": "Burda", + "image": "UB-5.307-a.webp" + }, + { + "id": "UB-5.308-a", + "elementGroupId": "UB-5", + "code": "5.308", + "value": 0.3, + "description": "Pike sole circle bwd to hstd", + "name": null, + "image": "UB-5.308-a.webp" + }, + { + "id": "UB-5.308-b", + "elementGroupId": "UB-5", + "code": "5.308", + "value": 0.3, + "description": "Pike sole circle bwd to hstd, with hop-grip change to reverse grip in hstd phase", + "name": null, + "image": "UB-5.308-b.webp" + }, + { + "id": "UB-5.308-c", + "elementGroupId": "UB-5", + "code": "5.308", + "value": 0.3, + "description": "Pike sole circle bwd to hstd, with ½ turn (180°)", + "name": null, + "image": "UB-5.308-c.webp" + }, + { + "id": "UB-5.402-a", + "elementGroupId": "UB-5", + "code": "5.402", + "value": 0.4, + "description": "Clear rear pike support on HB (legs together) – full circle swing bwd – continuing through clear rear pike support bwd over HB into hang", + "name": "Mirgoradskaja", + "image": "UB-5.402-a.webp" + }, + { + "id": "UB-5.402-b", + "elementGroupId": "UB-5", + "code": "5.402", + "value": 0.4, + "description": "From hstd clear pike circle bwd to rear inverted pike support", + "name": "Krasnyanska", + "image": "UB-5.402-b.webp" + }, + { + "id": "UB-5.403-a", + "elementGroupId": "UB-5", + "code": "5.403", + "value": 0.4, + "description": "Clear rear pike support (legs together) on HB – full circle swing bwd with counter flight bwd straddled", + "name": "Li Li", + "image": "UB-5.403-a.webp" + }, + { + "id": "UB-5.404-a", + "elementGroupId": "UB-5", + "code": "5.404", + "value": 0.4, + "description": "Underswing bwd (inverted pike swing) on HB – dislocate with flight to hstd on LB", + "name": "Zuchold-Schleudern", + "image": "UB-5.404-a.webp" + }, + { + "id": "UB-5.404-b", + "elementGroupId": "UB-5", + "code": "5.404", + "value": 0.4, + "description": "Underswing bwd (inverted pike swing) on HB – dislocate with flight to hstd on LB, from stoop through etc...", + "name": null, + "image": "UB-5.404-b.webp" + }, + { + "id": "UB-5.405-a", + "elementGroupId": "UB-5", + "code": "5.405", + "value": 0.4, + "description": "Pike sole circle fwd in reverse grip with 1/1 turn (360°) to hstd", + "name": "Hoefnagel", + "image": "UB-5.405-a.webp" + }, + { + "id": "UB-5.406-a", + "elementGroupId": "UB-5", + "code": "5.406", + "value": 0.4, + "description": "Pike sole circle fwd in L grip with 1/1 turn (360°) to hstd", + "name": null, + "image": "UB-5.406-a.webp" + }, + { + "id": "UB-5.408-a", + "elementGroupId": "UB-5", + "code": "5.408", + "value": 0.4, + "description": "Pike sole circle bwd with 1/1 turn (360°) to hstd", + "name": null, + "image": "UB-5.408-a.webp" + }, + { + "id": "UB-5.408-b", + "elementGroupId": "UB-5", + "code": "5.408", + "value": 0.4, + "description": "From L grip, swing bwd ½ turn (180°), to double salto bwd piked", + "name": "Okamura", + "image": "UB-5.408-b.webp" + }, + { + "id": "UB-5.409-a", + "elementGroupId": "UB-5", + "code": "5.409", + "value": 0.4, + "description": "Inner front support on LB – pike sole circle bwd through hstd with flight to hang on HB", + "name": "Maloney", + "image": "UB-5.409-a.webp" + }, + { + "id": "UB-5.410-a", + "elementGroupId": "UB-5", + "code": "5.410", + "value": 0.4, + "description": "Pike sole circle bwd counter straddle-reverse hecht over HB to hang", + "name": "Ray", + "image": "UB-5.410-a.webp" + }, + { + "id": "UB-5.410-b", + "elementGroupId": "UB-5", + "code": "5.410", + "value": 0.4, + "description": "Pike sole circle bwd with counter straddle hecht over HB with ½ turn (180°) to hang in mixed L grip", + "name": "Tweddle", + "image": "UB-5.410-b.webp" + }, + { + "id": "UB-5.501-a", + "elementGroupId": "UB-5", + "code": "5.501", + "value": 0.5, + "description": "Stoop in to Adler-seat (pike) circle fwd through clear extended support to finish in L grip (deviation up to 30° allowed)", + "name": "Luo", + "image": "UB-5.501-a.webp" + }, + { + "id": "UB-5.501-b", + "elementGroupId": "UB-5", + "code": "5.501", + "value": 0.5, + "description": "Stoop in to Adler-seat (pike) circle fwd through clear extended support to finish in L grip (deviation up to 30° allowed), with ½ turn (180°)", + "name": null, + "image": "UB-5.501-b.webp" + }, + { + "id": "UB-5.502-a", + "elementGroupId": "UB-5", + "code": "5.502", + "value": 0.5, + "description": "Clear rear pike support on HB (legs together) circle swing bwd and continue to salto bwd stretched between bars to clear support on LB circle swing bwd and ½ turn (180°) with flight to hstd on LB", + "name": "Teza", + "image": "UB-5.502-a.webp" + }, + { + "id": "UB-5.502-b", + "elementGroupId": "UB-5", + "code": "5.502", + "value": 0.5, + "description": "Clear rear pike support on HB (legs together) circle swing bwd and continue to salto bwd stretched between bars to clear support on LB circle swing bwd and ½ turn (180°) with flight to hstd on LB", + "name": "Teza", + "image": "UB-5.502-b.webp" + }, + { + "id": "UB-5.508-a", + "elementGroupId": "UB-5", + "code": "5.508", + "value": 0.5, + "description": "Pike sole circle bwd with 1½ turn (540°) to hstd", + "name": "Lucke", + "image": "UB-5.508-a.webp" + }, + { + "id": "UB-5.509-a", + "elementGroupId": "UB-5", + "code": "5.509", + "value": 0.5, + "description": "Facing outward on LB – pike sole circle bwd through hstd with flight and ½ turn (180°) or 1/1 turn (360°) to hang on HB", + "name": "Van Leeuwen / Seitz", + "image": "UB-5.509-a.webp" + }, + { + "id": "UB-5.509-b", + "elementGroupId": "UB-5", + "code": "5.509", + "value": 0.5, + "description": "Facing outward on LB – pike sole circle bwd through hstd with flight and ½ turn (180°) or 1/1 turn (360°) to hang on HB", + "name": "Van Leeuwen / Seitz", + "image": "UB-5.509-b.webp" + }, + { + "id": "UB-5.510-a", + "elementGroupId": "UB-5", + "code": "5.510", + "value": 0.5, + "description": "Pike sole circle bwd counter pike hecht over HB to hang", + "name": "Church", + "image": "UB-5.510-a.webp" + }, + { + "id": "UB-5.510-b", + "elementGroupId": "UB-5", + "code": "5.510", + "value": 0.5, + "description": "Pike sole circle bwd with counter pike hecht over HB with ½ turn (180°) to hang in mixed L grip", + "name": "Fenton", + "image": "UB-5.510-b.webp" + }, + { + "id": "UB-5.607-a", + "elementGroupId": "UB-5", + "code": "5.607", + "value": 0.6, + "description": "Facing outward on HB – underswing with support of feet-counter salto fwd straddled to hang on HB in reverse grip", + "name": null, + "image": "UB-5.607-a.webp" + }, + { + "id": "UB-5.610-a", + "elementGroupId": "UB-5", + "code": "5.610", + "value": 0.6, + "description": "Pike sole circle bwd with counter stretched – reverse hecht in layout position over HB to hang", + "name": "Nabieva", + "image": "UB-5.610-a.webp" + }, + { + "id": "UB-5.610-b", + "elementGroupId": "UB-5", + "code": "5.610", + "value": 0.6, + "description": "Pike sole circle bwd with counter stretched – reverse hecht in layout position over HB, with ½ turn (180°) to hang in mixed L grip", + "name": "Derwael", + "image": "UB-5.610-b.webp" + }, + { + "id": "UB-6.101-a", + "elementGroupId": "UB-6", + "code": "6.101", + "value": 0.1, + "description": "From HB – underswing with ½ turn (180°) or 1/1 turn (360°) to stand", + "name": null, + "image": "UB-6.101-a.webp" + }, + { + "id": "UB-6.101-b", + "elementGroupId": "UB-6", + "code": "6.101", + "value": 0.1, + "description": "From HB – underswing with ½ turn (180°) or 1/1 turn (360°) to stand", + "name": null, + "image": "UB-6.101-b.webp" + }, + { + "id": "UB-6.102-a", + "elementGroupId": "UB-6", + "code": "6.102", + "value": 0.1, + "description": "From HB – clear underswing with ½ turn (180°) or 1/1 turn (360°) to stand", + "name": null, + "image": "UB-6.102-a.webp" + }, + { + "id": "UB-6.102-b", + "elementGroupId": "UB-6", + "code": "6.102", + "value": 0.1, + "description": "From HB – clear underswing with ½ turn (180°) or 1/1 turn (360°) to stand", + "name": null, + "image": "UB-6.102-b.webp" + }, + { + "id": "UB-6.104-a", + "elementGroupId": "UB-6", + "code": "6.104", + "value": 0.1, + "description": "Swing fwd to salto bwd tucked, piked or stretched (flyaway)", + "name": null, + "image": "UB-6.104-a.webp" + }, + { + "id": "UB-6.104-b", + "elementGroupId": "UB-6", + "code": "6.104", + "value": 0.1, + "description": "Swing fwd to salto bwd tucked, piked or stretched (flyaway)", + "name": null, + "image": "UB-6.104-b.webp" + }, + { + "id": "UB-6.104-c", + "elementGroupId": "UB-6", + "code": "6.104", + "value": 0.1, + "description": "Swing fwd to salto bwd tucked, piked or stretched (flyaway)", + "name": null, + "image": "UB-6.104-c.webp" + }, + { + "id": "UB-6.108-a", + "elementGroupId": "UB-6", + "code": "6.108", + "value": 0.1, + "description": "Swing bwd to salto fwd tucked, piked or stretched or clear straddle circle fwd on HB to salto fwd tucked", + "name": null, + "image": "UB-6.108-a.webp" + }, + { + "id": "UB-6.108-b", + "elementGroupId": "UB-6", + "code": "6.108", + "value": 0.1, + "description": "Swing bwd to salto fwd tucked, piked or stretched or clear straddle circle fwd on HB to salto fwd tucked", + "name": null, + "image": "UB-6.108-b.webp" + }, + { + "id": "UB-6.108-c", + "elementGroupId": "UB-6", + "code": "6.108", + "value": 0.1, + "description": "Swing bwd to salto fwd tucked, piked or stretched or clear straddle circle fwd on HB to salto fwd tucked", + "name": null, + "image": "UB-6.108-c.webp" + }, + { + "id": "UB-6.108-d", + "elementGroupId": "UB-6", + "code": "6.108", + "value": 0.1, + "description": "Swing bwd to salto fwd tucked, piked or stretched or clear straddle circle fwd on HB to salto fwd tucked", + "name": null, + "image": "UB-6.108-d.webp" + }, + { + "id": "UB-6.201-a", + "elementGroupId": "UB-6", + "code": "6.201", + "value": 0.2, + "description": "From HB – underswing with salto fwd tucked or piked", + "name": null, + "image": "UB-6.201-a.webp" + }, + { + "id": "UB-6.201-b", + "elementGroupId": "UB-6", + "code": "6.201", + "value": 0.2, + "description": "From HB – underswing with salto fwd tucked or piked", + "name": null, + "image": "UB-6.201-b.webp" + }, + { + "id": "UB-6.204-a", + "elementGroupId": "UB-6", + "code": "6.204", + "value": 0.2, + "description": "Swing fwd to salto bwd tucked, or stretched with ½ turn (180°) or 1/1 turn (360°) (flyaway)", + "name": null, + "image": "UB-6.204-a.webp" + }, + { + "id": "UB-6.204-b", + "elementGroupId": "UB-6", + "code": "6.204", + "value": 0.2, + "description": "Swing fwd to salto bwd tucked, or stretched with ½ turn (180°) or 1/1 turn (360°) (flyaway)", + "name": null, + "image": "UB-6.204-b.webp" + }, + { + "id": "UB-6.204-c", + "elementGroupId": "UB-6", + "code": "6.204", + "value": 0.2, + "description": "Swing fwd to salto bwd tucked, or stretched with ½ turn (180°) or 1/1 turn (360°) (flyaway)", + "name": null, + "image": "UB-6.204-c.webp" + }, + { + "id": "UB-6.204-d", + "elementGroupId": "UB-6", + "code": "6.204", + "value": 0.2, + "description": "Swing fwd to salto bwd tucked, or stretched with ½ turn (180°) or 1/1 turn (360°) (flyaway)", + "name": null, + "image": "UB-6.204-d.webp" + }, + { + "id": "UB-6.205-a", + "elementGroupId": "UB-6", + "code": "6.205", + "value": 0.2, + "description": "Swing fwd to double salto bwd tucked", + "name": null, + "image": "UB-6.205-a.webp" + }, + { + "id": "UB-6.208-a", + "elementGroupId": "UB-6", + "code": "6.208", + "value": 0.2, + "description": "Swing bwd to salto fwd tucked or stretched with ½ turn (180°) or 1/1 turn (360°)", + "name": null, + "image": "UB-6.208-a.webp" + }, + { + "id": "UB-6.208-b", + "elementGroupId": "UB-6", + "code": "6.208", + "value": 0.2, + "description": "Swing bwd to salto fwd tucked or stretched with ½ turn (180°) or 1/1 turn (360°)", + "name": null, + "image": "UB-6.208-b.webp" + }, + { + "id": "UB-6.208-c", + "elementGroupId": "UB-6", + "code": "6.208", + "value": 0.2, + "description": "Swing bwd to salto fwd tucked or stretched with ½ turn (180°) or 1/1 turn (360°)", + "name": null, + "image": "UB-6.208-c.webp" + }, + { + "id": "UB-6.208-d", + "elementGroupId": "UB-6", + "code": "6.208", + "value": 0.2, + "description": "Swing bwd to salto fwd tucked or stretched with ½ turn (180°) or 1/1 turn (360°)", + "name": null, + "image": "UB-6.208-d.webp" + }, + { + "id": "UB-6.209-a", + "elementGroupId": "UB-6", + "code": "6.209", + "value": 0.2, + "description": "Hip circle bwd (also clear) on LB or HB – hecht", + "name": null, + "image": "UB-6.209-a.webp" + }, + { + "id": "UB-6.209-b", + "elementGroupId": "UB-6", + "code": "6.209", + "value": 0.2, + "description": "Hip circle bwd (also clear) on LB or HB – hecht", + "name": null, + "image": "UB-6.209-b.webp" + }, + { + "id": "UB-6.210-a", + "elementGroupId": "UB-6", + "code": "6.210", + "value": 0.2, + "description": "On HB - salto fwd tucked", + "name": null, + "image": "UB-6.210-a.webp" + }, + { + "id": "UB-6.301-a", + "elementGroupId": "UB-6", + "code": "6.301", + "value": 0.3, + "description": "From HB – underswing with salto fwd tucked or piked with ½ turn (180°) or 1/1 turn (360°)", + "name": null, + "image": "UB-6.301-a.webp" + }, + { + "id": "UB-6.301-b", + "elementGroupId": "UB-6", + "code": "6.301", + "value": 0.3, + "description": "From HB – underswing with salto fwd tucked or piked with ½ turn (180°) or 1/1 turn (360°)", + "name": null, + "image": "UB-6.301-b.webp" + }, + { + "id": "UB-6.302-a", + "elementGroupId": "UB-6", + "code": "6.302", + "value": 0.3, + "description": "From HB – clear underswing with salto fwd tucked or piked; also with ½ turn (180°)", + "name": null, + "image": "UB-6.302-a.webp" + }, + { + "id": "UB-6.302-b", + "elementGroupId": "UB-6", + "code": "6.302", + "value": 0.3, + "description": "Clear straddle circle with salto fwd tucked also with ½ turn (180°)", + "name": "Plichta / Alt", + "image": "UB-6.302-b.webp" + }, + { + "id": "UB-6.303-a", + "elementGroupId": "UB-6", + "code": "6.303", + "value": 0.3, + "description": "From HB – underswing with ½ or clear underswing with ½ turn (180°) to salto bwd tucked or piked", + "name": "Comaneci", + "image": "UB-6.303-a.webp" + }, + { + "id": "UB-6.303-b", + "elementGroupId": "UB-6", + "code": "6.303", + "value": 0.3, + "description": "From HB – underswing with ½ or clear underswing with ½ turn (180°) to salto bwd tucked or piked", + "name": "Comaneci", + "image": "UB-6.303-b.webp" + }, + { + "id": "UB-6.303-c", + "elementGroupId": "UB-6", + "code": "6.303", + "value": 0.3, + "description": "From HB – underswing with ½ or clear underswing with ½ turn (180°) to salto bwd tucked or piked", + "name": "Comaneci", + "image": "UB-6.303-c.webp" + }, + { + "id": "UB-6.303-d", + "elementGroupId": "UB-6", + "code": "6.303", + "value": 0.3, + "description": "From HB – underswing with ½ or clear underswing with ½ turn (180°) to salto bwd tucked or piked", + "name": "Comaneci", + "image": "UB-6.303-d.webp" + }, + { + "id": "UB-6.304-a", + "elementGroupId": "UB-6", + "code": "6.304", + "value": 0.3, + "description": "Swing fwd to salto bwd stretched with 1½ turn (540°) or 2/1 turn (720°)", + "name": null, + "image": "UB-6.304-a.webp" + }, + { + "id": "UB-6.304-b", + "elementGroupId": "UB-6", + "code": "6.304", + "value": 0.3, + "description": "Swing fwd to salto bwd stretched with 1½ turn (540°) or 2/1 turn (720°)", + "name": null, + "image": "UB-6.304-b.webp" + }, + { + "id": "UB-6.305-a", + "elementGroupId": "UB-6", + "code": "6.305", + "value": 0.3, + "description": "Swing fwd to double salto bwd piked", + "name": null, + "image": "UB-6.305-a.webp" + }, + { + "id": "UB-6.308-a", + "elementGroupId": "UB-6", + "code": "6.308", + "value": 0.3, + "description": "Swing bwd to salto fwd stretched with 1½ turn (540°) or 2/1 turn (720°)", + "name": "Pechstein", + "image": "UB-6.308-a.webp" + }, + { + "id": "UB-6.308-b", + "elementGroupId": "UB-6", + "code": "6.308", + "value": 0.3, + "description": "Swing bwd to salto fwd stretched with 1½ turn (540°) or 2/1 turn (720°)", + "name": "Pechstein", + "image": "UB-6.308-b.webp" + }, + { + "id": "UB-6.308-c", + "elementGroupId": "UB-6", + "code": "6.308", + "value": 0.3, + "description": "From L grip, swing bwd, ½ (180°) turn, to double salto bwd tucked", + "name": "Fan", + "image": "UB-6.308-c.webp" + }, + { + "id": "UB-6.309-a", + "elementGroupId": "UB-6", + "code": "6.309", + "value": 0.3, + "description": "Hip circle bwd (also clear) on LB or HB – hecht with 1/1 turn (360°)", + "name": null, + "image": "UB-6.309-a.webp" + }, + { + "id": "UB-6.309-b", + "elementGroupId": "UB-6", + "code": "6.309", + "value": 0.3, + "description": "Hip circle bwd (also clear) on LB or HB – hecht with 1/1 turn (360°)", + "name": null, + "image": "UB-6.309-b.webp" + }, + { + "id": "UB-6.310-a", + "elementGroupId": "UB-6", + "code": "6.310", + "value": 0.3, + "description": "On HB – salto fwd piked or salto bwd tucked or piked", + "name": "Delladio / Parolari", + "image": "UB-6.310-a.webp" + }, + { + "id": "UB-6.310-b", + "elementGroupId": "UB-6", + "code": "6.310", + "value": 0.3, + "description": "On HB – salto fwd piked or salto bwd tucked or piked", + "name": "Delladio / Parolari", + "image": "UB-6.310-b.webp" + }, + { + "id": "UB-6.310-c", + "elementGroupId": "UB-6", + "code": "6.310", + "value": 0.3, + "description": "On HB – salto fwd piked or salto bwd tucked or piked", + "name": "Delladio / Parolari", + "image": "UB-6.310-c.webp" + }, + { + "id": "UB-6.401-a", + "elementGroupId": "UB-6", + "code": "6.401", + "value": 0.4, + "description": "From HB – underswing with salto fwd tucked with 1½ turn (540°)", + "name": null, + "image": "UB-6.401-a.webp" + }, + { + "id": "UB-6.401-b", + "elementGroupId": "UB-6", + "code": "6.401", + "value": 0.4, + "description": "From HB – underswing with salto fwd stretched with ½ turn (180°)", + "name": "Moors", + "image": "UB-6.401-b.webp" + }, + { + "id": "UB-6.402-a", + "elementGroupId": "UB-6", + "code": "6.402", + "value": 0.4, + "description": "From HB – clear underswing with salto fwd tucked with 1/1 turn (360°)", + "name": null, + "image": "UB-6.402-a.webp" + }, + { + "id": "UB-6.402-b", + "elementGroupId": "UB-6", + "code": "6.402", + "value": 0.4, + "description": "Clear pike underswing to salto forward stretched with ½ turn (180°)", + "name": "Brunner", + "image": "UB-6.402-b.webp" + }, + { + "id": "UB-6.402-c", + "elementGroupId": "UB-6", + "code": "6.402", + "value": 0.4, + "description": "From HB – clear straddle circle with salto fwd tucked with 1/1 turn (360°)", + "name": "Petz", + "image": "UB-6.402-c.webp" + }, + { + "id": "UB-6.403-a", + "elementGroupId": "UB-6", + "code": "6.403", + "value": 0.4, + "description": "From HB – underswing with ½ turn (180°) to salto bwd stretched", + "name": null, + "image": "UB-6.403-a.webp" + }, + { + "id": "UB-6.403-b", + "elementGroupId": "UB-6", + "code": "6.403", + "value": 0.4, + "description": "From HB – clear underswing with ½ turn (180°) to salto bwd stretched", + "name": "Okino", + "image": "UB-6.403-b.webp" + }, + { + "id": "UB-6.403-c", + "elementGroupId": "UB-6", + "code": "6.403", + "value": 0.4, + "description": "From HB – underswing with ½ turn (180°) to salto bwd tucked with 1/1 turn (360°)", + "name": "Kraeker", + "image": "UB-6.403-c.webp" + }, + { + "id": "UB-6.404-a", + "elementGroupId": "UB-6", + "code": "6.404", + "value": 0.4, + "description": "Swing fwd to salto bwd stretched with 2½ turn (900°)", + "name": "Ji", + "image": "UB-6.404-a.webp" + }, + { + "id": "UB-6.405-a", + "elementGroupId": "UB-6", + "code": "6.405", + "value": 0.4, + "description": "Swing fwd to double salto bwd tucked or piked with 1/1 turn (360°) in first or second salto", + "name": "Morio / Chusovitina", + "image": "UB-6.405-a.webp" + }, + { + "id": "UB-6.405-b", + "elementGroupId": "UB-6", + "code": "6.405", + "value": 0.4, + "description": "Swing fwd to double salto bwd tucked or piked with 1/1 turn (360°) in first or second salto", + "name": "Morio / Chusovitina", + "image": "UB-6.405-b.webp" + }, + { + "id": "UB-6.406-a", + "elementGroupId": "UB-6", + "code": "6.406", + "value": 0.4, + "description": "Swing fwd to double salto bwd stretched", + "name": null, + "image": "UB-6.406-a.webp" + }, + { + "id": "UB-6.407-a", + "elementGroupId": "UB-6", + "code": "6.407", + "value": 0.4, + "description": "Swing fwd to salto bwd tucked with ½ turn (180°) – into salto fwd tucked", + "name": "Fontaine", + "image": "UB-6.407-a.webp" + }, + { + "id": "UB-6.407-b", + "elementGroupId": "UB-6", + "code": "6.407", + "value": 0.4, + "description": "Swing fwd with ½ turn (180°) to double salto fwd tucked", + "name": null, + "image": "UB-6.407-b.webp" + }, + { + "id": "UB-6.408-a", + "elementGroupId": "UB-6", + "code": "6.408", + "value": 0.4, + "description": "Swing bwd to double salto fwd tucked", + "name": null, + "image": "UB-6.408-a.webp" + }, + { + "id": "UB-6.408-b", + "elementGroupId": "UB-6", + "code": "6.408", + "value": 0.4, + "description": "From L grip, swing bwd ½ turn (180°), to double salto bwd piked", + "name": "Okamura", + "image": "UB-6.408-b.webp" + }, + { + "id": "UB-6.409-a", + "elementGroupId": "UB-6", + "code": "6.409", + "value": 0.4, + "description": "Hip circle bwd (also clear) on LB or HB – hecht with salto bwd tucked", + "name": "Mukhina", + "image": "UB-6.409-a.webp" + }, + { + "id": "UB-6.409-b", + "elementGroupId": "UB-6", + "code": "6.409", + "value": 0.4, + "description": "Hip circle bwd (also clear) on LB or HB – hecht with salto bwd tucked", + "name": "Mukhina", + "image": "UB-6.409-b.webp" + }, + { + "id": "UB-6.502-a", + "elementGroupId": "UB-6", + "code": "6.502", + "value": 0.5, + "description": "From HB – clear underswing with salto fwd tucked with 1½ turn (540°)", + "name": null, + "image": "UB-6.502-a.webp" + }, + { + "id": "UB-6.504-a", + "elementGroupId": "UB-6", + "code": "6.504", + "value": 0.5, + "description": "Swing fwd to salto bwd stretched with 3/1 turn (1080°)", + "name": "Bar", + "image": "UB-6.504-a.webp" + }, + { + "id": "UB-6.505-a", + "elementGroupId": "UB-6", + "code": "6.505", + "value": 0.5, + "description": "Swing fwd to double salto bwd tucked with 1½ turn (540°)", + "name": "Mustafina", + "image": "UB-6.505-a.webp" + }, + { + "id": "UB-6.507-a", + "elementGroupId": "UB-6", + "code": "6.507", + "value": 0.5, + "description": "Swing fwd to salto bwd stretched with ½ turn (180°) – into salto fwd stretched", + "name": "Blanco", + "image": "UB-6.507-a.webp" + }, + { + "id": "UB-6.507-b", + "elementGroupId": "UB-6", + "code": "6.507", + "value": 0.5, + "description": "Swing fwd with ½ turn (180°) to double salto fwd piked", + "name": "Giovannini / Li Ya", + "image": "UB-6.507-b.webp" + }, + { + "id": "UB-6.508-a", + "elementGroupId": "UB-6", + "code": "6.508", + "value": 0.5, + "description": "Swing bwd to double salto fwd tucked with ½ turn (180°)", + "name": "Arai", + "image": "UB-6.508-a.webp" + }, + { + "id": "UB-6.508-b", + "elementGroupId": "UB-6", + "code": "6.508", + "value": 0.5, + "description": "Swing bwd to salto fwd with ½ turn (180°) into salto bwd tucked", + "name": null, + "image": "UB-6.508-b.webp" + }, + { + "id": "UB-6.508-c", + "elementGroupId": "UB-6", + "code": "6.508", + "value": 0.5, + "description": "Swing bwd to double salto fwd piked", + "name": "Stewart", + "image": "UB-6.508-c.webp" + }, + { + "id": "UB-6.509-a", + "elementGroupId": "UB-6", + "code": "6.509", + "value": 0.5, + "description": "Hip circle bwd (also clear) on LB or HB – hecht with ½ turn (180°) to salto fwd tucked", + "name": null, + "image": "UB-6.509-a.webp" + }, + { + "id": "UB-6.509-b", + "elementGroupId": "UB-6", + "code": "6.509", + "value": 0.5, + "description": "Hip circle bwd (also clear) on LB or HB – hecht with ½ turn (180°) to salto fwd tucked", + "name": null, + "image": "UB-6.509-b.webp" + }, + { + "id": "UB-6.605-a", + "elementGroupId": "UB-6", + "code": "6.605", + "value": 0.6, + "description": "Swing fwd to double salto bwd tucked with 2/1 turn (720°)", + "name": "Fabrichnova", + "image": "UB-6.605-a.webp" + }, + { + "id": "UB-6.606-a", + "elementGroupId": "UB-6", + "code": "6.606", + "value": 0.6, + "description": "Swing fwd to double salto bwd stretched with 1/1 turn (360°) in first or second salto", + "name": null, + "image": "UB-6.606-a.webp" + }, + { + "id": "UB-6.608-a", + "elementGroupId": "UB-6", + "code": "6.608", + "value": 0.6, + "description": "Swing bwd to double salto fwd piked with ½ turn (180°)", + "name": "Pentek", + "image": "UB-6.608-a.webp" + }, + { + "id": "UB-6.609-a", + "elementGroupId": "UB-6", + "code": "6.609", + "value": 0.6, + "description": "Hip circle bwd (also clear) on LB or HB – hecht with 1/1 turn (360°) to salto bwd tucked", + "name": "Ma", + "image": "UB-6.609-a.webp" + }, + { + "id": "UB-6.609-b", + "elementGroupId": "UB-6", + "code": "6.609", + "value": 0.6, + "description": "Hip circle bwd (also clear) on LB or HB – hecht with 1/1 turn (360°) to salto bwd tucked", + "name": "Ma", + "image": "UB-6.609-b.webp" + }, + { + "id": "UB-6.706-a", + "elementGroupId": "UB-6", + "code": "6.706", + "value": 0.7, + "description": "Swing fwd to double salto bwd stretched with 2/1 turn (720°)", + "name": "Ray", + "image": "UB-6.706-a.webp" + }, + { + "id": "UB-6.707-a", + "elementGroupId": "UB-6", + "code": "6.707", + "value": 0.7, + "description": "Swing fwd to triple salto bwd tucked", + "name": "Magaña", + "image": "UB-6.707-a.webp" + }, + { + "id": "BB-1.101-a", + "elementGroupId": "BB-1", + "code": "1.101", + "value": 0.1, + "description": "Leap - on landing must show arabesque position (leg min. at horizontal)", + "name": null, + "image": "BB-1.101-a.webp" + }, + { + "id": "BB-1.102-a", + "elementGroupId": "BB-1", + "code": "1.102", + "value": 0.1, + "description": "Thief vault – take-off from one leg – free leap over beam, one leg after another to rear support – 90° approach to beam, or Scissor leap over beam to cross sit on thigh – diagonal approach to beam", + "name": null, + "image": "BB-1.102-a.webp" + }, + { + "id": "BB-1.103-a", + "elementGroupId": "BB-1", + "code": "1.103", + "value": 0.1, + "description": "Flank to rear support", + "name": null, + "image": "BB-1.103-a.webp" + }, + { + "id": "BB-1.103-b", + "elementGroupId": "BB-1", + "code": "1.103", + "value": 0.1, + "description": "Flank to rear support, with ½ turn (180°)", + "name": null, + "image": "BB-1.103-b.webp" + }, + { + "id": "BB-1.103-c", + "elementGroupId": "BB-1", + "code": "1.103", + "value": 0.1, + "description": "Jump with hand support, ¾ turn (270˚) in support to cross sit on thigh", + "name": null, + "image": "BB-1.103-c.webp" + }, + { + "id": "BB-1.105-a", + "elementGroupId": "BB-1", + "code": "1.105", + "value": 0.1, + "description": "Jump with hand support to side split sit or straddle position (must show split without hands touching the beam as final position; in straddle position the trunk must touch the beam)", + "name": null, + "image": "BB-1.105-a.webp" + }, + { + "id": "BB-1.105-b", + "elementGroupId": "BB-1", + "code": "1.105", + "value": 0.1, + "description": "Jump with hand support to side split sit or straddle position (must show split without hands touching the beam as final position; in straddle position the trunk must touch the beam)", + "name": null, + "image": "BB-1.105-b.webp" + }, + { + "id": "BB-1.105-c", + "elementGroupId": "BB-1", + "code": "1.105", + "value": 0.1, + "description": "Jump or leap to cross split sit – diagonal approach to beam (with hand support)", + "name": null, + "image": "BB-1.105-c.webp" + }, + { + "id": "BB-1.106-a", + "elementGroupId": "BB-1", + "code": "1.106", + "value": 0.1, + "description": "From side stand - squat or stoop through to rear support", + "name": null, + "image": "BB-1.106-a.webp" + }, + { + "id": "BB-1.106-b", + "elementGroupId": "BB-1", + "code": "1.106", + "value": 0.1, + "description": "From side stand - squat or stoop through to rear support", + "name": null, + "image": "BB-1.106-b.webp" + }, + { + "id": "BB-1.108-a", + "elementGroupId": "BB-1", + "code": "1.108", + "value": 0.1, + "description": "Cartwheel with bending of both arms through chest stand to swing down", + "name": null, + "image": "BB-1.108-a.webp" + }, + { + "id": "BB-1.108-b", + "elementGroupId": "BB-1", + "code": "1.108", + "value": 0.1, + "description": "Stand at side of beam and jump to chest stand with both arms bent", + "name": null, + "image": "BB-1.108-b.webp" + }, + { + "id": "BB-1.111-a", + "elementGroupId": "BB-1", + "code": "1.111", + "value": 0.1, + "description": "Planche with support on one or both bent arms (2 sec.)", + "name": null, + "image": "BB-1.111-a.webp" + }, + { + "id": "BB-1.111-b", + "elementGroupId": "BB-1", + "code": "1.111", + "value": 0.1, + "description": "Planche with support on one or both bent arms (2 sec.), legs in cross split position", + "name": null, + "image": "BB-1.111-b.webp" + }, + { + "id": "BB-1.114-a", + "elementGroupId": "BB-1", + "code": "1.114", + "value": 0.1, + "description": "Jump to hstd with bent or straight legs – lower to optional end position", + "name": null, + "image": "BB-1.114-a.webp" + }, + { + "id": "BB-1.114-b", + "elementGroupId": "BB-1", + "code": "1.114", + "value": 0.1, + "description": "Jump to hstd with bent or straight legs – lower to optional end position", + "name": null, + "image": "BB-1.114-b.webp" + }, + { + "id": "BB-1.201-a", + "elementGroupId": "BB-1", + "code": "1.201", + "value": 0.2, + "description": "Split leap (180°)", + "name": null, + "image": "BB-1.201-a.webp" + }, + { + "id": "BB-1.204-a", + "elementGroupId": "BB-1", + "code": "1.204", + "value": 0.2, + "description": "Jump with ½ turn (180°) to clear straddle support, or jump bwd through straddle position over the beam to front support, or to side split – 90° approach to beam", + "name": null, + "image": "BB-1.204-a.webp" + }, + { + "id": "BB-1.204-b", + "elementGroupId": "BB-1", + "code": "1.204", + "value": 0.2, + "description": "Jump with ½ turn (180°) to clear straddle support, or jump bwd through straddle position over the beam to front support, or to side split – 90° approach to beam", + "name": null, + "image": "BB-1.204-b.webp" + }, + { + "id": "BB-1.207-a", + "elementGroupId": "BB-1", + "code": "1.207", + "value": 0.2, + "description": "Jump to roll fwd at end or middle of beam to sit position or tuck stand", + "name": null, + "image": "BB-1.207-a.webp" + }, + { + "id": "BB-1.207-b", + "elementGroupId": "BB-1", + "code": "1.207", + "value": 0.2, + "description": "Jump to clear straddle support on end of beam – swing bwd to roll fwd to sit position or tuck stand", + "name": null, + "image": "BB-1.207-b.webp" + }, + { + "id": "BB-1.208-a", + "elementGroupId": "BB-1", + "code": "1.208", + "value": 0.2, + "description": "Jump with ½ turn (180°) over shoulder to neck stand, ½ turn (180°) to chest stand", + "name": null, + "image": "BB-1.208-a.webp" + }, + { + "id": "BB-1.210-a", + "elementGroupId": "BB-1", + "code": "1.210", + "value": 0.2, + "description": "Jump, press, or swing to hstd (2 sec.) – lower to end position touching beam, also with ½ turn (180°) in hstd", + "name": null, + "image": "BB-1.210-a.webp" + }, + { + "id": "BB-1.210-b", + "elementGroupId": "BB-1", + "code": "1.210", + "value": 0.2, + "description": "Jump, press, or swing to hstd (2 sec.) – lower to end position touching beam, also with ½ turn (180°) in hstd", + "name": null, + "image": "BB-1.210-b.webp" + }, + { + "id": "BB-1.210-c", + "elementGroupId": "BB-1", + "code": "1.210", + "value": 0.2, + "description": "Jump, press, or swing to hstd (2 sec.) – lower to end position touching beam, also with ½ turn (180°) in hstd", + "name": null, + "image": "BB-1.210-c.webp" + }, + { + "id": "BB-1.211-a", + "elementGroupId": "BB-1", + "code": "1.211", + "value": 0.2, + "description": "Jump with bent hips to clear front support above horizontal minimum at 45° (planche) (2 sec.) - lower to optional end position", + "name": null, + "image": "BB-1.211-a.webp" + }, + { + "id": "BB-1.213-a", + "elementGroupId": "BB-1", + "code": "1.213", + "value": 0.2, + "description": "Press to side hstd, with bending - stretching of legs – hop with ¼ turn (90°) to cross hstd - lower to optional end position", + "name": null, + "image": "BB-1.213-a.webp" + }, + { + "id": "BB-1.214-a", + "elementGroupId": "BB-1", + "code": "1.214", + "value": 0.2, + "description": "Cartwheel on one or both arms", + "name": null, + "image": "BB-1.214-a.webp" + }, + { + "id": "BB-1.214-b", + "elementGroupId": "BB-1", + "code": "1.214", + "value": 0.2, + "description": "Cartwheel on one or both arms", + "name": null, + "image": "BB-1.214-b.webp" + }, + { + "id": "BB-1.215-a", + "elementGroupId": "BB-1", + "code": "1.215", + "value": 0.2, + "description": "Handspring fwd with hand repulsion from springboard to rear support – or with ¼ turn (90°) to cross sit on thigh – 90° approach to beam", + "name": null, + "image": "BB-1.215-a.webp" + }, + { + "id": "BB-1.215-b", + "elementGroupId": "BB-1", + "code": "1.215", + "value": 0.2, + "description": "Handspring fwd with hand repulsion from springboard to rear support – or with ¼ turn (90°) to cross sit on thigh – 90° approach to beam", + "name": null, + "image": "BB-1.215-b.webp" + }, + { + "id": "BB-1.215-c", + "elementGroupId": "BB-1", + "code": "1.215", + "value": 0.2, + "description": "Cartwheel, grasping the beam, to front support – 90° approach to beam", + "name": null, + "image": "BB-1.215-c.webp" + }, + { + "id": "BB-1.302-a", + "elementGroupId": "BB-1", + "code": "1.302", + "value": 0.3, + "description": "Straight Jump with ½ turn (180°) in flight phase to stand", + "name": null, + "image": "BB-1.302-a.webp" + }, + { + "id": "BB-1.303-a", + "elementGroupId": "BB-1", + "code": "1.303", + "value": 0.3, + "description": "Two flying flairs", + "name": null, + "image": "BB-1.303-a.webp" + }, + { + "id": "BB-1.303-b", + "elementGroupId": "BB-1", + "code": "1.303", + "value": 0.3, + "description": "Two flying flairs", + "name": null, + "image": "BB-1.303-b.webp" + }, + { + "id": "BB-1.304-a", + "elementGroupId": "BB-1", + "code": "1.304", + "value": 0.3, + "description": "Straddle pike jump bwd over beam from round-off into immediate hip circle bwd – 90° approach to beam", + "name": null, + "image": "BB-1.304-a.webp" + }, + { + "id": "BB-1.305-a", + "elementGroupId": "BB-1", + "code": "1.305", + "value": 0.3, + "description": "Free jump to cross split sit take-off from two feet – diagonal approach to beam", + "name": null, + "image": "BB-1.305-a.webp" + }, + { + "id": "BB-1.305-b", + "elementGroupId": "BB-1", + "code": "1.305", + "value": 0.3, + "description": "Change leg leap to free cross split sit – diagonal approach to beam", + "name": "Dick", + "image": "BB-1.305-b.webp" + }, + { + "id": "BB-1.308-a", + "elementGroupId": "BB-1", + "code": "1.308", + "value": 0.3, + "description": "Jump with ½ turn (180°) over shoulder to neck stand, 1/1 or 1½ turn (360° - 540˚) to neck stand", + "name": null, + "image": "BB-1.308-a.webp" + }, + { + "id": "BB-1.308-b", + "elementGroupId": "BB-1", + "code": "1.308", + "value": 0.3, + "description": "Jump with ½ turn (180°) over shoulder to neck stand, 1/1 or 1½ turn (360° - 540˚) to neck stand", + "name": null, + "image": "BB-1.308-b.webp" + }, + { + "id": "BB-1.309-a", + "elementGroupId": "BB-1", + "code": "1.309", + "value": 0.3, + "description": "From cross stand facing end of beam – head kip", + "name": null, + "image": "BB-1.309-a.webp" + }, + { + "id": "BB-1.309-b", + "elementGroupId": "BB-1", + "code": "1.309", + "value": 0.3, + "description": "From cross stand facing end of beam – jump to hstd with hip angle (pike) to front walkover", + "name": null, + "image": "BB-1.309-b.webp" + }, + { + "id": "BB-1.309-c", + "elementGroupId": "BB-1", + "code": "1.309", + "value": 0.3, + "description": "From cross stand facing end of beam – jump to hstd with hip angle (pike) to handspring fwd with step-out or land on 2 feet", + "name": null, + "image": "BB-1.309-c.webp" + }, + { + "id": "BB-1.309-d", + "elementGroupId": "BB-1", + "code": "1.309", + "value": 0.3, + "description": "From cross stand facing end of beam – jump to hstd with hip angle (pike) to handspring fwd with step-out or land on 2 feet", + "name": null, + "image": "BB-1.309-d.webp" + }, + { + "id": "BB-1.310-a", + "elementGroupId": "BB-1", + "code": "1.310", + "value": 0.3, + "description": "Jump, press, or swing to cross or side hstd with 1/1 - 1½ turn (360°- 540°) – lower to end position touching beam", + "name": null, + "image": "BB-1.310-a.webp" + }, + { + "id": "BB-1.310-b", + "elementGroupId": "BB-1", + "code": "1.310", + "value": 0.3, + "description": "Jump, press, or swing to cross or side hstd with 1/1 - 1½ turn (360°- 540°) – lower to end position touching beam", + "name": null, + "image": "BB-1.310-b.webp" + }, + { + "id": "BB-1.310-c", + "elementGroupId": "BB-1", + "code": "1.310", + "value": 0.3, + "description": "Jump, press, or swing to cross or side hstd with 1/1 - 1½ turn (360°- 540°) – lower to end position touching beam", + "name": null, + "image": "BB-1.310-c.webp" + }, + { + "id": "BB-1.311-a", + "elementGroupId": "BB-1", + "code": "1.311", + "value": 0.3, + "description": "Jump with stretched hips to planche (2 sec.)", + "name": "Shushunova", + "image": "BB-1.311-a.webp" + }, + { + "id": "BB-1.311-b", + "elementGroupId": "BB-1", + "code": "1.311", + "value": 0.3, + "description": "Jump, press, or swing to hstd – lower to planche (2 sec.), also with ½ turn (180°) in hstd", + "name": null, + "image": "BB-1.311-b.webp" + }, + { + "id": "BB-1.311-c", + "elementGroupId": "BB-1", + "code": "1.311", + "value": 0.3, + "description": "Jump, press, or swing to hstd – lower to clear pike support with legs together (2 sec.), also with ½ turn (180°) in hstd", + "name": null, + "image": "BB-1.311-c.webp" + }, + { + "id": "BB-1.311-d", + "elementGroupId": "BB-1", + "code": "1.311", + "value": 0.3, + "description": "From hstd (2 sec.) release one hand with swing down swd to rear support; also with ½ turn (180°) in hstd", + "name": "Li Yifang", + "image": "BB-1.311-d.webp" + }, + { + "id": "BB-1.312-a", + "elementGroupId": "BB-1", + "code": "1.312", + "value": 0.3, + "description": "Hstd in cross position with large arch span, also piked with one leg vertical, other leg bent (2 sec.) - lower to optional end position", + "name": null, + "image": "BB-1.312-a.webp" + }, + { + "id": "BB-1.312-b", + "elementGroupId": "BB-1", + "code": "1.312", + "value": 0.3, + "description": "Hstd with horizontal leg hold (2 sec.) – reverse planche in different variations - lower to optional end position", + "name": null, + "image": "BB-1.312-b.webp" + }, + { + "id": "BB-1.313-a", + "elementGroupId": "BB-1", + "code": "1.313", + "value": 0.3, + "description": "Jump, press, or swing to hstd shift weight to one arm hstd (2 sec.) – lower to optional end position", + "name": null, + "image": "BB-1.313-a.webp" + }, + { + "id": "BB-1.313-b", + "elementGroupId": "BB-1", + "code": "1.313", + "value": 0.3, + "description": "Jump, press, or swing to hstd shift weight to one arm hstd (2 sec.) – lower to optional end position", + "name": null, + "image": "BB-1.313-b.webp" + }, + { + "id": "BB-1.313-c", + "elementGroupId": "BB-1", + "code": "1.313", + "value": 0.3, + "description": "Jump, press, or swing to hstd shift weight to one arm hstd (2 sec.) – lower to optional end position", + "name": null, + "image": "BB-1.313-c.webp" + }, + { + "id": "BB-1.314-a", + "elementGroupId": "BB-1", + "code": "1.314", + "value": 0.3, + "description": "Jump with ¼ turn (90°) and extended hips through a momentary hstd on one arm with immediate ¼ turn (90°) and support on second arm to side hstd – lower to optional end position - 90° approach to beam", + "name": null, + "image": "BB-1.314-a.webp" + }, + { + "id": "BB-1.314-b", + "elementGroupId": "BB-1", + "code": "1.314", + "value": 0.3, + "description": "From rear stand (back towards beam), flic flac over beam to candle position, ending in front support", + "name": "Beukes", + "image": "BB-1.314-b.webp" + }, + { + "id": "BB-1.314-c", + "elementGroupId": "BB-1", + "code": "1.314", + "value": 0.3, + "description": "From rear stand (back towards beam), flic flac with ½ turn (180°) to candle position, ending in front support (grasping under the beam with both hands)", + "name": "Soares", + "image": "BB-1.314-c.webp" + }, + { + "id": "BB-1.315-a", + "elementGroupId": "BB-1", + "code": "1.315", + "value": 0.3, + "description": "Free (aerial) walkover fwd to rear support – or with ¼ turn (90°) to cross sit on thigh – 90° approach to beam", + "name": null, + "image": "BB-1.315-a.webp" + }, + { + "id": "BB-1.315-b", + "elementGroupId": "BB-1", + "code": "1.315", + "value": 0.3, + "description": "Free (aerial) walkover fwd to rear support – or with ¼ turn (90°) to cross sit on thigh – 90° approach to beam", + "name": null, + "image": "BB-1.315-b.webp" + }, + { + "id": "BB-1.317-a", + "elementGroupId": "BB-1", + "code": "1.317", + "value": 0.3, + "description": "Round-off at end of beam – flic-flac through hstd with swing down to cross straddle sit", + "name": null, + "image": "BB-1.317-a.webp" + }, + { + "id": "BB-1.401-a", + "elementGroupId": "BB-1", + "code": "1.401", + "value": 0.4, + "description": "Leap fwd with leg change (free leg swing to 45°) to cross split", + "name": null, + "image": "BB-1.401-a.webp" + }, + { + "id": "BB-1.402-a", + "elementGroupId": "BB-1", + "code": "1.402", + "value": 0.4, + "description": "Jump with 1/1 turn (360°) in flight phase to stand – approach from end or diagonal to beam", + "name": null, + "image": "BB-1.402-a.webp" + }, + { + "id": "BB-1.403-a", + "elementGroupId": "BB-1", + "code": "1.403", + "value": 0.4, + "description": "3 flying flairs", + "name": "Homma", + "image": "BB-1.403-a.webp" + }, + { + "id": "BB-1.403-b", + "elementGroupId": "BB-1", + "code": "1.403", + "value": 0.4, + "description": "Two flank circles followed by leg “Flair”", + "name": "Baitova", + "image": "BB-1.403-b.webp" + }, + { + "id": "BB-1.405-a", + "elementGroupId": "BB-1", + "code": "1.405", + "value": 0.4, + "description": "Leap with leg change and ½ turn (180)˚ away from beam to free cross split sit – diagonal approach to beam", + "name": "Dick", + "image": "BB-1.405-a.webp" + }, + { + "id": "BB-1.411-a", + "elementGroupId": "BB-1", + "code": "1.411", + "value": 0.4, + "description": "Jump, press or swing to hstd – 1/1 turn (360°) in hstd – lower to planche (2 sec.)", + "name": null, + "image": "BB-1.411-a.webp" + }, + { + "id": "BB-1.411-b", + "elementGroupId": "BB-1", + "code": "1.411", + "value": 0.4, + "description": "Jump, press or swing to hstd – 1/1 turn (360°) in hstd – lower to clear pike support with legs together (2 sec.)", + "name": null, + "image": "BB-1.411-b.webp" + }, + { + "id": "BB-1.411-c", + "elementGroupId": "BB-1", + "code": "1.411", + "value": 0.4, + "description": "Jump, press, or swing to hstd – 1/1 turn (360°) in hstd – release one hand with swing down swd to rear support", + "name": null, + "image": "BB-1.411-c.webp" + }, + { + "id": "BB-1.412-a", + "elementGroupId": "BB-1", + "code": "1.412", + "value": 0.4, + "description": "Jump or press to side hstd – walkover fwd to side stand on both legs", + "name": "Phillips", + "image": "BB-1.412-a.webp" + }, + { + "id": "BB-1.412-b", + "elementGroupId": "BB-1", + "code": "1.412", + "value": 0.4, + "description": "Jump or press to side hstd – walkover fwd to side stand on both legs", + "name": "Phillips", + "image": "BB-1.412-b.webp" + }, + { + "id": "BB-1.413-a", + "elementGroupId": "BB-1", + "code": "1.413", + "value": 0.4, + "description": "Jump or press on one arm to hstd lower to optional end position, also jump, press, or swing to hstd – shift weight to side hstd on one arm (2 sec.), lowering to clear straddle support on one arm, also with ¼ turn (90°)", + "name": "Rankin", + "image": "BB-1.413-a.webp" + }, + { + "id": "BB-1.414-a", + "elementGroupId": "BB-1", + "code": "1.414", + "value": 0.4, + "description": "Round-off in front of beam – jump with ½ twist (180°) to near side hstd – lower to optional position", + "name": "Gurova", + "image": "BB-1.414-a.webp" + }, + { + "id": "BB-1.416-a", + "elementGroupId": "BB-1", + "code": "1.416", + "value": 0.4, + "description": "Salto fwd tucked to stand – approach from end of beam", + "name": null, + "image": "BB-1.416-a.webp" + }, + { + "id": "BB-1.417-a", + "elementGroupId": "BB-1", + "code": "1.417", + "value": 0.4, + "description": "Round-off at end of beam – flic-flac through hstd – support on one or both arms – to stand", + "name": null, + "image": "BB-1.417-a.webp" + }, + { + "id": "BB-1.417-b", + "elementGroupId": "BB-1", + "code": "1.417", + "value": 0.4, + "description": "Round-off at end of beam – flic-flac with 1/1 twist (360°) into swing down to cross straddle sit", + "name": "Tsavdaridou", + "image": "BB-1.417-b.webp" + }, + { + "id": "BB-1.514-a", + "elementGroupId": "BB-1", + "code": "1.514", + "value": 0.5, + "description": "Round-off in front of beam – flic-flac with1/1 twist (360°) to hip circle bwd", + "name": "Zamolodchikova", + "image": "BB-1.514-a.webp" + }, + { + "id": "BB-1.516-a", + "elementGroupId": "BB-1", + "code": "1.516", + "value": 0.5, + "description": "Salto fwd piked to stand – approach from end of beam", + "name": null, + "image": "BB-1.516-a.webp" + }, + { + "id": "BB-1.517-a", + "elementGroupId": "BB-1", + "code": "1.517", + "value": 0.5, + "description": "Round-off at end of beam – flic-flac with ¾ twist (270˚) to stand", + "name": null, + "image": "BB-1.517-a.webp" + }, + { + "id": "BB-1.518-a", + "elementGroupId": "BB-1", + "code": "1.518", + "value": 0.5, + "description": "Round-off at end of beam – salto bwd tucked, piked or stretched with step-out to stand", + "name": null, + "image": "BB-1.518-a.webp" + }, + { + "id": "BB-1.518-b", + "elementGroupId": "BB-1", + "code": "1.518", + "value": 0.5, + "description": "Round-off at end of beam – salto bwd tucked, piked or stretched with step-out to stand", + "name": null, + "image": "BB-1.518-b.webp" + }, + { + "id": "BB-1.518-c", + "elementGroupId": "BB-1", + "code": "1.518", + "value": 0.5, + "description": "Round-off at end of beam – salto bwd tucked, piked or stretched with step-out to stand", + "name": null, + "image": "BB-1.518-c.webp" + }, + { + "id": "BB-1.609-a", + "elementGroupId": "BB-1", + "code": "1.609", + "value": 0.6, + "description": "Round-off at end of beam – flic-flac with ½ turn (180°) and walkover fwd", + "name": "Dunn", + "image": "BB-1.609-a.webp" + }, + { + "id": "BB-1.615-a", + "elementGroupId": "BB-1", + "code": "1.615", + "value": 0.6, + "description": "Aerial walkover fwd to cross stand – approach from end of beam, take off from both feet", + "name": null, + "image": "BB-1.615-a.webp" + }, + { + "id": "BB-1.616-a", + "elementGroupId": "BB-1", + "code": "1.616", + "value": 0.6, + "description": "Salto fwd tucked with ½ twist (180°)", + "name": "Wong Hiu Ying Angel", + "image": "BB-1.616-a.webp" + }, + { + "id": "BB-1.618-a", + "elementGroupId": "BB-1", + "code": "1.618", + "value": 0.6, + "description": "Round-off at end of beam – salto bwd tucked with 1/1 twist (360°) to stand", + "name": "Garrison", + "image": "BB-1.618-a.webp" + }, + { + "id": "BB-1.618-b", + "elementGroupId": "BB-1", + "code": "1.618", + "value": 0.6, + "description": "Round-off at end of beam – salto bwd stretched to stand", + "name": null, + "image": "BB-1.618-b.webp" + }, + { + "id": "BB-1.619-a", + "elementGroupId": "BB-1", + "code": "1.619", + "value": 0.6, + "description": "Jump fwd with ½ twist (180°) – salto bwd piked to stand", + "name": null, + "image": "BB-1.619-a.webp" + }, + { + "id": "BB-1.716-a", + "elementGroupId": "BB-1", + "code": "1.716", + "value": 0.7, + "description": "Round-off at end of beam – take off bwd with ½ turn (180°) – tucked salto fwd to stand", + "name": "Erceg", + "image": "BB-1.716-a.webp" + }, + { + "id": "BB-1.718-a", + "elementGroupId": "BB-1", + "code": "1.718", + "value": 0.7, + "description": "Round-off at end of beam – salto bwd stretched with 1/1 twist (360°) to stand", + "name": null, + "image": "BB-1.718-a.webp" + }, + { + "id": "BB-2.101-a", + "elementGroupId": "BB-2", + "code": "2.101", + "value": 0.1, + "description": "Split leap fwd (leg separation 180°)", + "name": null, + "image": "BB-2.101-a.webp" + }, + { + "id": "BB-2.101-b", + "elementGroupId": "BB-2", + "code": "2.101", + "value": 0.1, + "description": "Split leap fwd (leg separation 180°)", + "name": null, + "image": "BB-2.101-b.webp" + }, + { + "id": "BB-2.105-a", + "elementGroupId": "BB-2", + "code": "2.105", + "value": 0.1, + "description": "Stride leap fwd with change of legs to wolf position (hip angle at 45°)", + "name": null, + "image": "BB-2.105-a.webp" + }, + { + "id": "BB-2.107-a", + "elementGroupId": "BB-2", + "code": "2.107", + "value": 0.1, + "description": "Pike jump from cross position (legs above horizontal)", + "name": null, + "image": "BB-2.107-a.webp" + }, + { + "id": "BB-2.108-a", + "elementGroupId": "BB-2", + "code": "2.108", + "value": 0.1, + "description": "Sissone (leg separation 180° on the diagonal / 45° to the floor) take off from both feet, land on one foot", + "name": null, + "image": "BB-2.108-a.webp" + }, + { + "id": "BB-2.108-b", + "elementGroupId": "BB-2", + "code": "2.108", + "value": 0.1, + "description": "Stag jump (leg separation 180°, back leg straight or bent)", + "name": null, + "image": "BB-2.108-b.webp" + }, + { + "id": "BB-2.110-a", + "elementGroupId": "BB-2", + "code": "2.110", + "value": 0.1, + "description": "Cat leap (knees above horizontal alternately)", + "name": null, + "image": "BB-2.110-a.webp" + }, + { + "id": "BB-2.110-b", + "elementGroupId": "BB-2", + "code": "2.110", + "value": 0.1, + "description": "Scissors leap fwd", + "name": null, + "image": "BB-2.110-b.webp" + }, + { + "id": "BB-2.112-a", + "elementGroupId": "BB-2", + "code": "2.112", + "value": 0.1, + "description": "Wolf hop or jump from cross position (hip angle at 45°, knees together)", + "name": null, + "image": "BB-2.112-a.webp" + }, + { + "id": "BB-2.112-b", + "elementGroupId": "BB-2", + "code": "2.112", + "value": 0.1, + "description": "Wolf hop or jump from cross position (hip angle at 45°, knees together)", + "name": null, + "image": "BB-2.112-b.webp" + }, + { + "id": "BB-2.202-a", + "elementGroupId": "BB-2", + "code": "2.202", + "value": 0.2, + "description": "Split jump (leg separation 180°) from cross position", + "name": null, + "image": "BB-2.202-a.webp" + }, + { + "id": "BB-2.203-a", + "elementGroupId": "BB-2", + "code": "2.203", + "value": 0.2, + "description": "Straddle pike jump (both legs above horizontal)", + "name": null, + "image": "BB-2.203-a.webp" + }, + { + "id": "BB-2.203-b", + "elementGroupId": "BB-2", + "code": "2.203", + "value": 0.2, + "description": "Straddle pike jump (both legs above horizontal), side split jump from cross position", + "name": null, + "image": "BB-2.203-b.webp" + }, + { + "id": "BB-2.204-a", + "elementGroupId": "BB-2", + "code": "2.204", + "value": 0.2, + "description": "Fouetté hop with ½ turn (180°) to land in arabesque (free leg above horizontal)", + "name": null, + "image": "BB-2.204-a.webp" + }, + { + "id": "BB-2.206-a", + "elementGroupId": "BB-2", + "code": "2.206", + "value": 0.2, + "description": "Leap with ¼ turn (90°) into straddle pike position (both legs above horizontal), to land on one or both feet", + "name": null, + "image": "BB-2.206-a.webp" + }, + { + "id": "BB-2.207-a", + "elementGroupId": "BB-2", + "code": "2.207", + "value": 0.2, + "description": "Pike jump with ½ turn (180°) from cross position", + "name": null, + "image": "BB-2.207-a.webp" + }, + { + "id": "BB-2.208-a", + "elementGroupId": "BB-2", + "code": "2.208", + "value": 0.2, + "description": "Sissone to ring position (rear foot at head height, body arched and head dropped bwd, leg separation 180°) to land on one foot", + "name": null, + "image": "BB-2.208-a.webp" + }, + { + "id": "BB-2.208-b", + "elementGroupId": "BB-2", + "code": "2.208", + "value": 0.2, + "description": "Sissone to ring position (rear foot at head height, body arched and head dropped bwd, leg separation 180°) to land on one foot, stag-ring jump", + "name": null, + "image": "BB-2.208-b.webp" + }, + { + "id": "BB-2.209-a", + "elementGroupId": "BB-2", + "code": "2.209", + "value": 0.2, + "description": "Hop with ½ turn (180°) free leg extended fwd at horizontal throughout", + "name": null, + "image": "BB-2.209-a.webp" + }, + { + "id": "BB-2.209-b", + "elementGroupId": "BB-2", + "code": "2.209", + "value": 0.2, + "description": "Stretched jump or hop with 1/1turn (360°) from cross position", + "name": null, + "image": "BB-2.209-b.webp" + }, + { + "id": "BB-2.210-a", + "elementGroupId": "BB-2", + "code": "2.210", + "value": 0.2, + "description": "Cat leap with ½ turn (180°)", + "name": null, + "image": "BB-2.210-a.webp" + }, + { + "id": "BB-2.211-a", + "elementGroupId": "BB-2", + "code": "2.211", + "value": 0.2, + "description": "Tuck hop or jump with ½ turn (180°) from cross position (hip & knee angle at 45°)", + "name": null, + "image": "BB-2.211-a.webp" + }, + { + "id": "BB-2.212-a", + "elementGroupId": "BB-2", + "code": "2.212", + "value": 0.2, + "description": "Wolf hop or jump with ½ turn (180°) from cross position", + "name": null, + "image": "BB-2.212-a.webp" + }, + { + "id": "BB-2.301-a", + "elementGroupId": "BB-2", + "code": "2.301", + "value": 0.3, + "description": "Split leap fwd with ½ turn (180°)", + "name": null, + "image": "BB-2.301-a.webp" + }, + { + "id": "BB-2.302-a", + "elementGroupId": "BB-2", + "code": "2.302", + "value": 0.3, + "description": "Split jump with ½ turn (180°) from cross position", + "name": null, + "image": "BB-2.302-a.webp" + }, + { + "id": "BB-2.303-a", + "elementGroupId": "BB-2", + "code": "2.303", + "value": 0.3, + "description": "Straddle pike jump with ½ turn (180°) from cross position", + "name": null, + "image": "BB-2.303-a.webp" + }, + { + "id": "BB-2.305-a", + "elementGroupId": "BB-2", + "code": "2.305", + "value": 0.3, + "description": "Leap fwd with leg change (free leg swing to 45˚) to cross split (180° separation after leg change)", + "name": "Switch leap", + "image": "BB-2.305-a.webp" + }, + { + "id": "BB-2.306-a", + "elementGroupId": "BB-2", + "code": "2.306", + "value": 0.3, + "description": "Leap fwd with leg change and ¼ turn (90°) to side split (180°) or straddle pike position", + "name": "Johnson", + "image": "BB-2.306-a.webp" + }, + { + "id": "BB-2.306-b", + "elementGroupId": "BB-2", + "code": "2.306", + "value": 0.3, + "description": "Leap fwd with leg change and ¼ turn (90°) to side split (180°) or straddle pike position", + "name": "Johnson", + "image": "BB-2.306-b.webp" + }, + { + "id": "BB-2.308-a", + "elementGroupId": "BB-2", + "code": "2.308", + "value": 0.3, + "description": "Jump with upper back arch and head release with feet to head height/closed ring (Sheep jump)", + "name": null, + "image": "BB-2.308-a.webp" + }, + { + "id": "BB-2.310-a", + "elementGroupId": "BB-2", + "code": "2.310", + "value": 0.3, + "description": "Cat leap with 1/1 turn (360°)", + "name": null, + "image": "BB-2.310-a.webp" + }, + { + "id": "BB-2.311-a", + "elementGroupId": "BB-2", + "code": "2.311", + "value": 0.3, + "description": "Tuck hop or jump with 1/1 turn (360°) from cross position", + "name": null, + "image": "BB-2.311-a.webp" + }, + { + "id": "BB-2.402-a", + "elementGroupId": "BB-2", + "code": "2.402", + "value": 0.4, + "description": "Split jump with 1/1 turn (360°) from cross position", + "name": null, + "image": "BB-2.402-a.webp" + }, + { + "id": "BB-2.403-a", + "elementGroupId": "BB-2", + "code": "2.403", + "value": 0.4, + "description": "Straddle pike jump with 1/1 turn (360°) from cross position", + "name": null, + "image": "BB-2.403-a.webp" + }, + { + "id": "BB-2.404-a", + "elementGroupId": "BB-2", + "code": "2.404", + "value": 0.4, + "description": "Fouetté hop with leg change to cross split (leg separation 180°) (tour jeté)", + "name": null, + "image": "BB-2.404-a.webp" + }, + { + "id": "BB-2.405-a", + "elementGroupId": "BB-2", + "code": "2.405", + "value": 0.4, + "description": "Switch leap with ½ turn (180°)", + "name": null, + "image": "BB-2.405-a.webp" + }, + { + "id": "BB-2.407-a", + "elementGroupId": "BB-2", + "code": "2.407", + "value": 0.4, + "description": "Pike jump with 1/1 turn (360°) from cross position", + "name": null, + "image": "BB-2.407-a.webp" + }, + { + "id": "BB-2.408-a", + "elementGroupId": "BB-2", + "code": "2.408", + "value": 0.4, + "description": "Split jump to ring position (leg separation 180°) to land on two feet", + "name": null, + "image": "BB-2.408-a.webp" + }, + { + "id": "BB-2.408-b", + "elementGroupId": "BB-2", + "code": "2.408", + "value": 0.4, + "description": "Split ring leap (leg separation 180°)", + "name": null, + "image": "BB-2.408-b.webp" + }, + { + "id": "BB-2.408-c", + "elementGroupId": "BB-2", + "code": "2.408", + "value": 0.4, + "description": "Jump to cross over split with body arched and head dropped bwd", + "name": "Yang Bo", + "image": "BB-2.408-c.webp" + }, + { + "id": "BB-2.409-a", + "elementGroupId": "BB-2", + "code": "2.409", + "value": 0.4, + "description": "Stretched jump or hop with 1½ turn (540°) from cross position", + "name": null, + "image": "BB-2.409-a.webp" + }, + { + "id": "BB-2.411-a", + "elementGroupId": "BB-2", + "code": "2.411", + "value": 0.4, + "description": "Tuck hop or jump with 1½ turn (540°) from cross position", + "name": null, + "image": "BB-2.411-a.webp" + }, + { + "id": "BB-2.412-a", + "elementGroupId": "BB-2", + "code": "2.412", + "value": 0.4, + "description": "Wolf hop or jump with 1/1 turn (360°) from cross position", + "name": null, + "image": "BB-2.412-a.webp" + }, + { + "id": "BB-2.504-a", + "elementGroupId": "BB-2", + "code": "2.504", + "value": 0.5, + "description": "Tour jeté with additional ½ turn (180°)", + "name": null, + "image": "BB-2.504-a.webp" + }, + { + "id": "BB-2.505-a", + "elementGroupId": "BB-2", + "code": "2.505", + "value": 0.5, + "description": "Switch leap to ring position (leg separation 180°)", + "name": null, + "image": "BB-2.505-a.webp" + }, + { + "id": "BB-2.506-a", + "elementGroupId": "BB-2", + "code": "2.506", + "value": 0.5, + "description": "Johnson with additional ½ turn (180°)", + "name": null, + "image": "BB-2.506-a.webp" + }, + { + "id": "BB-2.512-a", + "elementGroupId": "BB-2", + "code": "2.512", + "value": 0.5, + "description": "Wolf hop or jump with 1½ turn (540°) from cross position", + "name": null, + "image": "BB-2.512-a.webp" + }, + { + "id": "BB-3.101-a", + "elementGroupId": "BB-3", + "code": "3.101", + "value": 0.1, + "description": "1/1 turn (360°) on one leg – free leg optional below horizontal", + "name": null, + "image": "BB-3.101-a.webp" + }, + { + "id": "BB-3.201-a", + "elementGroupId": "BB-3", + "code": "3.201", + "value": 0.2, + "description": "1½ turn (540°) on one leg – free leg optional below horizontal", + "name": null, + "image": "BB-3.201-a.webp" + }, + { + "id": "BB-3.206-a", + "elementGroupId": "BB-3", + "code": "3.206", + "value": 0.2, + "description": "½ illusion turn (180°) through standing split (180° legs separation) with/without brief touching of beam with one hand", + "name": null, + "image": "BB-3.206-a.webp" + }, + { + "id": "BB-3.207-a", + "elementGroupId": "BB-3", + "code": "3.207", + "value": 0.2, + "description": "1/1 turn (360°) in tuck stand on one leg – free leg straight throughout turn", + "name": null, + "image": "BB-3.207-a.webp" + }, + { + "id": "BB-3.208-a", + "elementGroupId": "BB-3", + "code": "3.208", + "value": 0.2, + "description": "1/1 turn or 1½ turn (360° or 540°) in prone position – alternate support of hands permitted", + "name": null, + "image": "BB-3.208-a.webp" + }, + { + "id": "BB-3.208-b", + "elementGroupId": "BB-3", + "code": "3.208", + "value": 0.2, + "description": "1/1 turn or 1½ turn (360° or 540°) in prone position – alternate support of hands permitted", + "name": null, + "image": "BB-3.208-b.webp" + }, + { + "id": "BB-3.302-a", + "elementGroupId": "BB-3", + "code": "3.302", + "value": 0.3, + "description": "1/1 turn (360°) on one leg in back attitude (thigh of free leg at horizontal, throughout turn)", + "name": null, + "image": "BB-3.302-a.webp" + }, + { + "id": "BB-3.304-a", + "elementGroupId": "BB-3", + "code": "3.304", + "value": 0.3, + "description": "1/1 turn (360°) with heel of extended free leg fwd at horizontal throughout turn (support leg may be straight or bent)", + "name": null, + "image": "BB-3.304-a.webp" + }, + { + "id": "BB-3.305-a", + "elementGroupId": "BB-3", + "code": "3.305", + "value": 0.3, + "description": "1/1 turn (360°) with free leg held upward in 180° split position throughout turn", + "name": null, + "image": "BB-3.305-a.webp" + }, + { + "id": "BB-3.307-a", + "elementGroupId": "BB-3", + "code": "3.307", + "value": 0.3, + "description": "1½ turn (540°) in tuck stand on one leg – free leg straight throughout turn", + "name": null, + "image": "BB-3.307-a.webp" + }, + { + "id": "BB-3.401-a", + "elementGroupId": "BB-3", + "code": "3.401", + "value": 0.4, + "description": "2/1 turn (720°) on one leg – free leg optional below horizontal", + "name": null, + "image": "BB-3.401-a.webp" + }, + { + "id": "BB-3.402-a", + "elementGroupId": "BB-3", + "code": "3.402", + "value": 0.4, + "description": "1½ turn (540°) on one leg in back attitude (thigh of free leg at horizontal, throughout turn)", + "name": null, + "image": "BB-3.402-a.webp" + }, + { + "id": "BB-3.403-a", + "elementGroupId": "BB-3", + "code": "3.403", + "value": 0.4, + "description": "1/1 turn (360°) with free leg held bwd with both hands", + "name": "Preziosa", + "image": "BB-3.403-a.webp" + }, + { + "id": "BB-3.404-a", + "elementGroupId": "BB-3", + "code": "3.404", + "value": 0.4, + "description": "1½ turn (540°) with heel of extended free leg fwd at horizontal throughout turn (support leg may be straight or bent)", + "name": null, + "image": "BB-3.404-a.webp" + }, + { + "id": "BB-3.405-a", + "elementGroupId": "BB-3", + "code": "3.405", + "value": 0.4, + "description": "1½ turn (540°) with free leg held upward in 180° split position throughout turn", + "name": "Galante", + "image": "BB-3.405-a.webp" + }, + { + "id": "BB-3.406-a", + "elementGroupId": "BB-3", + "code": "3.406", + "value": 0.4, + "description": "1/1 illusion turn (360°) through standing split (180° legs separation) with/without brief touching of beam with one hand", + "name": null, + "image": "BB-3.406-a.webp" + }, + { + "id": "BB-3.407-a", + "elementGroupId": "BB-3", + "code": "3.407", + "value": 0.4, + "description": "2/1 turn (720°) or 2½ turn (900°) in tuck stand on one leg – free leg straight throughout turn", + "name": "Humphrey", + "image": "BB-3.407-a.webp" + }, + { + "id": "BB-3.407-b", + "elementGroupId": "BB-3", + "code": "3.407", + "value": 0.4, + "description": "2/1 turn (720°) or 2½ turn (900°) in tuck stand on one leg – free leg straight throughout turn", + "name": "Humphrey", + "image": "BB-3.407-b.webp" + }, + { + "id": "BB-3.408-a", + "elementGroupId": "BB-3", + "code": "3.408", + "value": 0.4, + "description": "1¼ turn (450°) on back in kip position (hip-leg angle closed)", + "name": "Li Li", + "image": "BB-3.408-a.webp" + }, + { + "id": "BB-3.501-a", + "elementGroupId": "BB-3", + "code": "3.501", + "value": 0.5, + "description": "3/1 turn (1080°) on one leg – free leg optional below horizontal", + "name": "Okino", + "image": "BB-3.501-a.webp" + }, + { + "id": "BB-3.504-a", + "elementGroupId": "BB-3", + "code": "3.504", + "value": 0.5, + "description": "2/1 turn (720°) with heel of extended free leg fwd at horizontal throughout turn (support leg may be straight or bent)", + "name": "Wevers", + "image": "BB-3.504-a.webp" + }, + { + "id": "BB-3.505-a", + "elementGroupId": "BB-3", + "code": "3.505", + "value": 0.5, + "description": "2/1 turn (720°) with free leg held upward in 180° split position throughout turn", + "name": "Sugihara", + "image": "BB-3.505-a.webp" + }, + { + "id": "BB-3.507-a", + "elementGroupId": "BB-3", + "code": "3.507", + "value": 0.5, + "description": "3/1 turn (1080°) in tuck stand on one leg – free leg straight throughout turn", + "name": "Mitchell", + "image": "BB-3.507-a.webp" + }, + { + "id": "BB-4.101-a", + "elementGroupId": "BB-4", + "code": "4.101", + "value": 0.1, + "description": "From kneeling sit position, rise upward with body wave through toe-balance stand", + "name": null, + "image": "BB-4.101-a.webp" + }, + { + "id": "BB-4.102-a", + "elementGroupId": "BB-4", + "code": "4.102", + "value": 0.1, + "description": "Standing split fwd with hand support in front of support leg (leg separation 180°) – Needle scale (2 sec.) or Stand on one leg with foot of free leg in fwd hold above head (2 sec.)", + "name": null, + "image": "BB-4.102-a.webp" + }, + { + "id": "BB-4.102-b", + "elementGroupId": "BB-4", + "code": "4.102", + "value": 0.1, + "description": "Scale fwd, support leg extended (leg separation 180°) (2 sec.)", + "name": null, + "image": "BB-4.102-b.webp" + }, + { + "id": "BB-4.103-a", + "elementGroupId": "BB-4", + "code": "4.103", + "value": 0.1, + "description": "Kick to side or cross hstd (2 sec.), lower to end position touching beam", + "name": null, + "image": "BB-4.103-a.webp" + }, + { + "id": "BB-4.103-b", + "elementGroupId": "BB-4", + "code": "4.103", + "value": 0.1, + "description": "Kick to side or cross hstd (2 sec.), lower to end position touching beam", + "name": null, + "image": "BB-4.103-b.webp" + }, + { + "id": "BB-4.105-a", + "elementGroupId": "BB-4", + "code": "4.105", + "value": 0.1, + "description": "Roll bwd with hand support on top of the beam – landing on one or both feet", + "name": null, + "image": "BB-4.105-a.webp" + }, + { + "id": "BB-4.107-a", + "elementGroupId": "BB-4", + "code": "4.107", + "value": 0.1, + "description": "Cartwheel, also with support on one arm, or Cartwheel with flight phase before or after hand support", + "name": null, + "image": "BB-4.107-a.webp" + }, + { + "id": "BB-4.107-b", + "elementGroupId": "BB-4", + "code": "4.107", + "value": 0.1, + "description": "Cartwheel, also with support on one arm, or Cartwheel with flight phase before or after hand support", + "name": null, + "image": "BB-4.107-b.webp" + }, + { + "id": "BB-4.107-c", + "elementGroupId": "BB-4", + "code": "4.107", + "value": 0.1, + "description": "Cartwheel, also with support on one arm, or Cartwheel with flight phase before or after hand support", + "name": null, + "image": "BB-4.107-c.webp" + }, + { + "id": "BB-4.108-a", + "elementGroupId": "BB-4", + "code": "4.108", + "value": 0.1, + "description": "Walkover fwd, with/without alternate hand support (Tinsica)", + "name": null, + "image": "BB-4.108-a.webp" + }, + { + "id": "BB-4.108-b", + "elementGroupId": "BB-4", + "code": "4.108", + "value": 0.1, + "description": "Walkover fwd, with/without alternate hand support (Tinsica)", + "name": null, + "image": "BB-4.108-b.webp" + }, + { + "id": "BB-4.108-c", + "elementGroupId": "BB-4", + "code": "4.108", + "value": 0.1, + "description": "Walkover fwd, bwd (Tic-Toc)", + "name": null, + "image": "BB-4.108-c.webp" + }, + { + "id": "BB-4.109-a", + "elementGroupId": "BB-4", + "code": "4.109", + "value": 0.1, + "description": "Walkover bwd, with/without alternate hand support, also with swing down to cross sit", + "name": null, + "image": "BB-4.109-a.webp" + }, + { + "id": "BB-4.109-b", + "elementGroupId": "BB-4", + "code": "4.109", + "value": 0.1, + "description": "Walkover bwd, with/without alternate hand support, also with swing down to cross sit", + "name": null, + "image": "BB-4.109-b.webp" + }, + { + "id": "BB-4.109-c", + "elementGroupId": "BB-4", + "code": "4.109", + "value": 0.1, + "description": "Walkover bwd, with/without alternate hand support, also with swing down to cross sit", + "name": null, + "image": "BB-4.109-c.webp" + }, + { + "id": "BB-4.202-a", + "elementGroupId": "BB-4", + "code": "4.202", + "value": 0.2, + "description": "Clear pike support with legs together (2 sec.)", + "name": null, + "image": "BB-4.202-a.webp" + }, + { + "id": "BB-4.203-a", + "elementGroupId": "BB-4", + "code": "4.203", + "value": 0.2, + "description": "Kick to cross hstd – roll fwd with or without hand support to sit position or to tuck stand", + "name": null, + "image": "BB-4.203-a.webp" + }, + { + "id": "BB-4.204-a", + "elementGroupId": "BB-4", + "code": "4.204", + "value": 0.2, + "description": "Roll fwd without hand support to sit position or to tuck stand", + "name": null, + "image": "BB-4.204-a.webp" + }, + { + "id": "BB-4.204-b", + "elementGroupId": "BB-4", + "code": "4.204", + "value": 0.2, + "description": "From cross sit, swing bwd to shoulder roll fwd with hip extension and hand support to sit position or to tuck stand", + "name": null, + "image": "BB-4.204-b.webp" + }, + { + "id": "BB-4.206-a", + "elementGroupId": "BB-4", + "code": "4.206", + "value": 0.2, + "description": "Roll swd, body tucked, straddle or stretched through neck stand", + "name": null, + "image": "BB-4.206-a.webp" + }, + { + "id": "BB-4.206-b", + "elementGroupId": "BB-4", + "code": "4.206", + "value": 0.2, + "description": "Roll swd, body tucked, straddle or stretched through neck stand, with ½ turn (180°) over shoulder", + "name": null, + "image": "BB-4.206-b.webp" + }, + { + "id": "BB-4.207-a", + "elementGroupId": "BB-4", + "code": "4.207", + "value": 0.2, + "description": "Roll swd, piked straddle with hand support – end position optional", + "name": null, + "image": "BB-4.207-a.webp" + }, + { + "id": "BB-4.208-a", + "elementGroupId": "BB-4", + "code": "4.208", + "value": 0.2, + "description": "Walkover fwd, with support on one arm", + "name": null, + "image": "BB-4.208-a.webp" + }, + { + "id": "BB-4.209-a", + "elementGroupId": "BB-4", + "code": "4.209", + "value": 0.2, + "description": "Walkover bwd, with support on one arm", + "name": null, + "image": "BB-4.209-a.webp" + }, + { + "id": "BB-4.210-a", + "elementGroupId": "BB-4", + "code": "4.210", + "value": 0.2, + "description": "From extended tuck sit – walkover bwd (Valdez)", + "name": null, + "image": "BB-4.210-a.webp" + }, + { + "id": "BB-4.210-b", + "elementGroupId": "BB-4", + "code": "4.210", + "value": 0.2, + "description": "Kick over bwd through horizontal plane with support on one arm", + "name": "Garrison", + "image": "BB-4.210-b.webp" + }, + { + "id": "BB-4.304-a", + "elementGroupId": "BB-4", + "code": "4.304", + "value": 0.3, + "description": "Free shoulder roll fwd with hip extension and without hand support to sit position or tuck stand", + "name": null, + "image": "BB-4.304-a.webp" + }, + { + "id": "BB-4.305-a", + "elementGroupId": "BB-4", + "code": "4.305", + "value": 0.3, + "description": "Roll bwd to hstd - lower to end position touching beam", + "name": null, + "image": "BB-4.305-a.webp" + }, + { + "id": "BB-4.306-a", + "elementGroupId": "BB-4", + "code": "4.306", + "value": 0.3, + "description": "Roll swd, body stretched without hand support", + "name": null, + "image": "BB-4.306-a.webp" + }, + { + "id": "BB-4.307-a", + "elementGroupId": "BB-4", + "code": "4.307", + "value": 0.3, + "description": "From cross sit or side split – roll swd straddle or stretched without hand support – end position optional", + "name": null, + "image": "BB-4.307-a.webp" + }, + { + "id": "BB-4.308-a", + "elementGroupId": "BB-4", + "code": "4.308", + "value": 0.3, + "description": "Kick to cross hdst with ½ turn (180°) to walkover fwd", + "name": null, + "image": "BB-4.308-a.webp" + }, + { + "id": "BB-4.308-b", + "elementGroupId": "BB-4", + "code": "4.308", + "value": 0.3, + "description": "Walkover fwd in side position to side stand", + "name": null, + "image": "BB-4.308-b.webp" + }, + { + "id": "BB-4.309-a", + "elementGroupId": "BB-4", + "code": "4.309", + "value": 0.3, + "description": "Walkover bwd with ½ turn (180°) to walkover fwd", + "name": null, + "image": "BB-4.309-a.webp" + }, + { + "id": "BB-4.309-b", + "elementGroupId": "BB-4", + "code": "4.309", + "value": 0.3, + "description": "Walkover bwd in side position to side stand", + "name": null, + "image": "BB-4.309-b.webp" + }, + { + "id": "BB-4.309-c", + "elementGroupId": "BB-4", + "code": "4.309", + "value": 0.3, + "description": "Walkover bwd with stoop through of one leg to cross split sit", + "name": null, + "image": "BB-4.309-c.webp" + }, + { + "id": "BB-4.310-a", + "elementGroupId": "BB-4", + "code": "4.310", + "value": 0.3, + "description": "Valdez with 1/1 turn (360°) lower to end position touching beam", + "name": null, + "image": "BB-4.310-a.webp" + }, + { + "id": "BB-5.201-a", + "elementGroupId": "BB-5", + "code": "5.201", + "value": 0.2, + "description": "Handspring fwd with flight to land on one or both feet (same element)", + "name": null, + "image": "BB-5.201-a.webp" + }, + { + "id": "BB-5.201-b", + "elementGroupId": "BB-5", + "code": "5.201", + "value": 0.2, + "description": "Handspring fwd with flight to land on one or both feet (same element), with support on one arm", + "name": null, + "image": "BB-5.201-b.webp" + }, + { + "id": "BB-5.202-a", + "elementGroupId": "BB-5", + "code": "5.202", + "value": 0.2, + "description": "Flic-flac to land on both feet", + "name": null, + "image": "BB-5.202-a.webp" + }, + { + "id": "BB-5.204-a", + "elementGroupId": "BB-5", + "code": "5.204", + "value": 0.2, + "description": "Flic-flac with step out", + "name": null, + "image": "BB-5.204-a.webp" + }, + { + "id": "BB-5.204-b", + "elementGroupId": "BB-5", + "code": "5.204", + "value": 0.2, + "description": "Flic-flac with step out, with support on one arm", + "name": null, + "image": "BB-5.204-b.webp" + }, + { + "id": "BB-5.206-a", + "elementGroupId": "BB-5", + "code": "5.206", + "value": 0.2, + "description": "Gainer flic-flac also with support on one arm", + "name": null, + "image": "BB-5.206-a.webp" + }, + { + "id": "BB-5.206-b", + "elementGroupId": "BB-5", + "code": "5.206", + "value": 0.2, + "description": "Gainer flic-flac also with support on one arm", + "name": null, + "image": "BB-5.206-b.webp" + }, + { + "id": "BB-5.207-a", + "elementGroupId": "BB-5", + "code": "5.207", + "value": 0.2, + "description": "Flic-flac or Gainer flic-flac – with high flight phase, and swing down to cross straddle sit", + "name": null, + "image": "BB-5.207-a.webp" + }, + { + "id": "BB-5.207-b", + "elementGroupId": "BB-5", + "code": "5.207", + "value": 0.2, + "description": "Flic-flac or Gainer flic-flac – with high flight phase, and swing down to cross straddle sit", + "name": null, + "image": "BB-5.207-b.webp" + }, + { + "id": "BB-5.208-a", + "elementGroupId": "BB-5", + "code": "5.208", + "value": 0.2, + "description": "Round-off", + "name": null, + "image": "BB-5.208-a.webp" + }, + { + "id": "BB-5.301-a", + "elementGroupId": "BB-5", + "code": "5.301", + "value": 0.3, + "description": "Handspring fwd with leg change in flight phase", + "name": null, + "image": "BB-5.301-a.webp" + }, + { + "id": "BB-5.302-a", + "elementGroupId": "BB-5", + "code": "5.302", + "value": 0.3, + "description": "Flic-flac with ½ twist (180°) to hstd (2 sec.) – lower to optional end position", + "name": null, + "image": "BB-5.302-a.webp" + }, + { + "id": "BB-5.303-a", + "elementGroupId": "BB-5", + "code": "5.303", + "value": 0.3, + "description": "Flic-flac with ¼ twist (90°) to hstd (2 sec.) – lower to optional end position", + "name": null, + "image": "BB-5.303-a.webp" + }, + { + "id": "BB-5.304-a", + "elementGroupId": "BB-5", + "code": "5.304", + "value": 0.3, + "description": "Flic-flac with ½ twist (180°) after hand support", + "name": null, + "image": "BB-5.304-a.webp" + }, + { + "id": "BB-5.306-a", + "elementGroupId": "BB-5", + "code": "5.306", + "value": 0.3, + "description": "Gainer flic-flac with ¼ twist (90°) to hstd (2 sec.) – lower to optional end position", + "name": "Kitti", + "image": "BB-5.306-a.webp" + }, + { + "id": "BB-5.307-a", + "elementGroupId": "BB-5", + "code": "5.307", + "value": 0.3, + "description": "Flic-flac or Gainer flic-flac – with piking and stretching of hips in flight phase and swing down to cross straddle sit", + "name": "Rueda", + "image": "BB-5.307-a.webp" + }, + { + "id": "BB-5.307-b", + "elementGroupId": "BB-5", + "code": "5.307", + "value": 0.3, + "description": "Flic-flac or Gainer flic-flac – with piking and stretching of hips in flight phase and swing down to cross straddle sit", + "name": "Rueda", + "image": "BB-5.307-b.webp" + }, + { + "id": "BB-5.310-a", + "elementGroupId": "BB-5", + "code": "5.310", + "value": 0.3, + "description": "Salto fwd tucked, take-off from one leg to stand on one or both feet", + "name": "Liukin", + "image": "BB-5.310-a.webp" + }, + { + "id": "BB-5.312-a", + "elementGroupId": "BB-5", + "code": "5.312", + "value": 0.3, + "description": "Salto bwd tucked, piked or stretched (step out)", + "name": null, + "image": "BB-5.312-a.webp" + }, + { + "id": "BB-5.312-b", + "elementGroupId": "BB-5", + "code": "5.312", + "value": 0.3, + "description": "Salto bwd tucked, piked or stretched (step out)", + "name": null, + "image": "BB-5.312-b.webp" + }, + { + "id": "BB-5.312-c", + "elementGroupId": "BB-5", + "code": "5.312", + "value": 0.3, + "description": "Salto bwd tucked, piked or stretched (step out)", + "name": null, + "image": "BB-5.312-c.webp" + }, + { + "id": "BB-5.313-a", + "elementGroupId": "BB-5", + "code": "5.313", + "value": 0.3, + "description": "Gainer salto bwd tucked, piked or stretched step out", + "name": null, + "image": "BB-5.313-a.webp" + }, + { + "id": "BB-5.313-b", + "elementGroupId": "BB-5", + "code": "5.313", + "value": 0.3, + "description": "Gainer salto bwd tucked, piked or stretched step out", + "name": null, + "image": "BB-5.313-b.webp" + }, + { + "id": "BB-5.313-c", + "elementGroupId": "BB-5", + "code": "5.313", + "value": 0.3, + "description": "Gainer salto bwd tucked, piked or stretched step out", + "name": null, + "image": "BB-5.313-c.webp" + }, + { + "id": "BB-5.401-a", + "elementGroupId": "BB-5", + "code": "5.401", + "value": 0.4, + "description": "Jump bwd (flic-flac take-off) with ½ twist (180°) through hstd to walkover fwd", + "name": "Onodi", + "image": "BB-5.401-a.webp" + }, + { + "id": "BB-5.401-b", + "elementGroupId": "BB-5", + "code": "5.401", + "value": 0.4, + "description": "Jump bwd (flic-flac take-off) with ½ twist (180°) through hstd to walkover fwd, with support on one arm, or to tic-toc", + "name": null, + "image": "BB-5.401-b.webp" + }, + { + "id": "BB-5.402-a", + "elementGroupId": "BB-5", + "code": "5.402", + "value": 0.4, + "description": "Flic-flac from side position with ½ twist (180°) to side hstd lower to optional end position", + "name": "Kolesnikova", + "image": "BB-5.402-a.webp" + }, + { + "id": "BB-5.403-a", + "elementGroupId": "BB-5", + "code": "5.403", + "value": 0.4, + "description": "Flic-flac with twist (270°) to side hstd (2 sec.) – lower to optional end position", + "name": "Omelianchik", + "image": "BB-5.403-a.webp" + }, + { + "id": "BB-5.404-a", + "elementGroupId": "BB-5", + "code": "5.404", + "value": 0.4, + "description": "Flic-flac with min. ¾ twist (270°) before hand support", + "name": "Kochetkova", + "image": "BB-5.404-a.webp" + }, + { + "id": "BB-5.405-a", + "elementGroupId": "BB-5", + "code": "5.405", + "value": 0.4, + "description": "Flic-flac with step out from side position", + "name": "Tousek", + "image": "BB-5.405-a.webp" + }, + { + "id": "BB-5.405-b", + "elementGroupId": "BB-5", + "code": "5.405", + "value": 0.4, + "description": "Flic-flac from side position to front support or with hip circle bwd", + "name": null, + "image": "BB-5.405-b.webp" + }, + { + "id": "BB-5.405-c", + "elementGroupId": "BB-5", + "code": "5.405", + "value": 0.4, + "description": "Flic-flac from side position to front support or with hip circle bwd", + "name": null, + "image": "BB-5.405-c.webp" + }, + { + "id": "BB-5.406-a", + "elementGroupId": "BB-5", + "code": "5.406", + "value": 0.4, + "description": "Gainer flic-flac with min. ¾ twist (270°) before hand support", + "name": "Khorkina", + "image": "BB-5.406-a.webp" + }, + { + "id": "BB-5.407-a", + "elementGroupId": "BB-5", + "code": "5.407", + "value": 0.4, + "description": "Flic-flac with 1/1 twist (360°) – swing down to cross straddle sit", + "name": "Rulfova", + "image": "BB-5.407-a.webp" + }, + { + "id": "BB-5.408-a", + "elementGroupId": "BB-5", + "code": "5.408", + "value": 0.4, + "description": "Free (aerial) cartwheel – landing on one or both feet, in cross or side position", + "name": null, + "image": "BB-5.408-a.webp" + }, + { + "id": "BB-5.408-b", + "elementGroupId": "BB-5", + "code": "5.408", + "value": 0.4, + "description": "Free (aerial) cartwheel – landing on one or both feet, in cross or side position, with leg change", + "name": null, + "image": "BB-5.408-b.webp" + }, + { + "id": "BB-5.409-a", + "elementGroupId": "BB-5", + "code": "5.409", + "value": 0.4, + "description": "Free (aerial) walkover fwd, landing on one or both feet", + "name": null, + "image": "BB-5.409-a.webp" + }, + { + "id": "BB-5.409-b", + "elementGroupId": "BB-5", + "code": "5.409", + "value": 0.4, + "description": "Free (aerial) walkover fwd, landing on one or both feet", + "name": null, + "image": "BB-5.409-b.webp" + }, + { + "id": "BB-5.410-a", + "elementGroupId": "BB-5", + "code": "5.410", + "value": 0.4, + "description": "Salto fwd tucked to cross stand", + "name": null, + "image": "BB-5.410-a.webp" + }, + { + "id": "BB-5.411-a", + "elementGroupId": "BB-5", + "code": "5.411", + "value": 0.4, + "description": "Salto swd tucked take off from one leg to side stand", + "name": null, + "image": "BB-5.411-a.webp" + }, + { + "id": "BB-5.501-a", + "elementGroupId": "BB-5", + "code": "5.501", + "value": 0.5, + "description": "Jump bwd (flic-flac take-off) with ½ twist (180°) to handspring fwd to land on both feet", + "name": "Worley", + "image": "BB-5.501-a.webp" + }, + { + "id": "BB-5.505-a", + "elementGroupId": "BB-5", + "code": "5.505", + "value": 0.5, + "description": "Flic-flac from side position with 1/1 twist (360°) to hip circle bwd", + "name": "Teza", + "image": "BB-5.505-a.webp" + }, + { + "id": "BB-5.508-a", + "elementGroupId": "BB-5", + "code": "5.508", + "value": 0.5, + "description": "Free (aerial) round-off tucked or piked – take off from both feet", + "name": null, + "image": "BB-5.508-a.webp" + }, + { + "id": "BB-5.508-b", + "elementGroupId": "BB-5", + "code": "5.508", + "value": 0.5, + "description": "Free (aerial) round-off tucked or piked – take off from both feet", + "name": null, + "image": "BB-5.508-b.webp" + }, + { + "id": "BB-5.508-c", + "elementGroupId": "BB-5", + "code": "5.508", + "value": 0.5, + "description": "Free (aerial) cartwheel in side position", + "name": "Colussi", + "image": "BB-5.508-c.webp" + }, + { + "id": "BB-5.510-a", + "elementGroupId": "BB-5", + "code": "5.510", + "value": 0.5, + "description": "Salto fwd piked to cross stand", + "name": null, + "image": "BB-5.510-a.webp" + }, + { + "id": "BB-5.511-a", + "elementGroupId": "BB-5", + "code": "5.511", + "value": 0.5, + "description": "Salto swd tucked with ½ twist (180°) take off from one leg to side stand", + "name": "Schaefer", + "image": "BB-5.511-a.webp" + }, + { + "id": "BB-5.512-a", + "elementGroupId": "BB-5", + "code": "5.512", + "value": 0.5, + "description": "Salto bwd stretched with legs together", + "name": null, + "image": "BB-5.512-a.webp" + }, + { + "id": "BB-5.611-a", + "elementGroupId": "BB-5", + "code": "5.611", + "value": 0.6, + "description": "Arabian salto tucked (take-off bwd with ½ twist [180°], salto fwd)", + "name": "Lobaznyuk", + "image": "BB-5.611-a.webp" + }, + { + "id": "BB-5.612-a", + "elementGroupId": "BB-5", + "code": "5.612", + "value": 0.6, + "description": "Salto bwd tucked with 1/1 twist (360°)", + "name": "Shishova", + "image": "BB-5.612-a.webp" + }, + { + "id": "BB-5.613-a", + "elementGroupId": "BB-5", + "code": "5.613", + "value": 0.6, + "description": "Jump fwd with ½ twist (180°) – salto bwd tucked", + "name": null, + "image": "BB-5.613-a.webp" + }, + { + "id": "BB-5.613-b", + "elementGroupId": "BB-5", + "code": "5.613", + "value": 0.6, + "description": "Jump fwd with ½ twist (180°) – piked", + "name": "Produnova", + "image": "BB-5.613-b.webp" + }, + { + "id": "BB-5.712-a", + "elementGroupId": "BB-5", + "code": "5.712", + "value": 0.7, + "description": "Salto bwd stretched with 1/1 twist (360°)", + "name": "Shishova", + "image": "BB-5.712-a.webp" + }, + { + "id": "BB-6.101-a", + "elementGroupId": "BB-6", + "code": "6.101", + "value": 0.1, + "description": "Free (aerial) walkover fwd with ½ twist (180°)", + "name": null, + "image": "BB-6.101-a.webp" + }, + { + "id": "BB-6.102-a", + "elementGroupId": "BB-6", + "code": "6.102", + "value": 0.1, + "description": "Salto fwd tucked or piked", + "name": null, + "image": "BB-6.102-a.webp" + }, + { + "id": "BB-6.102-b", + "elementGroupId": "BB-6", + "code": "6.102", + "value": 0.1, + "description": "Salto fwd tucked or piked, with ½ twist (180°)", + "name": null, + "image": "BB-6.102-b.webp" + }, + { + "id": "BB-6.104-a", + "elementGroupId": "BB-6", + "code": "6.104", + "value": 0.1, + "description": "Salto bwd tucked, piked, or stretched", + "name": null, + "image": "BB-6.104-a.webp" + }, + { + "id": "BB-6.104-b", + "elementGroupId": "BB-6", + "code": "6.104", + "value": 0.1, + "description": "Salto bwd tucked, piked, or stretched, with ½ twist (180°) (tucked or stretched)", + "name": null, + "image": "BB-6.104-b.webp" + }, + { + "id": "BB-6.106-a", + "elementGroupId": "BB-6", + "code": "6.106", + "value": 0.1, + "description": "Gainer salto tucked, piked, or stretched to side of beam", + "name": null, + "image": "BB-6.106-a.webp" + }, + { + "id": "BB-6.106-b", + "elementGroupId": "BB-6", + "code": "6.106", + "value": 0.1, + "description": "Gainer salto tucked, piked, or stretched to side of beam, with ½ twist (180°) (tucked or stretched)", + "name": null, + "image": "BB-6.106-b.webp" + }, + { + "id": "BB-6.201-a", + "elementGroupId": "BB-6", + "code": "6.201", + "value": 0.2, + "description": "Free (aerial) walkover fwd with 1/1 twist (360°)", + "name": null, + "image": "BB-6.201-a.webp" + }, + { + "id": "BB-6.201-b", + "elementGroupId": "BB-6", + "code": "6.201", + "value": 0.2, + "description": "Free (aerial) cartwheel with ½ twist (180°)", + "name": null, + "image": "BB-6.201-b.webp" + }, + { + "id": "BB-6.202-a", + "elementGroupId": "BB-6", + "code": "6.202", + "value": 0.2, + "description": "Salto fwd stretched, also with ½ twist (180°)", + "name": null, + "image": "BB-6.202-a.webp" + }, + { + "id": "BB-6.202-b", + "elementGroupId": "BB-6", + "code": "6.202", + "value": 0.2, + "description": "Salto fwd tucked with 1/1 twist (360°)", + "name": null, + "image": "BB-6.202-b.webp" + }, + { + "id": "BB-6.203-a", + "elementGroupId": "BB-6", + "code": "6.203", + "value": 0.2, + "description": "Jump bwd, with ½ twist (180°), salto fwd tucked or piked", + "name": "Arabian salto", + "image": "BB-6.203-a.webp" + }, + { + "id": "BB-6.204-a", + "elementGroupId": "BB-6", + "code": "6.204", + "value": 0.2, + "description": "Salto bwd tucked or stretched with 1/1 twist (360°)", + "name": null, + "image": "BB-6.204-a.webp" + }, + { + "id": "BB-6.204-b", + "elementGroupId": "BB-6", + "code": "6.204", + "value": 0.2, + "description": "Salto bwd tucked or stretched with 1/1 twist (360°)", + "name": null, + "image": "BB-6.204-b.webp" + }, + { + "id": "BB-6.206-a", + "elementGroupId": "BB-6", + "code": "6.206", + "value": 0.2, + "description": "Gainer salto tucked or stretched with 1/1 twist (360°) to side of beam", + "name": null, + "image": "BB-6.206-a.webp" + }, + { + "id": "BB-6.206-b", + "elementGroupId": "BB-6", + "code": "6.206", + "value": 0.2, + "description": "Gainer salto tucked or stretched with 1/1 twist (360°) to side of beam", + "name": null, + "image": "BB-6.206-b.webp" + }, + { + "id": "BB-6.207-a", + "elementGroupId": "BB-6", + "code": "6.207", + "value": 0.2, + "description": "Gainer salto tucked or piked at end of beam", + "name": null, + "image": "BB-6.207-a.webp" + }, + { + "id": "BB-6.207-b", + "elementGroupId": "BB-6", + "code": "6.207", + "value": 0.2, + "description": "Gainer salto tucked or piked at end of beam", + "name": null, + "image": "BB-6.207-b.webp" + }, + { + "id": "BB-6.301-a", + "elementGroupId": "BB-6", + "code": "6.301", + "value": 0.3, + "description": "Free (aerial) walkover fwd with 1½ twist (540°)", + "name": null, + "image": "BB-6.301-a.webp" + }, + { + "id": "BB-6.302-a", + "elementGroupId": "BB-6", + "code": "6.302", + "value": 0.3, + "description": "Salto fwd stretched with 1/1 twist (360°) or 1½ twist (540°)", + "name": null, + "image": "BB-6.302-a.webp" + }, + { + "id": "BB-6.302-b", + "elementGroupId": "BB-6", + "code": "6.302", + "value": 0.3, + "description": "Salto fwd stretched with 1/1 twist (360°) or 1½ twist (540°)", + "name": null, + "image": "BB-6.302-b.webp" + }, + { + "id": "BB-6.303-a", + "elementGroupId": "BB-6", + "code": "6.303", + "value": 0.3, + "description": "Stretched jump fwd with 1/1 twist (360°) and salto fwd tucked or piked", + "name": null, + "image": "BB-6.303-a.webp" + }, + { + "id": "BB-6.304-a", + "elementGroupId": "BB-6", + "code": "6.304", + "value": 0.3, + "description": "Salto bwd tucked or stretched with 1½ twist (540°)", + "name": "Domingues", + "image": "BB-6.304-a.webp" + }, + { + "id": "BB-6.304-b", + "elementGroupId": "BB-6", + "code": "6.304", + "value": 0.3, + "description": "Salto bwd stretched with 2/1 twist (720°)", + "name": null, + "image": "BB-6.304-b.webp" + }, + { + "id": "BB-6.306-a", + "elementGroupId": "BB-6", + "code": "6.306", + "value": 0.3, + "description": "Gainer salto bwd tucked or stretched with 1½ twist (540˚) or 2/1 twist (720°) to side of beam", + "name": "Bohmerova", + "image": "BB-6.306-a.webp" + }, + { + "id": "BB-6.306-b", + "elementGroupId": "BB-6", + "code": "6.306", + "value": 0.3, + "description": "Gainer salto bwd tucked or stretched with 1½ twist (540˚) or 2/1 twist (720°) to side of beam", + "name": "Bohmerova", + "image": "BB-6.306-b.webp" + }, + { + "id": "BB-6.307-a", + "elementGroupId": "BB-6", + "code": "6.307", + "value": 0.3, + "description": "Gainer salto stretched with legs together at end of beam", + "name": null, + "image": "BB-6.307-a.webp" + }, + { + "id": "BB-6.307-b", + "elementGroupId": "BB-6", + "code": "6.307", + "value": 0.3, + "description": "Gainer salto tucked with 1/1 twist (360°) at end of beam", + "name": "Kim", + "image": "BB-6.307-b.webp" + }, + { + "id": "BB-6.402-a", + "elementGroupId": "BB-6", + "code": "6.402", + "value": 0.4, + "description": "Salto fwd stretched with 2/1 twist (720°)", + "name": "Araujo", + "image": "BB-6.402-a.webp" + }, + { + "id": "BB-6.403-a", + "elementGroupId": "BB-6", + "code": "6.403", + "value": 0.4, + "description": "Stretched jump fwd with 1/1 twist (360°) and salto fwd stretched", + "name": null, + "image": "BB-6.403-a.webp" + }, + { + "id": "BB-6.404-a", + "elementGroupId": "BB-6", + "code": "6.404", + "value": 0.4, + "description": "Salto bwd stretched with 2½ twist (900°)", + "name": null, + "image": "BB-6.404-a.webp" + }, + { + "id": "BB-6.405-a", + "elementGroupId": "BB-6", + "code": "6.405", + "value": 0.4, + "description": "Double salto bwd tucked", + "name": null, + "image": "BB-6.405-a.webp" + }, + { + "id": "BB-6.406-a", + "elementGroupId": "BB-6", + "code": "6.406", + "value": 0.4, + "description": "Gainer salto bwd stretched with 2½ twist (900°)", + "name": "Khorkina", + "image": "BB-6.406-a.webp" + }, + { + "id": "BB-6.407-a", + "elementGroupId": "BB-6", + "code": "6.407", + "value": 0.4, + "description": "Gainer salto stretched with 1/1 twist (360°) at end of beam", + "name": "Steingruber", + "image": "BB-6.407-a.webp" + }, + { + "id": "BB-6.407-b", + "elementGroupId": "BB-6", + "code": "6.407", + "value": 0.4, + "description": "Gainer salto tucked with 1½ twist (540°) at end of beam", + "name": "Olafsdottir", + "image": "BB-6.407-b.webp" + }, + { + "id": "BB-6.501-a", + "elementGroupId": "BB-6", + "code": "6.501", + "value": 0.5, + "description": "Free (aerial) cartwheel into salto bwd tucked", + "name": "Kim", + "image": "BB-6.501-a.webp" + }, + { + "id": "BB-6.505-a", + "elementGroupId": "BB-6", + "code": "6.505", + "value": 0.5, + "description": "Double salto bwd piked", + "name": null, + "image": "BB-6.505-a.webp" + }, + { + "id": "BB-6.507-a", + "elementGroupId": "BB-6", + "code": "6.507", + "value": 0.5, + "description": "Gainer salto stretched with 2/1 twist (720°) at end of beam", + "name": "Jurkowska-Kowalska", + "image": "BB-6.507-a.webp" + }, + { + "id": "BB-6.602-a", + "elementGroupId": "BB-6", + "code": "6.602", + "value": 0.6, + "description": "Double salto fwd tucked", + "name": null, + "image": "BB-6.602-a.webp" + }, + { + "id": "BB-6.604-a", + "elementGroupId": "BB-6", + "code": "6.604", + "value": 0.6, + "description": "Salto bwd stretched with 3/1 twist (1080°)", + "name": null, + "image": "BB-6.604-a.webp" + }, + { + "id": "BB-6.606-a", + "elementGroupId": "BB-6", + "code": "6.606", + "value": 0.6, + "description": "Gainer salto bwd stretched with 3/1 twist (1080°) to side of beam", + "name": null, + "image": "BB-6.606-a.webp" + }, + { + "id": "BB-6.703-a", + "elementGroupId": "BB-6", + "code": "6.703", + "value": 0.7, + "description": "Arabian double salto fwd tucked", + "name": "Patterson", + "image": "BB-6.703-a.webp" + }, + { + "id": "BB-6.705-a", + "elementGroupId": "BB-6", + "code": "6.705", + "value": 0.7, + "description": "Double salto bwd tucked or piked with 1/1 twist (360°)", + "name": null, + "image": "BB-6.705-a.webp" + }, + { + "id": "BB-6.705-b", + "elementGroupId": "BB-6", + "code": "6.705", + "value": 0.7, + "description": "Double salto bwd tucked or piked with 1/1 twist (360°)", + "name": null, + "image": "BB-6.705-b.webp" + }, + { + "id": "BB-6.805-a", + "elementGroupId": "BB-6", + "code": "6.805", + "value": 0.8, + "description": "Double salto bwd tucked with 2/1 twist (720°)", + "name": "Biles", + "image": "BB-6.805-a.webp" + }, + { + "id": "FX-1.101-a", + "elementGroupId": "FX-1", + "code": "1.101", + "value": 0.1, + "description": "Split leap fwd (leg separation 180°)", + "name": null, + "image": "FX-1.101-a.webp" + }, + { + "id": "FX-1.103-a", + "elementGroupId": "FX-1", + "code": "1.103", + "value": 0.1, + "description": "Tuck jump with separation of legs to cross split (180°) during flight phase", + "name": null, + "image": "FX-1.103-a.webp" + }, + { + "id": "FX-1.104-a", + "elementGroupId": "FX-1", + "code": "1.104", + "value": 0.1, + "description": "Leap fwd with ¼ turn (90°) into straddle pike position (both legs above horizontal) or side split to land on one or both feet", + "name": null, + "image": "FX-1.104-a.webp" + }, + { + "id": "FX-1.104-b", + "elementGroupId": "FX-1", + "code": "1.104", + "value": 0.1, + "description": "Leap fwd with ¼ turn (90°) into straddle pike position (both legs above horizontal) or side split to land on one or both feet", + "name": null, + "image": "FX-1.104-b.webp" + }, + { + "id": "FX-1.105-a", + "elementGroupId": "FX-1", + "code": "1.105", + "value": 0.1, + "description": "Stride leap fwd with change of legs to wolf position", + "name": null, + "image": "FX-1.105-a.webp" + }, + { + "id": "FX-1.106-a", + "elementGroupId": "FX-1", + "code": "1.106", + "value": 0.1, + "description": "Pike jump (legs above horizontal)", + "name": null, + "image": "FX-1.106-a.webp" + }, + { + "id": "FX-1.107-a", + "elementGroupId": "FX-1", + "code": "1.107", + "value": 0.1, + "description": "Straddle pike jump (both legs above horizontal)", + "name": null, + "image": "FX-1.107-a.webp" + }, + { + "id": "FX-1.107-b", + "elementGroupId": "FX-1", + "code": "1.107", + "value": 0.1, + "description": "Straddle pike jump (both legs above horizontal), side split jump (180° separation of legs)", + "name": null, + "image": "FX-1.107-b.webp" + }, + { + "id": "FX-1.108-a", + "elementGroupId": "FX-1", + "code": "1.108", + "value": 0.1, + "description": "Straddle pike (both legs above horizontal), or side split jump landing in front lying support", + "name": null, + "image": "FX-1.108-a.webp" + }, + { + "id": "FX-1.108-b", + "elementGroupId": "FX-1", + "code": "1.108", + "value": 0.1, + "description": "Straddle pike (both legs above horizontal), or side split jump landing in front lying support, with ½ turn (180°)", + "name": null, + "image": "FX-1.108-b.webp" + }, + { + "id": "FX-1.108-c", + "elementGroupId": "FX-1", + "code": "1.108", + "value": 0.1, + "description": "Hop with 1/1 turn (360°) to straddle and land in front lying support", + "name": null, + "image": "FX-1.108-c.webp" + }, + { + "id": "FX-1.109-a", + "elementGroupId": "FX-1", + "code": "1.109", + "value": 0.1, + "description": "Split jump (180° separation of legs), back leg straight or bent)", + "name": null, + "image": "FX-1.109-a.webp" + }, + { + "id": "FX-1.109-b", + "elementGroupId": "FX-1", + "code": "1.109", + "value": 0.1, + "description": "Stag jump (180° separation of legs), back leg straight or bent)", + "name": null, + "image": "FX-1.109-b.webp" + }, + { + "id": "FX-1.109-c", + "elementGroupId": "FX-1", + "code": "1.109", + "value": 0.1, + "description": "Stag jump with ½ turn (180°)", + "name": null, + "image": "FX-1.109-c.webp" + }, + { + "id": "FX-1.109-d", + "elementGroupId": "FX-1", + "code": "1.109", + "value": 0.1, + "description": "Sissone (180° separation of legs) on the diagonal/45°to the floor) take off two feet, to land on one foot", + "name": null, + "image": "FX-1.109-d.webp" + }, + { + "id": "FX-1.110-a", + "elementGroupId": "FX-1", + "code": "1.110", + "value": 0.1, + "description": "Stretched hop or jump with 1/1 turn (360°)", + "name": null, + "image": "FX-1.110-a.webp" + }, + { + "id": "FX-1.111-a", + "elementGroupId": "FX-1", + "code": "1.111", + "value": 0.1, + "description": "Leap with alternate leg change (knees above horizontal)", + "name": "Cat leap", + "image": "FX-1.111-a.webp" + }, + { + "id": "FX-1.111-b", + "elementGroupId": "FX-1", + "code": "1.111", + "value": 0.1, + "description": "Scissors leap fwd", + "name": null, + "image": "FX-1.111-b.webp" + }, + { + "id": "FX-1.112-a", + "elementGroupId": "FX-1", + "code": "1.112", + "value": 0.1, + "description": "Hop with ½ turn (180˚) to land in arabesque with free leg above horizontal (Fouetté hop)", + "name": null, + "image": "FX-1.112-a.webp" + }, + { + "id": "FX-1.112-b", + "elementGroupId": "FX-1", + "code": "1.112", + "value": 0.1, + "description": "Hop with ½ turn (180°) free leg extended fwd at horizontal throughout", + "name": null, + "image": "FX-1.112-b.webp" + }, + { + "id": "FX-1.114-a", + "elementGroupId": "FX-1", + "code": "1.114", + "value": 0.1, + "description": "Hop or Jump with one leg bent and the other – extended straight, fwd above horizontal with knees together", + "name": "Wolf hop or jump", + "image": "FX-1.114-a.webp" + }, + { + "id": "FX-1.201-a", + "elementGroupId": "FX-1", + "code": "1.201", + "value": 0.2, + "description": "Split leap with ½ turn (180°)", + "name": null, + "image": "FX-1.201-a.webp" + }, + { + "id": "FX-1.202-a", + "elementGroupId": "FX-1", + "code": "1.202", + "value": 0.2, + "description": "Fouetté hop with leg change to cross split (leg separation 180°)", + "name": null, + "image": "FX-1.202-a.webp" + }, + { + "id": "FX-1.202-b", + "elementGroupId": "FX-1", + "code": "1.202", + "value": 0.2, + "description": "Fouetté hop with leg change to cross split (leg separation 180°), to ring position (tour jeté)", + "name": null, + "image": "FX-1.202-b.webp" + }, + { + "id": "FX-1.203-a", + "elementGroupId": "FX-1", + "code": "1.203", + "value": 0.2, + "description": "Butterfly fwd torso parallel to floor, slightly arched, legs straddled and feet above hip height during flight", + "name": null, + "image": "FX-1.203-a.webp" + }, + { + "id": "FX-1.203-b", + "elementGroupId": "FX-1", + "code": "1.203", + "value": 0.2, + "description": "Butterfly bwd torso parallel to floor, slightly arched, legs straddled and feet at or slightly below hip height during flight", + "name": null, + "image": "FX-1.203-b.webp" + }, + { + "id": "FX-1.203-c", + "elementGroupId": "FX-1", + "code": "1.203", + "value": 0.2, + "description": "Butterfly bwd torso parallel to floor, slightly arched, legs straddled and feet at or slightly below hip height during flight, landing in front lying support", + "name": null, + "image": "FX-1.203-c.webp" + }, + { + "id": "FX-1.204-a", + "elementGroupId": "FX-1", + "code": "1.204", + "value": 0.2, + "description": "Switch leap with ¼ turn (90°) to side split or to straddle pike position (both legs above horizontal)", + "name": "Johnson", + "image": "FX-1.204-a.webp" + }, + { + "id": "FX-1.204-b", + "elementGroupId": "FX-1", + "code": "1.204", + "value": 0.2, + "description": "Switch leap with ¼ turn (90°) to side split or to straddle pike position (both legs above horizontal)", + "name": "Johnson", + "image": "FX-1.204-b.webp" + }, + { + "id": "FX-1.205-a", + "elementGroupId": "FX-1", + "code": "1.205", + "value": 0.2, + "description": "Leap fwd with leg change (free leg swing to 45°) to cross split (180° separation after leg change) (Switch leap)", + "name": null, + "image": "FX-1.205-a.webp" + }, + { + "id": "FX-1.206-a", + "elementGroupId": "FX-1", + "code": "1.206", + "value": 0.2, + "description": "Jump with upper back arch and head release with feet almost touching head (Sheep jump)", + "name": null, + "image": "FX-1.206-a.webp" + }, + { + "id": "FX-1.207-a", + "elementGroupId": "FX-1", + "code": "1.207", + "value": 0.2, + "description": "Straddle pike or side split jump with ½ turn (180°)", + "name": null, + "image": "FX-1.207-a.webp" + }, + { + "id": "FX-1.207-b", + "elementGroupId": "FX-1", + "code": "1.207", + "value": 0.2, + "description": "Straddle pike or side split jump with ½ turn (180°)", + "name": null, + "image": "FX-1.207-b.webp" + }, + { + "id": "FX-1.207-c", + "elementGroupId": "FX-1", + "code": "1.207", + "value": 0.2, + "description": "Split Jump with ½ turn (180°)", + "name": null, + "image": "FX-1.207-c.webp" + }, + { + "id": "FX-1.208-a", + "elementGroupId": "FX-1", + "code": "1.208", + "value": 0.2, + "description": "Straddle pike (both legs above horizontal), or side split jump with 1/1 turn (360°) landing in front lying support", + "name": null, + "image": "FX-1.208-a.webp" + }, + { + "id": "FX-1.208-b", + "elementGroupId": "FX-1", + "code": "1.208", + "value": 0.2, + "description": "Hop with 1½ turn (540°) in horizontal plane to land in front lying support", + "name": null, + "image": "FX-1.208-b.webp" + }, + { + "id": "FX-1.209-a", + "elementGroupId": "FX-1", + "code": "1.209", + "value": 0.2, + "description": "Sissone to ring position (rear foot at head height, body arched and head dropped bwd, 180° separation of legs), to land on one foot", + "name": null, + "image": "FX-1.209-a.webp" + }, + { + "id": "FX-1.209-b", + "elementGroupId": "FX-1", + "code": "1.209", + "value": 0.2, + "description": "Stag ring jump (rear foot at head height, body arched and head dropped bwd,), to land on both feet", + "name": null, + "image": "FX-1.209-b.webp" + }, + { + "id": "FX-1.209-c", + "elementGroupId": "FX-1", + "code": "1.209", + "value": 0.2, + "description": "Split jump to ring position (180° separation of legs) to land on both feet", + "name": null, + "image": "FX-1.209-c.webp" + }, + { + "id": "FX-1.209-d", + "elementGroupId": "FX-1", + "code": "1.209", + "value": 0.2, + "description": "Split jump to ring position with ½ turn (180°) to land on both feet", + "name": null, + "image": "FX-1.209-d.webp" + }, + { + "id": "FX-1.211-a", + "elementGroupId": "FX-1", + "code": "1.211", + "value": 0.2, + "description": "Cat leap with 1/1 turn (360º)", + "name": null, + "image": "FX-1.211-a.webp" + }, + { + "id": "FX-1.212-a", + "elementGroupId": "FX-1", + "code": "1.212", + "value": 0.2, + "description": "Hop with 1/1 turn (360°), free leg extended fwd at horizontal throughout", + "name": null, + "image": "FX-1.212-a.webp" + }, + { + "id": "FX-1.213-a", + "elementGroupId": "FX-1", + "code": "1.213", + "value": 0.2, + "description": "Tuck hop or jump with 1/1 turn (360º)", + "name": null, + "image": "FX-1.213-a.webp" + }, + { + "id": "FX-1.214-a", + "elementGroupId": "FX-1", + "code": "1.214", + "value": 0.2, + "description": "Wolf hop or jump with 1/1 turn (360°)", + "name": null, + "image": "FX-1.214-a.webp" + }, + { + "id": "FX-1.214-b", + "elementGroupId": "FX-1", + "code": "1.214", + "value": 0.2, + "description": "Wolf hop or jump with 1/1 turn (360°), landing in front lying support", + "name": null, + "image": "FX-1.214-b.webp" + }, + { + "id": "FX-1.301-a", + "elementGroupId": "FX-1", + "code": "1.301", + "value": 0.3, + "description": "Split leap with 1/1 turn (360°)", + "name": null, + "image": "FX-1.301-a.webp" + }, + { + "id": "FX-1.302-a", + "elementGroupId": "FX-1", + "code": "1.302", + "value": 0.3, + "description": "Tour jeté with additional ½ turn (180°), landing on one or both feet", + "name": "Produnova", + "image": "FX-1.302-a.webp" + }, + { + "id": "FX-1.302-b", + "elementGroupId": "FX-1", + "code": "1.302", + "value": 0.3, + "description": "Tour jeté with additional ½ turn (180°), landing on one or both feet, in split sit position", + "name": "Produnova", + "image": "FX-1.302-b.webp" + }, + { + "id": "FX-1.302-c", + "elementGroupId": "FX-1", + "code": "1.302", + "value": 0.3, + "description": "Leap fwd, through tour jeté technique, with ¾ turn (270°) into straddle pike position with additional ¼ turn (90°), landing on one or both feet", + "name": "Csillag", + "image": "FX-1.302-c.webp" + }, + { + "id": "FX-1.304-a", + "elementGroupId": "FX-1", + "code": "1.304", + "value": 0.3, + "description": "Switch leap with ½ turn (180°) in flight phase", + "name": "Frolova", + "image": "FX-1.304-a.webp" + }, + { + "id": "FX-1.304-b", + "elementGroupId": "FX-1", + "code": "1.304", + "value": 0.3, + "description": "Johnson with additional ½ turn (180°)", + "name": null, + "image": "FX-1.304-b.webp" + }, + { + "id": "FX-1.305-a", + "elementGroupId": "FX-1", + "code": "1.305", + "value": 0.3, + "description": "Switch leap to ring position (180° separation of legs)", + "name": null, + "image": "FX-1.305-a.webp" + }, + { + "id": "FX-1.306-a", + "elementGroupId": "FX-1", + "code": "1.306", + "value": 0.3, + "description": "Pike jump (legs above horizontal) with 1/1 turn (360°)", + "name": "Moerz", + "image": "FX-1.306-a.webp" + }, + { + "id": "FX-1.306-b", + "elementGroupId": "FX-1", + "code": "1.306", + "value": 0.3, + "description": "Pike jump (legs above horizontal) with 1/1 turn (360°), landing in front lying support", + "name": "Moerz", + "image": "FX-1.306-b.webp" + }, + { + "id": "FX-1.307-a", + "elementGroupId": "FX-1", + "code": "1.307", + "value": 0.3, + "description": "Straddle pike or side split jump with 1/1 turn (360°)", + "name": "Popa", + "image": "FX-1.307-a.webp" + }, + { + "id": "FX-1.307-b", + "elementGroupId": "FX-1", + "code": "1.307", + "value": 0.3, + "description": "Straddle pike or side split jump with 1/1 turn (360°)", + "name": "Popa", + "image": "FX-1.307-b.webp" + }, + { + "id": "FX-1.307-c", + "elementGroupId": "FX-1", + "code": "1.307", + "value": 0.3, + "description": "Split Jump with 1/1 turn (360°)", + "name": null, + "image": "FX-1.307-c.webp" + }, + { + "id": "FX-1.309-a", + "elementGroupId": "FX-1", + "code": "1.309", + "value": 0.3, + "description": "Split leap to ring ring leap (180° separation of legs)", + "name": null, + "image": "FX-1.309-a.webp" + }, + { + "id": "FX-1.309-b", + "elementGroupId": "FX-1", + "code": "1.309", + "value": 0.3, + "description": "Split jump to ring position with 1/1 turn (360°)", + "name": "Jurkowska-Kowalska", + "image": "FX-1.309-b.webp" + }, + { + "id": "FX-1.310-a", + "elementGroupId": "FX-1", + "code": "1.310", + "value": 0.3, + "description": "Stretched hop or jump with 2/1 turn (720°)", + "name": null, + "image": "FX-1.310-a.webp" + }, + { + "id": "FX-1.311-a", + "elementGroupId": "FX-1", + "code": "1.311", + "value": 0.3, + "description": "Cat leap with 2/1 turn (720°)", + "name": null, + "image": "FX-1.311-a.webp" + }, + { + "id": "FX-1.313-a", + "elementGroupId": "FX-1", + "code": "1.313", + "value": 0.3, + "description": "Tuck hop or jump with 2/1 turn (720°)", + "name": null, + "image": "FX-1.313-a.webp" + }, + { + "id": "FX-1.313-b", + "elementGroupId": "FX-1", + "code": "1.313", + "value": 0.3, + "description": "Tuck hop or jump with 2/1 turn (720°), landing in front lying support", + "name": null, + "image": "FX-1.313-b.webp" + }, + { + "id": "FX-1.402-a", + "elementGroupId": "FX-1", + "code": "1.402", + "value": 0.4, + "description": "Tour jeté with additional 1/1 turn (360°), landing on one or both feet", + "name": "Gogean", + "image": "FX-1.402-a.webp" + }, + { + "id": "FX-1.404-a", + "elementGroupId": "FX-1", + "code": "1.404", + "value": 0.4, + "description": "Switch leap with 1/1 turn (360°) in flight phase", + "name": null, + "image": "FX-1.404-a.webp" + }, + { + "id": "FX-1.404-b", + "elementGroupId": "FX-1", + "code": "1.404", + "value": 0.4, + "description": "Johnson with additional 1/1 turn (360°)", + "name": "Bulimar", + "image": "FX-1.404-b.webp" + }, + { + "id": "FX-1.405-a", + "elementGroupId": "FX-1", + "code": "1.405", + "value": 0.4, + "description": "Switch leap to ring position with ½ turn (180°)", + "name": "Sankova", + "image": "FX-1.405-a.webp" + }, + { + "id": "FX-1.407-a", + "elementGroupId": "FX-1", + "code": "1.407", + "value": 0.4, + "description": "Straddle pike or side split jump with 1½ turn (540°)", + "name": null, + "image": "FX-1.407-a.webp" + }, + { + "id": "FX-1.407-b", + "elementGroupId": "FX-1", + "code": "1.407", + "value": 0.4, + "description": "Straddle pike or side split jump with 1½ turn (540°)", + "name": null, + "image": "FX-1.407-b.webp" + }, + { + "id": "FX-1.407-c", + "elementGroupId": "FX-1", + "code": "1.407", + "value": 0.4, + "description": "Split Jump with 1½ turn (540°)", + "name": null, + "image": "FX-1.407-c.webp" + }, + { + "id": "FX-1.409-a", + "elementGroupId": "FX-1", + "code": "1.409", + "value": 0.4, + "description": "Tour jeté, to ring position with additional ½ turn (180°)", + "name": "Ferrari", + "image": "FX-1.409-a.webp" + }, + { + "id": "FX-1.409-b", + "elementGroupId": "FX-1", + "code": "1.409", + "value": 0.4, + "description": "Split leap to ring position with ½ turn (180°)", + "name": "Ting", + "image": "FX-1.409-b.webp" + }, + { + "id": "FX-1.514-a", + "elementGroupId": "FX-1", + "code": "1.514", + "value": 0.5, + "description": "Wolf hop or jump with 2/1 turn (720°)", + "name": null, + "image": "FX-1.514-a.webp" + }, + { + "id": "FX-2.101-a", + "elementGroupId": "FX-2", + "code": "2.101", + "value": 0.1, + "description": "1/1 turn (360°) on one leg – free leg optional below horizontal", + "name": null, + "image": "FX-2.101-a.webp" + }, + { + "id": "FX-2.201-a", + "elementGroupId": "FX-2", + "code": "2.201", + "value": 0.2, + "description": "2/1 turn (720°) on one leg – free leg optional below horizontal", + "name": null, + "image": "FX-2.201-a.webp" + }, + { + "id": "FX-2.202-a", + "elementGroupId": "FX-2", + "code": "2.202", + "value": 0.2, + "description": "1/1 turn (360°) with heel of extended free leg fwd at horizontal throughout turn (support leg may be straight or bent)", + "name": null, + "image": "FX-2.202-a.webp" + }, + { + "id": "FX-2.203-a", + "elementGroupId": "FX-2", + "code": "2.203", + "value": 0.2, + "description": "1/1 turn (360°) with free leg held upward in 180° split position throughout turn", + "name": null, + "image": "FX-2.203-a.webp" + }, + { + "id": "FX-2.204-a", + "elementGroupId": "FX-2", + "code": "2.204", + "value": 0.2, + "description": "1/1 turn (360°) in back attitude (thigh of free leg at horizontal throughout turn)", + "name": null, + "image": "FX-2.204-a.webp" + }, + { + "id": "FX-2.205-a", + "elementGroupId": "FX-2", + "code": "2.205", + "value": 0.2, + "description": "1/1 turn (360°) in scale fwd with free leg above horizontal throughout turn", + "name": null, + "image": "FX-2.205-a.webp" + }, + { + "id": "FX-2.206-a", + "elementGroupId": "FX-2", + "code": "2.206", + "value": 0.2, + "description": "1/1 illusion turn (360°) through standing split without touching floor with hand", + "name": null, + "image": "FX-2.206-a.webp" + }, + { + "id": "FX-2.207-a", + "elementGroupId": "FX-2", + "code": "2.207", + "value": 0.2, + "description": "1/1 turn (360°) in tuck stand on one leg – free leg straight throughout turn", + "name": null, + "image": "FX-2.207-a.webp" + }, + { + "id": "FX-2.208-a", + "elementGroupId": "FX-2", + "code": "2.208", + "value": 0.2, + "description": "2/1 turn (720°) or more on back in kip position (hip-leg angle closed)", + "name": null, + "image": "FX-2.208-a.webp" + }, + { + "id": "FX-2.208-b", + "elementGroupId": "FX-2", + "code": "2.208", + "value": 0.2, + "description": "2/1 turn (720°) or more on back in kip position (hip-leg angle closed)", + "name": null, + "image": "FX-2.208-b.webp" + }, + { + "id": "FX-2.301-a", + "elementGroupId": "FX-2", + "code": "2.301", + "value": 0.3, + "description": "3/1 turn (1080°) on one leg – free leg optional below horizontal", + "name": null, + "image": "FX-2.301-a.webp" + }, + { + "id": "FX-2.307-a", + "elementGroupId": "FX-2", + "code": "2.307", + "value": 0.3, + "description": "2/1 turn (720°) starting with free leg at horizontal, lowering to complete the turn in wolf position", + "name": "Nguyen", + "image": "FX-2.307-a.webp" + }, + { + "id": "FX-2.402-a", + "elementGroupId": "FX-2", + "code": "2.402", + "value": 0.4, + "description": "2/1 turn (720°) with heel of extended free leg fwd at horizontal throughout turn (support leg may be straight or bent)", + "name": null, + "image": "FX-2.402-a.webp" + }, + { + "id": "FX-2.403-a", + "elementGroupId": "FX-2", + "code": "2.403", + "value": 0.4, + "description": "2/1 turn (720°) with free leg held upward in 180° split position throughout turn", + "name": "Memmel", + "image": "FX-2.403-a.webp" + }, + { + "id": "FX-2.404-a", + "elementGroupId": "FX-2", + "code": "2.404", + "value": 0.4, + "description": "2/1 turn (720°) in back attitude (thigh of free leg at horizontal throughout turn)", + "name": "Semenova", + "image": "FX-2.404-a.webp" + }, + { + "id": "FX-2.404-b", + "elementGroupId": "FX-2", + "code": "2.404", + "value": 0.4, + "description": "2/1 turn (720°) with free leg held with both hands bwd/upward throughout turn", + "name": "Berar", + "image": "FX-2.404-b.webp" + }, + { + "id": "FX-2.407-a", + "elementGroupId": "FX-2", + "code": "2.407", + "value": 0.4, + "description": "2/1 turn (720°) in tuck stand on one leg – free leg straight throughout turn (no turn initiation with a push from hands on floor)", + "name": null, + "image": "FX-2.407-a.webp" + }, + { + "id": "FX-2.501-a", + "elementGroupId": "FX-2", + "code": "2.501", + "value": 0.5, + "description": "4/1 turn (1440°) on one leg – free leg optional below horizontal", + "name": "Gomez", + "image": "FX-2.501-a.webp" + }, + { + "id": "FX-2.503-a", + "elementGroupId": "FX-2", + "code": "2.503", + "value": 0.5, + "description": "3/1 turn (1080°) with free leg held upward in 180° split position throughout turn", + "name": "Mustafina", + "image": "FX-2.503-a.webp" + }, + { + "id": "FX-2.507-a", + "elementGroupId": "FX-2", + "code": "2.507", + "value": 0.5, + "description": "3/1 turn (1080°) in tuck stand on one leg – free leg straight throughout turn (no turn initiation with a push from hands on floor)", + "name": "Mitchell", + "image": "FX-2.507-a.webp" + }, + { + "id": "FX-3.101-a", + "elementGroupId": "FX-3", + "code": "3.101", + "value": 0.1, + "description": "Jump kick or press to hstd – return movement optional, also with ½ or 1/1 turn (180° or 360°) in hstd", + "name": null, + "image": "FX-3.101-a.webp" + }, + { + "id": "FX-3.101-b", + "elementGroupId": "FX-3", + "code": "3.101", + "value": 0.1, + "description": "Jump kick or press to hstd – return movement optional, also with ½ or 1/1 turn (180° or 360°) in hstd", + "name": null, + "image": "FX-3.101-b.webp" + }, + { + "id": "FX-3.101-c", + "elementGroupId": "FX-3", + "code": "3.101", + "value": 0.1, + "description": "Jump kick or press to hstd – return movement optional, also with ½ or 1/1 turn (180° or 360°) in hstd", + "name": null, + "image": "FX-3.101-c.webp" + }, + { + "id": "FX-3.102-a", + "elementGroupId": "FX-3", + "code": "3.102", + "value": 0.1, + "description": "Hecht roll", + "name": null, + "image": "FX-3.102-a.webp" + }, + { + "id": "FX-3.103-a", + "elementGroupId": "FX-3", + "code": "3.103", + "value": 0.1, + "description": "Roll bwd to hstd with ½ or 1/1 turn (180° or 360°) in hstd", + "name": null, + "image": "FX-3.103-a.webp" + }, + { + "id": "FX-3.103-b", + "elementGroupId": "FX-3", + "code": "3.103", + "value": 0.1, + "description": "Roll bwd to hstd with ½ or 1/1 turn (180° or 360°) in hstd", + "name": null, + "image": "FX-3.103-b.webp" + }, + { + "id": "FX-3.104-a", + "elementGroupId": "FX-3", + "code": "3.104", + "value": 0.1, + "description": "Walkover bwd from stand or extended tuck-sit to hstd with 1/1 turn (360°) in hstd – return movement optional", + "name": null, + "image": "FX-3.104-a.webp" + }, + { + "id": "FX-3.104-b", + "elementGroupId": "FX-3", + "code": "3.104", + "value": 0.1, + "description": "Walkover bwd from stand or extended tuck-sit to hstd with 1/1 turn (360°) in hstd – return movement optional", + "name": null, + "image": "FX-3.104-b.webp" + }, + { + "id": "FX-3.105-a", + "elementGroupId": "FX-3", + "code": "3.105", + "value": 0.1, + "description": "Handspring fwd, take-off from one leg or Flyspring fwd, take-off from both legs – with or without hecht phase before hand support – landing optional", + "name": null, + "image": "FX-3.105-a.webp" + }, + { + "id": "FX-3.105-b", + "elementGroupId": "FX-3", + "code": "3.105", + "value": 0.1, + "description": "Handspring fwd, take-off from one leg or Flyspring fwd, take-off from both legs – with or without hecht phase before hand support – landing optional", + "name": null, + "image": "FX-3.105-b.webp" + }, + { + "id": "FX-3.105-c", + "elementGroupId": "FX-3", + "code": "3.105", + "value": 0.1, + "description": "Jump bwd with ½ twist (180°) to handspring fwd – landing optional", + "name": null, + "image": "FX-3.105-c.webp" + }, + { + "id": "FX-3.106-a", + "elementGroupId": "FX-3", + "code": "3.106", + "value": 0.1, + "description": "Round-off", + "name": null, + "image": "FX-3.106-a.webp" + }, + { + "id": "FX-3.107-a", + "elementGroupId": "FX-3", + "code": "3.107", + "value": 0.1, + "description": "All flic-flac and gainer flic-flac variations, also with support of one arm", + "name": null, + "image": "FX-3.107-a.webp" + }, + { + "id": "FX-3.107-b", + "elementGroupId": "FX-3", + "code": "3.107", + "value": 0.1, + "description": "All flic-flac and gainer flic-flac variations, also with support of one arm", + "name": null, + "image": "FX-3.107-b.webp" + }, + { + "id": "FX-3.107-c", + "elementGroupId": "FX-3", + "code": "3.107", + "value": 0.1, + "description": "All flic-flac and gainer flic-flac variations, also with support of one arm", + "name": null, + "image": "FX-3.107-c.webp" + }, + { + "id": "FX-3.107-d", + "elementGroupId": "FX-3", + "code": "3.107", + "value": 0.1, + "description": "Arabian (bwd take-off) with ¼ twist (90°) – free (aerial) cartwheel – continuing with ¼ twist (90°) to front lying support", + "name": "Tsavdaridou", + "image": "FX-3.107-d.webp" + }, + { + "id": "FX-3.201-a", + "elementGroupId": "FX-3", + "code": "3.201", + "value": 0.2, + "description": "Jump kick or press to hstd with 1½ or 2/1 turn (540° or 720°) in hstd – return movement optional", + "name": null, + "image": "FX-3.201-a.webp" + }, + { + "id": "FX-3.201-b", + "elementGroupId": "FX-3", + "code": "3.201", + "value": 0.2, + "description": "Jump kick or press to hstd with 1½ or 2/1 turn (540° or 720°) in hstd – return movement optional", + "name": null, + "image": "FX-3.201-b.webp" + }, + { + "id": "FX-3.201-c", + "elementGroupId": "FX-3", + "code": "3.201", + "value": 0.2, + "description": "Jump kick or press to hstd with 1½ or 2/1 turn (540° or 720°) in hstd – return movement optional", + "name": null, + "image": "FX-3.201-c.webp" + }, + { + "id": "FX-3.203-a", + "elementGroupId": "FX-3", + "code": "3.203", + "value": 0.2, + "description": "Roll bwd to hstd with 1½ or 2/1 turn (540° or 720°) in hstd", + "name": null, + "image": "FX-3.203-a.webp" + }, + { + "id": "FX-3.203-b", + "elementGroupId": "FX-3", + "code": "3.203", + "value": 0.2, + "description": "Roll bwd to hstd with 1½ or 2/1 turn (540° or 720°) in hstd", + "name": null, + "image": "FX-3.203-b.webp" + }, + { + "id": "FX-3.207-a", + "elementGroupId": "FX-3", + "code": "3.207", + "value": 0.2, + "description": "Flic-flac with 1/1 twist (360°) before hand support", + "name": null, + "image": "FX-3.207-a.webp" + }, + { + "id": "FX-3.305-a", + "elementGroupId": "FX-3", + "code": "3.305", + "value": 0.3, + "description": "Handspring fwd with 1/1 twist (360°) after hand support or before", + "name": "Mostepanova", + "image": "FX-3.305-a.webp" + }, + { + "id": "FX-3.305-b", + "elementGroupId": "FX-3", + "code": "3.305", + "value": 0.3, + "description": "Handspring fwd with 1/1 twist (360°) after hand support or before", + "name": "Mostepanova", + "image": "FX-3.305-b.webp" + }, + { + "id": "FX-4.101-a", + "elementGroupId": "FX-4", + "code": "4.101", + "value": 0.1, + "description": "Salto fwd tucked or piked", + "name": null, + "image": "FX-4.101-a.webp" + }, + { + "id": "FX-4.101-b", + "elementGroupId": "FX-4", + "code": "4.101", + "value": 0.1, + "description": "Salto fwd tucked or piked", + "name": null, + "image": "FX-4.101-b.webp" + }, + { + "id": "FX-4.103-a", + "elementGroupId": "FX-4", + "code": "4.103", + "value": 0.1, + "description": "Free (aerial) walkover fwd", + "name": null, + "image": "FX-4.103-a.webp" + }, + { + "id": "FX-4.104-a", + "elementGroupId": "FX-4", + "code": "4.104", + "value": 0.1, + "description": "Free (aerial) cartwheel or free (aerial) round-off", + "name": null, + "image": "FX-4.104-a.webp" + }, + { + "id": "FX-4.104-b", + "elementGroupId": "FX-4", + "code": "4.104", + "value": 0.1, + "description": "Free (aerial) cartwheel or free (aerial) round-off", + "name": null, + "image": "FX-4.104-b.webp" + }, + { + "id": "FX-4.105-a", + "elementGroupId": "FX-4", + "code": "4.105", + "value": 0.1, + "description": "From take-off fwd from one or both legs – salto swd tucked or piked", + "name": null, + "image": "FX-4.105-a.webp" + }, + { + "id": "FX-4.105-b", + "elementGroupId": "FX-4", + "code": "4.105", + "value": 0.1, + "description": "From take-off fwd from one or both legs – salto swd tucked or piked", + "name": null, + "image": "FX-4.105-b.webp" + }, + { + "id": "FX-4.201-a", + "elementGroupId": "FX-4", + "code": "4.201", + "value": 0.2, + "description": "Salto fwd tucked with ½ or 1/1 twist (180° or 360°), also Salto fwd piked with ½ twist (180°)", + "name": null, + "image": "FX-4.201-a.webp" + }, + { + "id": "FX-4.201-b", + "elementGroupId": "FX-4", + "code": "4.201", + "value": 0.2, + "description": "Salto fwd tucked with ½ or 1/1 twist (180° or 360°), also Salto fwd piked with ½ twist (180°)", + "name": null, + "image": "FX-4.201-b.webp" + }, + { + "id": "FX-4.201-c", + "elementGroupId": "FX-4", + "code": "4.201", + "value": 0.2, + "description": "Salto fwd tucked with ½ or 1/1 twist (180° or 360°), also Salto fwd piked with ½ twist (180°)", + "name": null, + "image": "FX-4.201-c.webp" + }, + { + "id": "FX-4.202-a", + "elementGroupId": "FX-4", + "code": "4.202", + "value": 0.2, + "description": "Salto fwd stretched, also with ½ twist (180°)", + "name": null, + "image": "FX-4.202-a.webp" + }, + { + "id": "FX-4.202-b", + "elementGroupId": "FX-4", + "code": "4.202", + "value": 0.2, + "description": "Salto fwd stretched, also with ½ twist (180°)", + "name": null, + "image": "FX-4.202-b.webp" + }, + { + "id": "FX-4.202-c", + "elementGroupId": "FX-4", + "code": "4.202", + "value": 0.2, + "description": "Salto fwd stretched, also with ½ twist (180°)", + "name": null, + "image": "FX-4.202-c.webp" + }, + { + "id": "FX-4.205-a", + "elementGroupId": "FX-4", + "code": "4.205", + "value": 0.2, + "description": "Arabian salto tucked or piked, (take-off bwd with ½ twist [180°], salto fwd) – landing optional", + "name": null, + "image": "FX-4.205-a.webp" + }, + { + "id": "FX-4.205-b", + "elementGroupId": "FX-4", + "code": "4.205", + "value": 0.2, + "description": "Arabian salto tucked or piked, (take-off bwd with ½ twist [180°], salto fwd) – landing optional", + "name": null, + "image": "FX-4.205-b.webp" + }, + { + "id": "FX-4.302-a", + "elementGroupId": "FX-4", + "code": "4.302", + "value": 0.3, + "description": "Salto fwd stretched with 1/1 or 1½ twist (360° or 540°)", + "name": null, + "image": "FX-4.302-a.webp" + }, + { + "id": "FX-4.302-b", + "elementGroupId": "FX-4", + "code": "4.302", + "value": 0.3, + "description": "Salto fwd stretched with 1/1 or 1½ twist (360° or 540°)", + "name": null, + "image": "FX-4.302-b.webp" + }, + { + "id": "FX-4.402-a", + "elementGroupId": "FX-4", + "code": "4.402", + "value": 0.4, + "description": "Salto fwd stretched with 2/1 twist (720°)", + "name": "Tarasevich", + "image": "FX-4.402-a.webp" + }, + { + "id": "FX-4.501-a", + "elementGroupId": "FX-4", + "code": "4.501", + "value": 0.5, + "description": "Double salto fwd tucked", + "name": "Podkopayeva", + "image": "FX-4.501-a.webp" + }, + { + "id": "FX-4.502-a", + "elementGroupId": "FX-4", + "code": "4.502", + "value": 0.5, + "description": "Salto fwd stretched with 2½ twist (900°)", + "name": "Cojocar", + "image": "FX-4.502-a.webp" + }, + { + "id": "FX-4.505-a", + "elementGroupId": "FX-4", + "code": "4.505", + "value": 0.5, + "description": "Arabian double salto tucked", + "name": "Andreasen/Jentsch", + "image": "FX-4.505-a.webp" + }, + { + "id": "FX-4.601-a", + "elementGroupId": "FX-4", + "code": "4.601", + "value": 0.6, + "description": "Double salto fwd tucked with ½ twist (180°)", + "name": "Podkopayeva", + "image": "FX-4.601-a.webp" + }, + { + "id": "FX-4.601-b", + "elementGroupId": "FX-4", + "code": "4.601", + "value": 0.6, + "description": "Double salto fwd piked", + "name": "Dowell", + "image": "FX-4.601-b.webp" + }, + { + "id": "FX-4.602-a", + "elementGroupId": "FX-4", + "code": "4.602", + "value": 0.6, + "description": "Salto fwd stretched with 3/1 twist (1080°)", + "name": "Maldonado", + "image": "FX-4.602-a.webp" + }, + { + "id": "FX-4.605-a", + "elementGroupId": "FX-4", + "code": "4.605", + "value": 0.6, + "description": "Arabian double salto piked", + "name": "Dos Santos", + "image": "FX-4.605-a.webp" + }, + { + "id": "FX-4.805-a", + "elementGroupId": "FX-4", + "code": "4.805", + "value": 0.8, + "description": "Arabian double salto stretched", + "name": "Dos Santos", + "image": "FX-4.805-a.webp" + }, + { + "id": "FX-5.101-a", + "elementGroupId": "FX-5", + "code": "5.101", + "value": 0.1, + "description": "Salto bwd tucked, piked, or stretched", + "name": null, + "image": "FX-5.101-a.webp" + }, + { + "id": "FX-5.101-b", + "elementGroupId": "FX-5", + "code": "5.101", + "value": 0.1, + "description": "Salto bwd tucked, piked, or stretched", + "name": null, + "image": "FX-5.101-b.webp" + }, + { + "id": "FX-5.101-c", + "elementGroupId": "FX-5", + "code": "5.101", + "value": 0.1, + "description": "Salto bwd tucked, piked, or stretched", + "name": null, + "image": "FX-5.101-c.webp" + }, + { + "id": "FX-5.104-a", + "elementGroupId": "FX-5", + "code": "5.104", + "value": 0.1, + "description": "Whip salto bwd", + "name": null, + "image": "FX-5.104-a.webp" + }, + { + "id": "FX-5.201-a", + "elementGroupId": "FX-5", + "code": "5.201", + "value": 0.2, + "description": "Salto bwd stretched with ½", + "name": null, + "image": "FX-5.201-a.webp" + }, + { + "id": "FX-5.201-b", + "elementGroupId": "FX-5", + "code": "5.201", + "value": 0.2, + "description": "Salto bwd stretched with ½, salto bwd tucked or stretched with 1/1 twist (180° or 360°)", + "name": null, + "image": "FX-5.201-b.webp" + }, + { + "id": "FX-5.204-a", + "elementGroupId": "FX-5", + "code": "5.204", + "value": 0.2, + "description": "Whip salto bwd with ½ twist (180°)", + "name": null, + "image": "FX-5.204-a.webp" + }, + { + "id": "FX-5.301-a", + "elementGroupId": "FX-5", + "code": "5.301", + "value": 0.3, + "description": "Salto bwd stretched with 1½ or 2/1 twist (540° or 720°)", + "name": null, + "image": "FX-5.301-a.webp" + }, + { + "id": "FX-5.301-b", + "elementGroupId": "FX-5", + "code": "5.301", + "value": 0.3, + "description": "Salto bwd stretched with 1½ or 2/1 twist (540° or 720°)", + "name": null, + "image": "FX-5.301-b.webp" + }, + { + "id": "FX-5.304-a", + "elementGroupId": "FX-5", + "code": "5.304", + "value": 0.3, + "description": "Whip salto bwd with 1/1 twist (360°)", + "name": null, + "image": "FX-5.304-a.webp" + }, + { + "id": "FX-5.401-a", + "elementGroupId": "FX-5", + "code": "5.401", + "value": 0.4, + "description": "Salto bwd stretched with 2½ twist (900°)", + "name": null, + "image": "FX-5.401-a.webp" + }, + { + "id": "FX-5.402-a", + "elementGroupId": "FX-5", + "code": "5.402", + "value": 0.4, + "description": "Double salto bwd tucked", + "name": "Kim", + "image": "FX-5.402-a.webp" + }, + { + "id": "FX-5.402-b", + "elementGroupId": "FX-5", + "code": "5.402", + "value": 0.4, + "description": "Double salto bwd piked", + "name": null, + "image": "FX-5.402-b.webp" + }, + { + "id": "FX-5.501-a", + "elementGroupId": "FX-5", + "code": "5.501", + "value": 0.5, + "description": "Salto bwd stretched with 3/1 twist (1080°)", + "name": null, + "image": "FX-5.501-a.webp" + }, + { + "id": "FX-5.502-a", + "elementGroupId": "FX-5", + "code": "5.502", + "value": 0.5, + "description": "Double salto bwd tucked or piked with 1/1 twist (360°) (any technique)", + "name": "Mukhina / Oliveira", + "image": "FX-5.502-a.webp" + }, + { + "id": "FX-5.502-b", + "elementGroupId": "FX-5", + "code": "5.502", + "value": 0.5, + "description": "Double salto bwd tucked or piked with 1/1 twist (360°) (any technique)", + "name": "Mukhina / Oliveira", + "image": "FX-5.502-b.webp" + }, + { + "id": "FX-5.601-a", + "elementGroupId": "FX-5", + "code": "5.601", + "value": 0.6, + "description": "Salto bwd stretched with 3½ twist (1260°)", + "name": null, + "image": "FX-5.601-a.webp" + }, + { + "id": "FX-5.602-a", + "elementGroupId": "FX-5", + "code": "5.602", + "value": 0.6, + "description": "Double salto bwd tucked with 1½ twist (540°)", + "name": "Heron", + "image": "FX-5.602-a.webp" + }, + { + "id": "FX-5.603-a", + "elementGroupId": "FX-5", + "code": "5.603", + "value": 0.6, + "description": "Double salto bwd stretched", + "name": null, + "image": "FX-5.603-a.webp" + }, + { + "id": "FX-5.703-a", + "elementGroupId": "FX-5", + "code": "5.703", + "value": 0.7, + "description": "Double salto bwd stretched with ½ twist (180°)", + "name": "Biles", + "image": "FX-5.703-a.webp" + }, + { + "id": "FX-5.802-a", + "elementGroupId": "FX-5", + "code": "5.802", + "value": 0.8, + "description": "Double salto bwd tucked with 2/1 twist (720°)", + "name": "Silivas", + "image": "FX-5.802-a.webp" + }, + { + "id": "FX-5.802-b", + "elementGroupId": "FX-5", + "code": "5.802", + "value": 0.8, + "description": "Double salto bwd tucked with 3/1 twist (1080°)", + "name": "Biles", + "image": "FX-5.802-b.webp" + }, + { + "id": "FX-5.803-a", + "elementGroupId": "FX-5", + "code": "5.803", + "value": 0.8, + "description": "Double salto bwd stretched with 1/1 twist (360°)", + "name": "Chusovitina/Touzhikova", + "image": "FX-5.803-a.webp" + }, + { + "id": "FX-5.903-a", + "elementGroupId": "FX-5", + "code": "5.903", + "value": 0.9, + "description": "Double Salto bwd stretched with 2/1 twist (720°)", + "name": "Moors", + "image": "FX-5.903-a.webp" + } +] diff --git a/data/images/BB/BB-1.101-a.webp b/data/images/BB/BB-1.101-a.webp new file mode 100644 index 0000000..ae1614b Binary files /dev/null and b/data/images/BB/BB-1.101-a.webp differ diff --git a/data/images/BB/BB-1.102-a.webp b/data/images/BB/BB-1.102-a.webp new file mode 100644 index 0000000..83540a8 Binary files /dev/null and b/data/images/BB/BB-1.102-a.webp differ diff --git a/data/images/BB/BB-1.103-a.webp b/data/images/BB/BB-1.103-a.webp new file mode 100644 index 0000000..6a7395f Binary files /dev/null and b/data/images/BB/BB-1.103-a.webp differ diff --git a/data/images/BB/BB-1.103-b.webp b/data/images/BB/BB-1.103-b.webp new file mode 100644 index 0000000..dbb97b0 Binary files /dev/null and b/data/images/BB/BB-1.103-b.webp differ diff --git a/data/images/BB/BB-1.103-c.webp b/data/images/BB/BB-1.103-c.webp new file mode 100644 index 0000000..df1d58c Binary files /dev/null and b/data/images/BB/BB-1.103-c.webp differ diff --git a/data/images/BB/BB-1.105-a.webp b/data/images/BB/BB-1.105-a.webp new file mode 100644 index 0000000..472bed2 Binary files /dev/null and b/data/images/BB/BB-1.105-a.webp differ diff --git a/data/images/BB/BB-1.105-b.webp b/data/images/BB/BB-1.105-b.webp new file mode 100644 index 0000000..9afec54 Binary files /dev/null and b/data/images/BB/BB-1.105-b.webp differ diff --git a/data/images/BB/BB-1.105-c.webp b/data/images/BB/BB-1.105-c.webp new file mode 100644 index 0000000..3b7bf8b Binary files /dev/null and b/data/images/BB/BB-1.105-c.webp differ diff --git a/data/images/BB/BB-1.106-a.webp b/data/images/BB/BB-1.106-a.webp new file mode 100644 index 0000000..9ab2690 Binary files /dev/null and b/data/images/BB/BB-1.106-a.webp differ diff --git a/data/images/BB/BB-1.106-b.webp b/data/images/BB/BB-1.106-b.webp new file mode 100644 index 0000000..f4acd22 Binary files /dev/null and b/data/images/BB/BB-1.106-b.webp differ diff --git a/data/images/BB/BB-1.108-a.webp b/data/images/BB/BB-1.108-a.webp new file mode 100644 index 0000000..889bdf5 Binary files /dev/null and b/data/images/BB/BB-1.108-a.webp differ diff --git a/data/images/BB/BB-1.108-b.webp b/data/images/BB/BB-1.108-b.webp new file mode 100644 index 0000000..542db42 Binary files /dev/null and b/data/images/BB/BB-1.108-b.webp differ diff --git a/data/images/BB/BB-1.111-a.webp b/data/images/BB/BB-1.111-a.webp new file mode 100644 index 0000000..b286e69 Binary files /dev/null and b/data/images/BB/BB-1.111-a.webp differ diff --git a/data/images/BB/BB-1.111-b.webp b/data/images/BB/BB-1.111-b.webp new file mode 100644 index 0000000..a9f8981 Binary files /dev/null and b/data/images/BB/BB-1.111-b.webp differ diff --git a/data/images/BB/BB-1.114-a.webp b/data/images/BB/BB-1.114-a.webp new file mode 100644 index 0000000..ab43cb8 Binary files /dev/null and b/data/images/BB/BB-1.114-a.webp differ diff --git a/data/images/BB/BB-1.114-b.webp b/data/images/BB/BB-1.114-b.webp new file mode 100644 index 0000000..08e9312 Binary files /dev/null and b/data/images/BB/BB-1.114-b.webp differ diff --git a/data/images/BB/BB-1.201-a.webp b/data/images/BB/BB-1.201-a.webp new file mode 100644 index 0000000..13f21a8 Binary files /dev/null and b/data/images/BB/BB-1.201-a.webp differ diff --git a/data/images/BB/BB-1.204-a.webp b/data/images/BB/BB-1.204-a.webp new file mode 100644 index 0000000..8cf2565 Binary files /dev/null and b/data/images/BB/BB-1.204-a.webp differ diff --git a/data/images/BB/BB-1.204-b.webp b/data/images/BB/BB-1.204-b.webp new file mode 100644 index 0000000..182ff61 Binary files /dev/null and b/data/images/BB/BB-1.204-b.webp differ diff --git a/data/images/BB/BB-1.207-a.webp b/data/images/BB/BB-1.207-a.webp new file mode 100644 index 0000000..6cf0cac Binary files /dev/null and b/data/images/BB/BB-1.207-a.webp differ diff --git a/data/images/BB/BB-1.207-b.webp b/data/images/BB/BB-1.207-b.webp new file mode 100644 index 0000000..d8960ee Binary files /dev/null and b/data/images/BB/BB-1.207-b.webp differ diff --git a/data/images/BB/BB-1.208-a.webp b/data/images/BB/BB-1.208-a.webp new file mode 100644 index 0000000..0e0c705 Binary files /dev/null and b/data/images/BB/BB-1.208-a.webp differ diff --git a/data/images/BB/BB-1.210-a.webp b/data/images/BB/BB-1.210-a.webp new file mode 100644 index 0000000..909f590 Binary files /dev/null and b/data/images/BB/BB-1.210-a.webp differ diff --git a/data/images/BB/BB-1.210-b.webp b/data/images/BB/BB-1.210-b.webp new file mode 100644 index 0000000..c56a9cd Binary files /dev/null and b/data/images/BB/BB-1.210-b.webp differ diff --git a/data/images/BB/BB-1.210-c.webp b/data/images/BB/BB-1.210-c.webp new file mode 100644 index 0000000..3917f47 Binary files /dev/null and b/data/images/BB/BB-1.210-c.webp differ diff --git a/data/images/BB/BB-1.211-a.webp b/data/images/BB/BB-1.211-a.webp new file mode 100644 index 0000000..ddd0d8f Binary files /dev/null and b/data/images/BB/BB-1.211-a.webp differ diff --git a/data/images/BB/BB-1.213-a.webp b/data/images/BB/BB-1.213-a.webp new file mode 100644 index 0000000..af77aab Binary files /dev/null and b/data/images/BB/BB-1.213-a.webp differ diff --git a/data/images/BB/BB-1.214-a.webp b/data/images/BB/BB-1.214-a.webp new file mode 100644 index 0000000..72438dc Binary files /dev/null and b/data/images/BB/BB-1.214-a.webp differ diff --git a/data/images/BB/BB-1.214-b.webp b/data/images/BB/BB-1.214-b.webp new file mode 100644 index 0000000..cb51a85 Binary files /dev/null and b/data/images/BB/BB-1.214-b.webp differ diff --git a/data/images/BB/BB-1.215-a.webp b/data/images/BB/BB-1.215-a.webp new file mode 100644 index 0000000..2f6fdc2 Binary files /dev/null and b/data/images/BB/BB-1.215-a.webp differ diff --git a/data/images/BB/BB-1.215-b.webp b/data/images/BB/BB-1.215-b.webp new file mode 100644 index 0000000..51a41d4 Binary files /dev/null and b/data/images/BB/BB-1.215-b.webp differ diff --git a/data/images/BB/BB-1.215-c.webp b/data/images/BB/BB-1.215-c.webp new file mode 100644 index 0000000..d5a68e4 Binary files /dev/null and b/data/images/BB/BB-1.215-c.webp differ diff --git a/data/images/BB/BB-1.302-a.webp b/data/images/BB/BB-1.302-a.webp new file mode 100644 index 0000000..d3a051e Binary files /dev/null and b/data/images/BB/BB-1.302-a.webp differ diff --git a/data/images/BB/BB-1.303-a.webp b/data/images/BB/BB-1.303-a.webp new file mode 100644 index 0000000..3ce337b Binary files /dev/null and b/data/images/BB/BB-1.303-a.webp differ diff --git a/data/images/BB/BB-1.303-b.webp b/data/images/BB/BB-1.303-b.webp new file mode 100644 index 0000000..a56dc0d Binary files /dev/null and b/data/images/BB/BB-1.303-b.webp differ diff --git a/data/images/BB/BB-1.304-a.webp b/data/images/BB/BB-1.304-a.webp new file mode 100644 index 0000000..6978d4c Binary files /dev/null and b/data/images/BB/BB-1.304-a.webp differ diff --git a/data/images/BB/BB-1.305-a.webp b/data/images/BB/BB-1.305-a.webp new file mode 100644 index 0000000..e8fe34b Binary files /dev/null and b/data/images/BB/BB-1.305-a.webp differ diff --git a/data/images/BB/BB-1.305-b.webp b/data/images/BB/BB-1.305-b.webp new file mode 100644 index 0000000..bdddc7d Binary files /dev/null and b/data/images/BB/BB-1.305-b.webp differ diff --git a/data/images/BB/BB-1.308-a.webp b/data/images/BB/BB-1.308-a.webp new file mode 100644 index 0000000..8fc8f04 Binary files /dev/null and b/data/images/BB/BB-1.308-a.webp differ diff --git a/data/images/BB/BB-1.308-b.webp b/data/images/BB/BB-1.308-b.webp new file mode 100644 index 0000000..3dad9f6 Binary files /dev/null and b/data/images/BB/BB-1.308-b.webp differ diff --git a/data/images/BB/BB-1.309-a.webp b/data/images/BB/BB-1.309-a.webp new file mode 100644 index 0000000..140b55a Binary files /dev/null and b/data/images/BB/BB-1.309-a.webp differ diff --git a/data/images/BB/BB-1.309-b.webp b/data/images/BB/BB-1.309-b.webp new file mode 100644 index 0000000..aba002a Binary files /dev/null and b/data/images/BB/BB-1.309-b.webp differ diff --git a/data/images/BB/BB-1.309-c.webp b/data/images/BB/BB-1.309-c.webp new file mode 100644 index 0000000..cdf698b Binary files /dev/null and b/data/images/BB/BB-1.309-c.webp differ diff --git a/data/images/BB/BB-1.309-d.webp b/data/images/BB/BB-1.309-d.webp new file mode 100644 index 0000000..69ab183 Binary files /dev/null and b/data/images/BB/BB-1.309-d.webp differ diff --git a/data/images/BB/BB-1.310-a.webp b/data/images/BB/BB-1.310-a.webp new file mode 100644 index 0000000..f2e360a Binary files /dev/null and b/data/images/BB/BB-1.310-a.webp differ diff --git a/data/images/BB/BB-1.310-b.webp b/data/images/BB/BB-1.310-b.webp new file mode 100644 index 0000000..6e171e2 Binary files /dev/null and b/data/images/BB/BB-1.310-b.webp differ diff --git a/data/images/BB/BB-1.310-c.webp b/data/images/BB/BB-1.310-c.webp new file mode 100644 index 0000000..37ec8ad Binary files /dev/null and b/data/images/BB/BB-1.310-c.webp differ diff --git a/data/images/BB/BB-1.311-a.webp b/data/images/BB/BB-1.311-a.webp new file mode 100644 index 0000000..3334993 Binary files /dev/null and b/data/images/BB/BB-1.311-a.webp differ diff --git a/data/images/BB/BB-1.311-b.webp b/data/images/BB/BB-1.311-b.webp new file mode 100644 index 0000000..7b4a114 Binary files /dev/null and b/data/images/BB/BB-1.311-b.webp differ diff --git a/data/images/BB/BB-1.311-c.webp b/data/images/BB/BB-1.311-c.webp new file mode 100644 index 0000000..df68156 Binary files /dev/null and b/data/images/BB/BB-1.311-c.webp differ diff --git a/data/images/BB/BB-1.311-d.webp b/data/images/BB/BB-1.311-d.webp new file mode 100644 index 0000000..e622cdc Binary files /dev/null and b/data/images/BB/BB-1.311-d.webp differ diff --git a/data/images/BB/BB-1.312-a.webp b/data/images/BB/BB-1.312-a.webp new file mode 100644 index 0000000..02b2a67 Binary files /dev/null and b/data/images/BB/BB-1.312-a.webp differ diff --git a/data/images/BB/BB-1.312-b.webp b/data/images/BB/BB-1.312-b.webp new file mode 100644 index 0000000..3f5b3e1 Binary files /dev/null and b/data/images/BB/BB-1.312-b.webp differ diff --git a/data/images/BB/BB-1.313-a.webp b/data/images/BB/BB-1.313-a.webp new file mode 100644 index 0000000..f47c2b1 Binary files /dev/null and b/data/images/BB/BB-1.313-a.webp differ diff --git a/data/images/BB/BB-1.313-b.webp b/data/images/BB/BB-1.313-b.webp new file mode 100644 index 0000000..bf65fb7 Binary files /dev/null and b/data/images/BB/BB-1.313-b.webp differ diff --git a/data/images/BB/BB-1.313-c.webp b/data/images/BB/BB-1.313-c.webp new file mode 100644 index 0000000..3debfa2 Binary files /dev/null and b/data/images/BB/BB-1.313-c.webp differ diff --git a/data/images/BB/BB-1.314-a.webp b/data/images/BB/BB-1.314-a.webp new file mode 100644 index 0000000..58bf5f0 Binary files /dev/null and b/data/images/BB/BB-1.314-a.webp differ diff --git a/data/images/BB/BB-1.314-b.webp b/data/images/BB/BB-1.314-b.webp new file mode 100644 index 0000000..73b8975 Binary files /dev/null and b/data/images/BB/BB-1.314-b.webp differ diff --git a/data/images/BB/BB-1.314-c.webp b/data/images/BB/BB-1.314-c.webp new file mode 100644 index 0000000..4042204 Binary files /dev/null and b/data/images/BB/BB-1.314-c.webp differ diff --git a/data/images/BB/BB-1.315-a.webp b/data/images/BB/BB-1.315-a.webp new file mode 100644 index 0000000..7e20496 Binary files /dev/null and b/data/images/BB/BB-1.315-a.webp differ diff --git a/data/images/BB/BB-1.315-b.webp b/data/images/BB/BB-1.315-b.webp new file mode 100644 index 0000000..1edc984 Binary files /dev/null and b/data/images/BB/BB-1.315-b.webp differ diff --git a/data/images/BB/BB-1.317-a.webp b/data/images/BB/BB-1.317-a.webp new file mode 100644 index 0000000..fbb9f9f Binary files /dev/null and b/data/images/BB/BB-1.317-a.webp differ diff --git a/data/images/BB/BB-1.401-a.webp b/data/images/BB/BB-1.401-a.webp new file mode 100644 index 0000000..8f1f9b4 Binary files /dev/null and b/data/images/BB/BB-1.401-a.webp differ diff --git a/data/images/BB/BB-1.402-a.webp b/data/images/BB/BB-1.402-a.webp new file mode 100644 index 0000000..849d597 Binary files /dev/null and b/data/images/BB/BB-1.402-a.webp differ diff --git a/data/images/BB/BB-1.403-a.webp b/data/images/BB/BB-1.403-a.webp new file mode 100644 index 0000000..fcefa32 Binary files /dev/null and b/data/images/BB/BB-1.403-a.webp differ diff --git a/data/images/BB/BB-1.403-b.webp b/data/images/BB/BB-1.403-b.webp new file mode 100644 index 0000000..0e36f64 Binary files /dev/null and b/data/images/BB/BB-1.403-b.webp differ diff --git a/data/images/BB/BB-1.405-a.webp b/data/images/BB/BB-1.405-a.webp new file mode 100644 index 0000000..b03a3e8 Binary files /dev/null and b/data/images/BB/BB-1.405-a.webp differ diff --git a/data/images/BB/BB-1.411-a.webp b/data/images/BB/BB-1.411-a.webp new file mode 100644 index 0000000..1c470e6 Binary files /dev/null and b/data/images/BB/BB-1.411-a.webp differ diff --git a/data/images/BB/BB-1.411-b.webp b/data/images/BB/BB-1.411-b.webp new file mode 100644 index 0000000..f66785a Binary files /dev/null and b/data/images/BB/BB-1.411-b.webp differ diff --git a/data/images/BB/BB-1.411-c.webp b/data/images/BB/BB-1.411-c.webp new file mode 100644 index 0000000..677522b Binary files /dev/null and b/data/images/BB/BB-1.411-c.webp differ diff --git a/data/images/BB/BB-1.412-a.webp b/data/images/BB/BB-1.412-a.webp new file mode 100644 index 0000000..8b52056 Binary files /dev/null and b/data/images/BB/BB-1.412-a.webp differ diff --git a/data/images/BB/BB-1.412-b.webp b/data/images/BB/BB-1.412-b.webp new file mode 100644 index 0000000..531b8ea Binary files /dev/null and b/data/images/BB/BB-1.412-b.webp differ diff --git a/data/images/BB/BB-1.413-a.webp b/data/images/BB/BB-1.413-a.webp new file mode 100644 index 0000000..2766782 Binary files /dev/null and b/data/images/BB/BB-1.413-a.webp differ diff --git a/data/images/BB/BB-1.414-a.webp b/data/images/BB/BB-1.414-a.webp new file mode 100644 index 0000000..985768e Binary files /dev/null and b/data/images/BB/BB-1.414-a.webp differ diff --git a/data/images/BB/BB-1.416-a.webp b/data/images/BB/BB-1.416-a.webp new file mode 100644 index 0000000..ef6843f Binary files /dev/null and b/data/images/BB/BB-1.416-a.webp differ diff --git a/data/images/BB/BB-1.417-a.webp b/data/images/BB/BB-1.417-a.webp new file mode 100644 index 0000000..b7c2937 Binary files /dev/null and b/data/images/BB/BB-1.417-a.webp differ diff --git a/data/images/BB/BB-1.417-b.webp b/data/images/BB/BB-1.417-b.webp new file mode 100644 index 0000000..73cbb1d Binary files /dev/null and b/data/images/BB/BB-1.417-b.webp differ diff --git a/data/images/BB/BB-1.514-a.webp b/data/images/BB/BB-1.514-a.webp new file mode 100644 index 0000000..483492b Binary files /dev/null and b/data/images/BB/BB-1.514-a.webp differ diff --git a/data/images/BB/BB-1.516-a.webp b/data/images/BB/BB-1.516-a.webp new file mode 100644 index 0000000..24334f5 Binary files /dev/null and b/data/images/BB/BB-1.516-a.webp differ diff --git a/data/images/BB/BB-1.517-a.webp b/data/images/BB/BB-1.517-a.webp new file mode 100644 index 0000000..39c10b8 Binary files /dev/null and b/data/images/BB/BB-1.517-a.webp differ diff --git a/data/images/BB/BB-1.518-a.webp b/data/images/BB/BB-1.518-a.webp new file mode 100644 index 0000000..4d2a3bd Binary files /dev/null and b/data/images/BB/BB-1.518-a.webp differ diff --git a/data/images/BB/BB-1.518-b.webp b/data/images/BB/BB-1.518-b.webp new file mode 100644 index 0000000..5345d36 Binary files /dev/null and b/data/images/BB/BB-1.518-b.webp differ diff --git a/data/images/BB/BB-1.518-c.webp b/data/images/BB/BB-1.518-c.webp new file mode 100644 index 0000000..a7e272f Binary files /dev/null and b/data/images/BB/BB-1.518-c.webp differ diff --git a/data/images/BB/BB-1.609-a.webp b/data/images/BB/BB-1.609-a.webp new file mode 100644 index 0000000..ba166b9 Binary files /dev/null and b/data/images/BB/BB-1.609-a.webp differ diff --git a/data/images/BB/BB-1.615-a.webp b/data/images/BB/BB-1.615-a.webp new file mode 100644 index 0000000..bca8e9f Binary files /dev/null and b/data/images/BB/BB-1.615-a.webp differ diff --git a/data/images/BB/BB-1.616-a.webp b/data/images/BB/BB-1.616-a.webp new file mode 100644 index 0000000..5f26e6e Binary files /dev/null and b/data/images/BB/BB-1.616-a.webp differ diff --git a/data/images/BB/BB-1.618-a.webp b/data/images/BB/BB-1.618-a.webp new file mode 100644 index 0000000..feb3000 Binary files /dev/null and b/data/images/BB/BB-1.618-a.webp differ diff --git a/data/images/BB/BB-1.618-b.webp b/data/images/BB/BB-1.618-b.webp new file mode 100644 index 0000000..74079ea Binary files /dev/null and b/data/images/BB/BB-1.618-b.webp differ diff --git a/data/images/BB/BB-1.619-a.webp b/data/images/BB/BB-1.619-a.webp new file mode 100644 index 0000000..65526ad Binary files /dev/null and b/data/images/BB/BB-1.619-a.webp differ diff --git a/data/images/BB/BB-1.716-a.webp b/data/images/BB/BB-1.716-a.webp new file mode 100644 index 0000000..39a7a1d Binary files /dev/null and b/data/images/BB/BB-1.716-a.webp differ diff --git a/data/images/BB/BB-1.718-a.webp b/data/images/BB/BB-1.718-a.webp new file mode 100644 index 0000000..b340c4d Binary files /dev/null and b/data/images/BB/BB-1.718-a.webp differ diff --git a/data/images/BB/BB-2.101-a.webp b/data/images/BB/BB-2.101-a.webp new file mode 100644 index 0000000..a36c8dc Binary files /dev/null and b/data/images/BB/BB-2.101-a.webp differ diff --git a/data/images/BB/BB-2.101-b.webp b/data/images/BB/BB-2.101-b.webp new file mode 100644 index 0000000..4c1c102 Binary files /dev/null and b/data/images/BB/BB-2.101-b.webp differ diff --git a/data/images/BB/BB-2.105-a.webp b/data/images/BB/BB-2.105-a.webp new file mode 100644 index 0000000..ed07b0c Binary files /dev/null and b/data/images/BB/BB-2.105-a.webp differ diff --git a/data/images/BB/BB-2.107-a.webp b/data/images/BB/BB-2.107-a.webp new file mode 100644 index 0000000..784964a Binary files /dev/null and b/data/images/BB/BB-2.107-a.webp differ diff --git a/data/images/BB/BB-2.108-a.webp b/data/images/BB/BB-2.108-a.webp new file mode 100644 index 0000000..faffa5c Binary files /dev/null and b/data/images/BB/BB-2.108-a.webp differ diff --git a/data/images/BB/BB-2.108-b.webp b/data/images/BB/BB-2.108-b.webp new file mode 100644 index 0000000..689a219 Binary files /dev/null and b/data/images/BB/BB-2.108-b.webp differ diff --git a/data/images/BB/BB-2.110-a.webp b/data/images/BB/BB-2.110-a.webp new file mode 100644 index 0000000..f359273 Binary files /dev/null and b/data/images/BB/BB-2.110-a.webp differ diff --git a/data/images/BB/BB-2.110-b.webp b/data/images/BB/BB-2.110-b.webp new file mode 100644 index 0000000..e890fe7 Binary files /dev/null and b/data/images/BB/BB-2.110-b.webp differ diff --git a/data/images/BB/BB-2.112-a.webp b/data/images/BB/BB-2.112-a.webp new file mode 100644 index 0000000..66601c7 Binary files /dev/null and b/data/images/BB/BB-2.112-a.webp differ diff --git a/data/images/BB/BB-2.112-b.webp b/data/images/BB/BB-2.112-b.webp new file mode 100644 index 0000000..b81ec06 Binary files /dev/null and b/data/images/BB/BB-2.112-b.webp differ diff --git a/data/images/BB/BB-2.202-a.webp b/data/images/BB/BB-2.202-a.webp new file mode 100644 index 0000000..cd42ca7 Binary files /dev/null and b/data/images/BB/BB-2.202-a.webp differ diff --git a/data/images/BB/BB-2.203-a.webp b/data/images/BB/BB-2.203-a.webp new file mode 100644 index 0000000..58ce39e Binary files /dev/null and b/data/images/BB/BB-2.203-a.webp differ diff --git a/data/images/BB/BB-2.203-b.webp b/data/images/BB/BB-2.203-b.webp new file mode 100644 index 0000000..ac78139 Binary files /dev/null and b/data/images/BB/BB-2.203-b.webp differ diff --git a/data/images/BB/BB-2.204-a.webp b/data/images/BB/BB-2.204-a.webp new file mode 100644 index 0000000..0b7eace Binary files /dev/null and b/data/images/BB/BB-2.204-a.webp differ diff --git a/data/images/BB/BB-2.206-a.webp b/data/images/BB/BB-2.206-a.webp new file mode 100644 index 0000000..6e68abc Binary files /dev/null and b/data/images/BB/BB-2.206-a.webp differ diff --git a/data/images/BB/BB-2.207-a.webp b/data/images/BB/BB-2.207-a.webp new file mode 100644 index 0000000..f12f9f7 Binary files /dev/null and b/data/images/BB/BB-2.207-a.webp differ diff --git a/data/images/BB/BB-2.208-a.webp b/data/images/BB/BB-2.208-a.webp new file mode 100644 index 0000000..0c437e5 Binary files /dev/null and b/data/images/BB/BB-2.208-a.webp differ diff --git a/data/images/BB/BB-2.208-b.webp b/data/images/BB/BB-2.208-b.webp new file mode 100644 index 0000000..5f923c3 Binary files /dev/null and b/data/images/BB/BB-2.208-b.webp differ diff --git a/data/images/BB/BB-2.209-a.webp b/data/images/BB/BB-2.209-a.webp new file mode 100644 index 0000000..77d1c09 Binary files /dev/null and b/data/images/BB/BB-2.209-a.webp differ diff --git a/data/images/BB/BB-2.209-b.webp b/data/images/BB/BB-2.209-b.webp new file mode 100644 index 0000000..b103a1d Binary files /dev/null and b/data/images/BB/BB-2.209-b.webp differ diff --git a/data/images/BB/BB-2.210-a.webp b/data/images/BB/BB-2.210-a.webp new file mode 100644 index 0000000..fe96f83 Binary files /dev/null and b/data/images/BB/BB-2.210-a.webp differ diff --git a/data/images/BB/BB-2.211-a.webp b/data/images/BB/BB-2.211-a.webp new file mode 100644 index 0000000..7600f23 Binary files /dev/null and b/data/images/BB/BB-2.211-a.webp differ diff --git a/data/images/BB/BB-2.212-a.webp b/data/images/BB/BB-2.212-a.webp new file mode 100644 index 0000000..f2df492 Binary files /dev/null and b/data/images/BB/BB-2.212-a.webp differ diff --git a/data/images/BB/BB-2.301-a.webp b/data/images/BB/BB-2.301-a.webp new file mode 100644 index 0000000..928dcbd Binary files /dev/null and b/data/images/BB/BB-2.301-a.webp differ diff --git a/data/images/BB/BB-2.302-a.webp b/data/images/BB/BB-2.302-a.webp new file mode 100644 index 0000000..edc995b Binary files /dev/null and b/data/images/BB/BB-2.302-a.webp differ diff --git a/data/images/BB/BB-2.303-a.webp b/data/images/BB/BB-2.303-a.webp new file mode 100644 index 0000000..e6c87f0 Binary files /dev/null and b/data/images/BB/BB-2.303-a.webp differ diff --git a/data/images/BB/BB-2.305-a.webp b/data/images/BB/BB-2.305-a.webp new file mode 100644 index 0000000..cd3e347 Binary files /dev/null and b/data/images/BB/BB-2.305-a.webp differ diff --git a/data/images/BB/BB-2.306-a.webp b/data/images/BB/BB-2.306-a.webp new file mode 100644 index 0000000..39b856e Binary files /dev/null and b/data/images/BB/BB-2.306-a.webp differ diff --git a/data/images/BB/BB-2.306-b.webp b/data/images/BB/BB-2.306-b.webp new file mode 100644 index 0000000..4948664 Binary files /dev/null and b/data/images/BB/BB-2.306-b.webp differ diff --git a/data/images/BB/BB-2.308-a.webp b/data/images/BB/BB-2.308-a.webp new file mode 100644 index 0000000..6ed1a37 Binary files /dev/null and b/data/images/BB/BB-2.308-a.webp differ diff --git a/data/images/BB/BB-2.310-a.webp b/data/images/BB/BB-2.310-a.webp new file mode 100644 index 0000000..515d4fb Binary files /dev/null and b/data/images/BB/BB-2.310-a.webp differ diff --git a/data/images/BB/BB-2.311-a.webp b/data/images/BB/BB-2.311-a.webp new file mode 100644 index 0000000..a917ecb Binary files /dev/null and b/data/images/BB/BB-2.311-a.webp differ diff --git a/data/images/BB/BB-2.402-a.webp b/data/images/BB/BB-2.402-a.webp new file mode 100644 index 0000000..8062c0b Binary files /dev/null and b/data/images/BB/BB-2.402-a.webp differ diff --git a/data/images/BB/BB-2.403-a.webp b/data/images/BB/BB-2.403-a.webp new file mode 100644 index 0000000..a5346dd Binary files /dev/null and b/data/images/BB/BB-2.403-a.webp differ diff --git a/data/images/BB/BB-2.404-a.webp b/data/images/BB/BB-2.404-a.webp new file mode 100644 index 0000000..831b785 Binary files /dev/null and b/data/images/BB/BB-2.404-a.webp differ diff --git a/data/images/BB/BB-2.405-a.webp b/data/images/BB/BB-2.405-a.webp new file mode 100644 index 0000000..78e6f95 Binary files /dev/null and b/data/images/BB/BB-2.405-a.webp differ diff --git a/data/images/BB/BB-2.407-a.webp b/data/images/BB/BB-2.407-a.webp new file mode 100644 index 0000000..7dfc23b Binary files /dev/null and b/data/images/BB/BB-2.407-a.webp differ diff --git a/data/images/BB/BB-2.408-a.webp b/data/images/BB/BB-2.408-a.webp new file mode 100644 index 0000000..9aca343 Binary files /dev/null and b/data/images/BB/BB-2.408-a.webp differ diff --git a/data/images/BB/BB-2.408-b.webp b/data/images/BB/BB-2.408-b.webp new file mode 100644 index 0000000..dba8bff Binary files /dev/null and b/data/images/BB/BB-2.408-b.webp differ diff --git a/data/images/BB/BB-2.408-c.webp b/data/images/BB/BB-2.408-c.webp new file mode 100644 index 0000000..dfd99c8 Binary files /dev/null and b/data/images/BB/BB-2.408-c.webp differ diff --git a/data/images/BB/BB-2.409-a.webp b/data/images/BB/BB-2.409-a.webp new file mode 100644 index 0000000..7182cc8 Binary files /dev/null and b/data/images/BB/BB-2.409-a.webp differ diff --git a/data/images/BB/BB-2.411-a.webp b/data/images/BB/BB-2.411-a.webp new file mode 100644 index 0000000..f748dd3 Binary files /dev/null and b/data/images/BB/BB-2.411-a.webp differ diff --git a/data/images/BB/BB-2.412-a.webp b/data/images/BB/BB-2.412-a.webp new file mode 100644 index 0000000..9e16cd4 Binary files /dev/null and b/data/images/BB/BB-2.412-a.webp differ diff --git a/data/images/BB/BB-2.504-a.webp b/data/images/BB/BB-2.504-a.webp new file mode 100644 index 0000000..2eba03c Binary files /dev/null and b/data/images/BB/BB-2.504-a.webp differ diff --git a/data/images/BB/BB-2.505-a.webp b/data/images/BB/BB-2.505-a.webp new file mode 100644 index 0000000..74424a2 Binary files /dev/null and b/data/images/BB/BB-2.505-a.webp differ diff --git a/data/images/BB/BB-2.506-a.webp b/data/images/BB/BB-2.506-a.webp new file mode 100644 index 0000000..72a118e Binary files /dev/null and b/data/images/BB/BB-2.506-a.webp differ diff --git a/data/images/BB/BB-2.512-a.webp b/data/images/BB/BB-2.512-a.webp new file mode 100644 index 0000000..b0583ec Binary files /dev/null and b/data/images/BB/BB-2.512-a.webp differ diff --git a/data/images/BB/BB-3.101-a.webp b/data/images/BB/BB-3.101-a.webp new file mode 100644 index 0000000..50d9958 Binary files /dev/null and b/data/images/BB/BB-3.101-a.webp differ diff --git a/data/images/BB/BB-3.201-a.webp b/data/images/BB/BB-3.201-a.webp new file mode 100644 index 0000000..e64cf8e Binary files /dev/null and b/data/images/BB/BB-3.201-a.webp differ diff --git a/data/images/BB/BB-3.206-a.webp b/data/images/BB/BB-3.206-a.webp new file mode 100644 index 0000000..4e48a33 Binary files /dev/null and b/data/images/BB/BB-3.206-a.webp differ diff --git a/data/images/BB/BB-3.207-a.webp b/data/images/BB/BB-3.207-a.webp new file mode 100644 index 0000000..8e1ab6e Binary files /dev/null and b/data/images/BB/BB-3.207-a.webp differ diff --git a/data/images/BB/BB-3.208-a.webp b/data/images/BB/BB-3.208-a.webp new file mode 100644 index 0000000..d960a3d Binary files /dev/null and b/data/images/BB/BB-3.208-a.webp differ diff --git a/data/images/BB/BB-3.208-b.webp b/data/images/BB/BB-3.208-b.webp new file mode 100644 index 0000000..9da52d3 Binary files /dev/null and b/data/images/BB/BB-3.208-b.webp differ diff --git a/data/images/BB/BB-3.302-a.webp b/data/images/BB/BB-3.302-a.webp new file mode 100644 index 0000000..1b83071 Binary files /dev/null and b/data/images/BB/BB-3.302-a.webp differ diff --git a/data/images/BB/BB-3.304-a.webp b/data/images/BB/BB-3.304-a.webp new file mode 100644 index 0000000..4b4ca78 Binary files /dev/null and b/data/images/BB/BB-3.304-a.webp differ diff --git a/data/images/BB/BB-3.305-a.webp b/data/images/BB/BB-3.305-a.webp new file mode 100644 index 0000000..e69f37b Binary files /dev/null and b/data/images/BB/BB-3.305-a.webp differ diff --git a/data/images/BB/BB-3.307-a.webp b/data/images/BB/BB-3.307-a.webp new file mode 100644 index 0000000..9e5690f Binary files /dev/null and b/data/images/BB/BB-3.307-a.webp differ diff --git a/data/images/BB/BB-3.401-a.webp b/data/images/BB/BB-3.401-a.webp new file mode 100644 index 0000000..b5d7fe5 Binary files /dev/null and b/data/images/BB/BB-3.401-a.webp differ diff --git a/data/images/BB/BB-3.402-a.webp b/data/images/BB/BB-3.402-a.webp new file mode 100644 index 0000000..33836cf Binary files /dev/null and b/data/images/BB/BB-3.402-a.webp differ diff --git a/data/images/BB/BB-3.403-a.webp b/data/images/BB/BB-3.403-a.webp new file mode 100644 index 0000000..2024206 Binary files /dev/null and b/data/images/BB/BB-3.403-a.webp differ diff --git a/data/images/BB/BB-3.404-a.webp b/data/images/BB/BB-3.404-a.webp new file mode 100644 index 0000000..485662d Binary files /dev/null and b/data/images/BB/BB-3.404-a.webp differ diff --git a/data/images/BB/BB-3.405-a.webp b/data/images/BB/BB-3.405-a.webp new file mode 100644 index 0000000..41cd7cf Binary files /dev/null and b/data/images/BB/BB-3.405-a.webp differ diff --git a/data/images/BB/BB-3.406-a.webp b/data/images/BB/BB-3.406-a.webp new file mode 100644 index 0000000..c0a27a9 Binary files /dev/null and b/data/images/BB/BB-3.406-a.webp differ diff --git a/data/images/BB/BB-3.407-a.webp b/data/images/BB/BB-3.407-a.webp new file mode 100644 index 0000000..4850ce6 Binary files /dev/null and b/data/images/BB/BB-3.407-a.webp differ diff --git a/data/images/BB/BB-3.407-b.webp b/data/images/BB/BB-3.407-b.webp new file mode 100644 index 0000000..ddf0a31 Binary files /dev/null and b/data/images/BB/BB-3.407-b.webp differ diff --git a/data/images/BB/BB-3.408-a.webp b/data/images/BB/BB-3.408-a.webp new file mode 100644 index 0000000..476c872 Binary files /dev/null and b/data/images/BB/BB-3.408-a.webp differ diff --git a/data/images/BB/BB-3.501-a.webp b/data/images/BB/BB-3.501-a.webp new file mode 100644 index 0000000..71049d0 Binary files /dev/null and b/data/images/BB/BB-3.501-a.webp differ diff --git a/data/images/BB/BB-3.504-a.webp b/data/images/BB/BB-3.504-a.webp new file mode 100644 index 0000000..36f3c17 Binary files /dev/null and b/data/images/BB/BB-3.504-a.webp differ diff --git a/data/images/BB/BB-3.505-a.webp b/data/images/BB/BB-3.505-a.webp new file mode 100644 index 0000000..4d9e875 Binary files /dev/null and b/data/images/BB/BB-3.505-a.webp differ diff --git a/data/images/BB/BB-3.507-a.webp b/data/images/BB/BB-3.507-a.webp new file mode 100644 index 0000000..6c24707 Binary files /dev/null and b/data/images/BB/BB-3.507-a.webp differ diff --git a/data/images/BB/BB-4.101-a.webp b/data/images/BB/BB-4.101-a.webp new file mode 100644 index 0000000..ed2ebe6 Binary files /dev/null and b/data/images/BB/BB-4.101-a.webp differ diff --git a/data/images/BB/BB-4.102-a.webp b/data/images/BB/BB-4.102-a.webp new file mode 100644 index 0000000..688797b Binary files /dev/null and b/data/images/BB/BB-4.102-a.webp differ diff --git a/data/images/BB/BB-4.102-b.webp b/data/images/BB/BB-4.102-b.webp new file mode 100644 index 0000000..c103295 Binary files /dev/null and b/data/images/BB/BB-4.102-b.webp differ diff --git a/data/images/BB/BB-4.103-a.webp b/data/images/BB/BB-4.103-a.webp new file mode 100644 index 0000000..ddfb4d1 Binary files /dev/null and b/data/images/BB/BB-4.103-a.webp differ diff --git a/data/images/BB/BB-4.103-b.webp b/data/images/BB/BB-4.103-b.webp new file mode 100644 index 0000000..c345e32 Binary files /dev/null and b/data/images/BB/BB-4.103-b.webp differ diff --git a/data/images/BB/BB-4.105-a.webp b/data/images/BB/BB-4.105-a.webp new file mode 100644 index 0000000..637ee26 Binary files /dev/null and b/data/images/BB/BB-4.105-a.webp differ diff --git a/data/images/BB/BB-4.107-a.webp b/data/images/BB/BB-4.107-a.webp new file mode 100644 index 0000000..f7ab48d Binary files /dev/null and b/data/images/BB/BB-4.107-a.webp differ diff --git a/data/images/BB/BB-4.107-b.webp b/data/images/BB/BB-4.107-b.webp new file mode 100644 index 0000000..fac1616 Binary files /dev/null and b/data/images/BB/BB-4.107-b.webp differ diff --git a/data/images/BB/BB-4.107-c.webp b/data/images/BB/BB-4.107-c.webp new file mode 100644 index 0000000..99e2c86 Binary files /dev/null and b/data/images/BB/BB-4.107-c.webp differ diff --git a/data/images/BB/BB-4.108-a.webp b/data/images/BB/BB-4.108-a.webp new file mode 100644 index 0000000..42880df Binary files /dev/null and b/data/images/BB/BB-4.108-a.webp differ diff --git a/data/images/BB/BB-4.108-b.webp b/data/images/BB/BB-4.108-b.webp new file mode 100644 index 0000000..51370b1 Binary files /dev/null and b/data/images/BB/BB-4.108-b.webp differ diff --git a/data/images/BB/BB-4.108-c.webp b/data/images/BB/BB-4.108-c.webp new file mode 100644 index 0000000..9bee3d3 Binary files /dev/null and b/data/images/BB/BB-4.108-c.webp differ diff --git a/data/images/BB/BB-4.109-a.webp b/data/images/BB/BB-4.109-a.webp new file mode 100644 index 0000000..c7ad5c8 Binary files /dev/null and b/data/images/BB/BB-4.109-a.webp differ diff --git a/data/images/BB/BB-4.109-b.webp b/data/images/BB/BB-4.109-b.webp new file mode 100644 index 0000000..2ed6a17 Binary files /dev/null and b/data/images/BB/BB-4.109-b.webp differ diff --git a/data/images/BB/BB-4.109-c.webp b/data/images/BB/BB-4.109-c.webp new file mode 100644 index 0000000..3682576 Binary files /dev/null and b/data/images/BB/BB-4.109-c.webp differ diff --git a/data/images/BB/BB-4.202-a.webp b/data/images/BB/BB-4.202-a.webp new file mode 100644 index 0000000..a812d7b Binary files /dev/null and b/data/images/BB/BB-4.202-a.webp differ diff --git a/data/images/BB/BB-4.203-a.webp b/data/images/BB/BB-4.203-a.webp new file mode 100644 index 0000000..7fb1a7f Binary files /dev/null and b/data/images/BB/BB-4.203-a.webp differ diff --git a/data/images/BB/BB-4.204-a.webp b/data/images/BB/BB-4.204-a.webp new file mode 100644 index 0000000..ae91edc Binary files /dev/null and b/data/images/BB/BB-4.204-a.webp differ diff --git a/data/images/BB/BB-4.204-b.webp b/data/images/BB/BB-4.204-b.webp new file mode 100644 index 0000000..30ae178 Binary files /dev/null and b/data/images/BB/BB-4.204-b.webp differ diff --git a/data/images/BB/BB-4.206-a.webp b/data/images/BB/BB-4.206-a.webp new file mode 100644 index 0000000..48346e2 Binary files /dev/null and b/data/images/BB/BB-4.206-a.webp differ diff --git a/data/images/BB/BB-4.206-b.webp b/data/images/BB/BB-4.206-b.webp new file mode 100644 index 0000000..6551497 Binary files /dev/null and b/data/images/BB/BB-4.206-b.webp differ diff --git a/data/images/BB/BB-4.207-a.webp b/data/images/BB/BB-4.207-a.webp new file mode 100644 index 0000000..682365f Binary files /dev/null and b/data/images/BB/BB-4.207-a.webp differ diff --git a/data/images/BB/BB-4.208-a.webp b/data/images/BB/BB-4.208-a.webp new file mode 100644 index 0000000..09ba208 Binary files /dev/null and b/data/images/BB/BB-4.208-a.webp differ diff --git a/data/images/BB/BB-4.209-a.webp b/data/images/BB/BB-4.209-a.webp new file mode 100644 index 0000000..f7379cd Binary files /dev/null and b/data/images/BB/BB-4.209-a.webp differ diff --git a/data/images/BB/BB-4.210-a.webp b/data/images/BB/BB-4.210-a.webp new file mode 100644 index 0000000..4532592 Binary files /dev/null and b/data/images/BB/BB-4.210-a.webp differ diff --git a/data/images/BB/BB-4.210-b.webp b/data/images/BB/BB-4.210-b.webp new file mode 100644 index 0000000..5a2405b Binary files /dev/null and b/data/images/BB/BB-4.210-b.webp differ diff --git a/data/images/BB/BB-4.304-a.webp b/data/images/BB/BB-4.304-a.webp new file mode 100644 index 0000000..2509e4e Binary files /dev/null and b/data/images/BB/BB-4.304-a.webp differ diff --git a/data/images/BB/BB-4.305-a.webp b/data/images/BB/BB-4.305-a.webp new file mode 100644 index 0000000..7011e8e Binary files /dev/null and b/data/images/BB/BB-4.305-a.webp differ diff --git a/data/images/BB/BB-4.306-a.webp b/data/images/BB/BB-4.306-a.webp new file mode 100644 index 0000000..5826ecd Binary files /dev/null and b/data/images/BB/BB-4.306-a.webp differ diff --git a/data/images/BB/BB-4.307-a.webp b/data/images/BB/BB-4.307-a.webp new file mode 100644 index 0000000..b092e8e Binary files /dev/null and b/data/images/BB/BB-4.307-a.webp differ diff --git a/data/images/BB/BB-4.308-a.webp b/data/images/BB/BB-4.308-a.webp new file mode 100644 index 0000000..9a49974 Binary files /dev/null and b/data/images/BB/BB-4.308-a.webp differ diff --git a/data/images/BB/BB-4.308-b.webp b/data/images/BB/BB-4.308-b.webp new file mode 100644 index 0000000..84a810e Binary files /dev/null and b/data/images/BB/BB-4.308-b.webp differ diff --git a/data/images/BB/BB-4.309-a.webp b/data/images/BB/BB-4.309-a.webp new file mode 100644 index 0000000..58d5b05 Binary files /dev/null and b/data/images/BB/BB-4.309-a.webp differ diff --git a/data/images/BB/BB-4.309-b.webp b/data/images/BB/BB-4.309-b.webp new file mode 100644 index 0000000..70c8193 Binary files /dev/null and b/data/images/BB/BB-4.309-b.webp differ diff --git a/data/images/BB/BB-4.309-c.webp b/data/images/BB/BB-4.309-c.webp new file mode 100644 index 0000000..e60f6f4 Binary files /dev/null and b/data/images/BB/BB-4.309-c.webp differ diff --git a/data/images/BB/BB-4.310-a.webp b/data/images/BB/BB-4.310-a.webp new file mode 100644 index 0000000..ed0509a Binary files /dev/null and b/data/images/BB/BB-4.310-a.webp differ diff --git a/data/images/BB/BB-5.201-a.webp b/data/images/BB/BB-5.201-a.webp new file mode 100644 index 0000000..9740be0 Binary files /dev/null and b/data/images/BB/BB-5.201-a.webp differ diff --git a/data/images/BB/BB-5.201-b.webp b/data/images/BB/BB-5.201-b.webp new file mode 100644 index 0000000..9f0e49f Binary files /dev/null and b/data/images/BB/BB-5.201-b.webp differ diff --git a/data/images/BB/BB-5.202-a.webp b/data/images/BB/BB-5.202-a.webp new file mode 100644 index 0000000..be68dca Binary files /dev/null and b/data/images/BB/BB-5.202-a.webp differ diff --git a/data/images/BB/BB-5.204-a.webp b/data/images/BB/BB-5.204-a.webp new file mode 100644 index 0000000..870364b Binary files /dev/null and b/data/images/BB/BB-5.204-a.webp differ diff --git a/data/images/BB/BB-5.204-b.webp b/data/images/BB/BB-5.204-b.webp new file mode 100644 index 0000000..52390bc Binary files /dev/null and b/data/images/BB/BB-5.204-b.webp differ diff --git a/data/images/BB/BB-5.206-a.webp b/data/images/BB/BB-5.206-a.webp new file mode 100644 index 0000000..0e1fde0 Binary files /dev/null and b/data/images/BB/BB-5.206-a.webp differ diff --git a/data/images/BB/BB-5.206-b.webp b/data/images/BB/BB-5.206-b.webp new file mode 100644 index 0000000..f5c4fb7 Binary files /dev/null and b/data/images/BB/BB-5.206-b.webp differ diff --git a/data/images/BB/BB-5.207-a.webp b/data/images/BB/BB-5.207-a.webp new file mode 100644 index 0000000..783fa12 Binary files /dev/null and b/data/images/BB/BB-5.207-a.webp differ diff --git a/data/images/BB/BB-5.207-b.webp b/data/images/BB/BB-5.207-b.webp new file mode 100644 index 0000000..d662050 Binary files /dev/null and b/data/images/BB/BB-5.207-b.webp differ diff --git a/data/images/BB/BB-5.208-a.webp b/data/images/BB/BB-5.208-a.webp new file mode 100644 index 0000000..d295db4 Binary files /dev/null and b/data/images/BB/BB-5.208-a.webp differ diff --git a/data/images/BB/BB-5.301-a.webp b/data/images/BB/BB-5.301-a.webp new file mode 100644 index 0000000..31c667d Binary files /dev/null and b/data/images/BB/BB-5.301-a.webp differ diff --git a/data/images/BB/BB-5.302-a.webp b/data/images/BB/BB-5.302-a.webp new file mode 100644 index 0000000..bc030e1 Binary files /dev/null and b/data/images/BB/BB-5.302-a.webp differ diff --git a/data/images/BB/BB-5.303-a.webp b/data/images/BB/BB-5.303-a.webp new file mode 100644 index 0000000..d81c38c Binary files /dev/null and b/data/images/BB/BB-5.303-a.webp differ diff --git a/data/images/BB/BB-5.304-a.webp b/data/images/BB/BB-5.304-a.webp new file mode 100644 index 0000000..91bc3aa Binary files /dev/null and b/data/images/BB/BB-5.304-a.webp differ diff --git a/data/images/BB/BB-5.306-a.webp b/data/images/BB/BB-5.306-a.webp new file mode 100644 index 0000000..68eaa48 Binary files /dev/null and b/data/images/BB/BB-5.306-a.webp differ diff --git a/data/images/BB/BB-5.307-a.webp b/data/images/BB/BB-5.307-a.webp new file mode 100644 index 0000000..ef9fa33 Binary files /dev/null and b/data/images/BB/BB-5.307-a.webp differ diff --git a/data/images/BB/BB-5.307-b.webp b/data/images/BB/BB-5.307-b.webp new file mode 100644 index 0000000..92f60bc Binary files /dev/null and b/data/images/BB/BB-5.307-b.webp differ diff --git a/data/images/BB/BB-5.310-a.webp b/data/images/BB/BB-5.310-a.webp new file mode 100644 index 0000000..dddd392 Binary files /dev/null and b/data/images/BB/BB-5.310-a.webp differ diff --git a/data/images/BB/BB-5.312-a.webp b/data/images/BB/BB-5.312-a.webp new file mode 100644 index 0000000..57e7edc Binary files /dev/null and b/data/images/BB/BB-5.312-a.webp differ diff --git a/data/images/BB/BB-5.312-b.webp b/data/images/BB/BB-5.312-b.webp new file mode 100644 index 0000000..c1e8842 Binary files /dev/null and b/data/images/BB/BB-5.312-b.webp differ diff --git a/data/images/BB/BB-5.312-c.webp b/data/images/BB/BB-5.312-c.webp new file mode 100644 index 0000000..7ecbbbd Binary files /dev/null and b/data/images/BB/BB-5.312-c.webp differ diff --git a/data/images/BB/BB-5.313-a.webp b/data/images/BB/BB-5.313-a.webp new file mode 100644 index 0000000..0987f40 Binary files /dev/null and b/data/images/BB/BB-5.313-a.webp differ diff --git a/data/images/BB/BB-5.313-b.webp b/data/images/BB/BB-5.313-b.webp new file mode 100644 index 0000000..5a60470 Binary files /dev/null and b/data/images/BB/BB-5.313-b.webp differ diff --git a/data/images/BB/BB-5.313-c.webp b/data/images/BB/BB-5.313-c.webp new file mode 100644 index 0000000..6f41f9f Binary files /dev/null and b/data/images/BB/BB-5.313-c.webp differ diff --git a/data/images/BB/BB-5.401-a.webp b/data/images/BB/BB-5.401-a.webp new file mode 100644 index 0000000..068f10d Binary files /dev/null and b/data/images/BB/BB-5.401-a.webp differ diff --git a/data/images/BB/BB-5.401-b.webp b/data/images/BB/BB-5.401-b.webp new file mode 100644 index 0000000..51f241e Binary files /dev/null and b/data/images/BB/BB-5.401-b.webp differ diff --git a/data/images/BB/BB-5.402-a.webp b/data/images/BB/BB-5.402-a.webp new file mode 100644 index 0000000..9ed66ab Binary files /dev/null and b/data/images/BB/BB-5.402-a.webp differ diff --git a/data/images/BB/BB-5.403-a.webp b/data/images/BB/BB-5.403-a.webp new file mode 100644 index 0000000..dc82e5f Binary files /dev/null and b/data/images/BB/BB-5.403-a.webp differ diff --git a/data/images/BB/BB-5.404-a.webp b/data/images/BB/BB-5.404-a.webp new file mode 100644 index 0000000..dd49e28 Binary files /dev/null and b/data/images/BB/BB-5.404-a.webp differ diff --git a/data/images/BB/BB-5.405-a.webp b/data/images/BB/BB-5.405-a.webp new file mode 100644 index 0000000..b247448 Binary files /dev/null and b/data/images/BB/BB-5.405-a.webp differ diff --git a/data/images/BB/BB-5.405-b.webp b/data/images/BB/BB-5.405-b.webp new file mode 100644 index 0000000..0ca3045 Binary files /dev/null and b/data/images/BB/BB-5.405-b.webp differ diff --git a/data/images/BB/BB-5.405-c.webp b/data/images/BB/BB-5.405-c.webp new file mode 100644 index 0000000..0936281 Binary files /dev/null and b/data/images/BB/BB-5.405-c.webp differ diff --git a/data/images/BB/BB-5.406-a.webp b/data/images/BB/BB-5.406-a.webp new file mode 100644 index 0000000..d1b6248 Binary files /dev/null and b/data/images/BB/BB-5.406-a.webp differ diff --git a/data/images/BB/BB-5.407-a.webp b/data/images/BB/BB-5.407-a.webp new file mode 100644 index 0000000..2f23421 Binary files /dev/null and b/data/images/BB/BB-5.407-a.webp differ diff --git a/data/images/BB/BB-5.408-a.webp b/data/images/BB/BB-5.408-a.webp new file mode 100644 index 0000000..078dd2d Binary files /dev/null and b/data/images/BB/BB-5.408-a.webp differ diff --git a/data/images/BB/BB-5.408-b.webp b/data/images/BB/BB-5.408-b.webp new file mode 100644 index 0000000..352d796 Binary files /dev/null and b/data/images/BB/BB-5.408-b.webp differ diff --git a/data/images/BB/BB-5.409-a.webp b/data/images/BB/BB-5.409-a.webp new file mode 100644 index 0000000..4433c78 Binary files /dev/null and b/data/images/BB/BB-5.409-a.webp differ diff --git a/data/images/BB/BB-5.409-b.webp b/data/images/BB/BB-5.409-b.webp new file mode 100644 index 0000000..7dfdd30 Binary files /dev/null and b/data/images/BB/BB-5.409-b.webp differ diff --git a/data/images/BB/BB-5.410-a.webp b/data/images/BB/BB-5.410-a.webp new file mode 100644 index 0000000..2d8329e Binary files /dev/null and b/data/images/BB/BB-5.410-a.webp differ diff --git a/data/images/BB/BB-5.411-a.webp b/data/images/BB/BB-5.411-a.webp new file mode 100644 index 0000000..2b9395a Binary files /dev/null and b/data/images/BB/BB-5.411-a.webp differ diff --git a/data/images/BB/BB-5.501-a.webp b/data/images/BB/BB-5.501-a.webp new file mode 100644 index 0000000..1ffbede Binary files /dev/null and b/data/images/BB/BB-5.501-a.webp differ diff --git a/data/images/BB/BB-5.505-a.webp b/data/images/BB/BB-5.505-a.webp new file mode 100644 index 0000000..6ef3f45 Binary files /dev/null and b/data/images/BB/BB-5.505-a.webp differ diff --git a/data/images/BB/BB-5.508-a.webp b/data/images/BB/BB-5.508-a.webp new file mode 100644 index 0000000..fe4f2ae Binary files /dev/null and b/data/images/BB/BB-5.508-a.webp differ diff --git a/data/images/BB/BB-5.508-b.webp b/data/images/BB/BB-5.508-b.webp new file mode 100644 index 0000000..c8f2b3e Binary files /dev/null and b/data/images/BB/BB-5.508-b.webp differ diff --git a/data/images/BB/BB-5.508-c.webp b/data/images/BB/BB-5.508-c.webp new file mode 100644 index 0000000..04f810e Binary files /dev/null and b/data/images/BB/BB-5.508-c.webp differ diff --git a/data/images/BB/BB-5.510-a.webp b/data/images/BB/BB-5.510-a.webp new file mode 100644 index 0000000..0cb283b Binary files /dev/null and b/data/images/BB/BB-5.510-a.webp differ diff --git a/data/images/BB/BB-5.511-a.webp b/data/images/BB/BB-5.511-a.webp new file mode 100644 index 0000000..c478d27 Binary files /dev/null and b/data/images/BB/BB-5.511-a.webp differ diff --git a/data/images/BB/BB-5.512-a.webp b/data/images/BB/BB-5.512-a.webp new file mode 100644 index 0000000..12e1cd1 Binary files /dev/null and b/data/images/BB/BB-5.512-a.webp differ diff --git a/data/images/BB/BB-5.611-a.webp b/data/images/BB/BB-5.611-a.webp new file mode 100644 index 0000000..00b24e0 Binary files /dev/null and b/data/images/BB/BB-5.611-a.webp differ diff --git a/data/images/BB/BB-5.612-a.webp b/data/images/BB/BB-5.612-a.webp new file mode 100644 index 0000000..a9303fd Binary files /dev/null and b/data/images/BB/BB-5.612-a.webp differ diff --git a/data/images/BB/BB-5.613-a.webp b/data/images/BB/BB-5.613-a.webp new file mode 100644 index 0000000..1e2b96f Binary files /dev/null and b/data/images/BB/BB-5.613-a.webp differ diff --git a/data/images/BB/BB-5.613-b.webp b/data/images/BB/BB-5.613-b.webp new file mode 100644 index 0000000..d5181ce Binary files /dev/null and b/data/images/BB/BB-5.613-b.webp differ diff --git a/data/images/BB/BB-5.712-a.webp b/data/images/BB/BB-5.712-a.webp new file mode 100644 index 0000000..430ea55 Binary files /dev/null and b/data/images/BB/BB-5.712-a.webp differ diff --git a/data/images/BB/BB-6.101-a.webp b/data/images/BB/BB-6.101-a.webp new file mode 100644 index 0000000..e988ba3 Binary files /dev/null and b/data/images/BB/BB-6.101-a.webp differ diff --git a/data/images/BB/BB-6.102-a.webp b/data/images/BB/BB-6.102-a.webp new file mode 100644 index 0000000..fc8f1d1 Binary files /dev/null and b/data/images/BB/BB-6.102-a.webp differ diff --git a/data/images/BB/BB-6.102-b.webp b/data/images/BB/BB-6.102-b.webp new file mode 100644 index 0000000..e783b29 Binary files /dev/null and b/data/images/BB/BB-6.102-b.webp differ diff --git a/data/images/BB/BB-6.104-a.webp b/data/images/BB/BB-6.104-a.webp new file mode 100644 index 0000000..0a3427e Binary files /dev/null and b/data/images/BB/BB-6.104-a.webp differ diff --git a/data/images/BB/BB-6.104-b.webp b/data/images/BB/BB-6.104-b.webp new file mode 100644 index 0000000..be502c6 Binary files /dev/null and b/data/images/BB/BB-6.104-b.webp differ diff --git a/data/images/BB/BB-6.106-a.webp b/data/images/BB/BB-6.106-a.webp new file mode 100644 index 0000000..642b057 Binary files /dev/null and b/data/images/BB/BB-6.106-a.webp differ diff --git a/data/images/BB/BB-6.106-b.webp b/data/images/BB/BB-6.106-b.webp new file mode 100644 index 0000000..64b64d3 Binary files /dev/null and b/data/images/BB/BB-6.106-b.webp differ diff --git a/data/images/BB/BB-6.201-a.webp b/data/images/BB/BB-6.201-a.webp new file mode 100644 index 0000000..8aad21f Binary files /dev/null and b/data/images/BB/BB-6.201-a.webp differ diff --git a/data/images/BB/BB-6.201-b.webp b/data/images/BB/BB-6.201-b.webp new file mode 100644 index 0000000..4746acc Binary files /dev/null and b/data/images/BB/BB-6.201-b.webp differ diff --git a/data/images/BB/BB-6.202-a.webp b/data/images/BB/BB-6.202-a.webp new file mode 100644 index 0000000..c9e9e6b Binary files /dev/null and b/data/images/BB/BB-6.202-a.webp differ diff --git a/data/images/BB/BB-6.202-b.webp b/data/images/BB/BB-6.202-b.webp new file mode 100644 index 0000000..1d0df28 Binary files /dev/null and b/data/images/BB/BB-6.202-b.webp differ diff --git a/data/images/BB/BB-6.203-a.webp b/data/images/BB/BB-6.203-a.webp new file mode 100644 index 0000000..471cef2 Binary files /dev/null and b/data/images/BB/BB-6.203-a.webp differ diff --git a/data/images/BB/BB-6.204-a.webp b/data/images/BB/BB-6.204-a.webp new file mode 100644 index 0000000..7467bdb Binary files /dev/null and b/data/images/BB/BB-6.204-a.webp differ diff --git a/data/images/BB/BB-6.204-b.webp b/data/images/BB/BB-6.204-b.webp new file mode 100644 index 0000000..0bc458a Binary files /dev/null and b/data/images/BB/BB-6.204-b.webp differ diff --git a/data/images/BB/BB-6.206-a.webp b/data/images/BB/BB-6.206-a.webp new file mode 100644 index 0000000..b6c91b2 Binary files /dev/null and b/data/images/BB/BB-6.206-a.webp differ diff --git a/data/images/BB/BB-6.206-b.webp b/data/images/BB/BB-6.206-b.webp new file mode 100644 index 0000000..25bbdac Binary files /dev/null and b/data/images/BB/BB-6.206-b.webp differ diff --git a/data/images/BB/BB-6.207-a.webp b/data/images/BB/BB-6.207-a.webp new file mode 100644 index 0000000..bf3bb19 Binary files /dev/null and b/data/images/BB/BB-6.207-a.webp differ diff --git a/data/images/BB/BB-6.207-b.webp b/data/images/BB/BB-6.207-b.webp new file mode 100644 index 0000000..cd96f97 Binary files /dev/null and b/data/images/BB/BB-6.207-b.webp differ diff --git a/data/images/BB/BB-6.301-a.webp b/data/images/BB/BB-6.301-a.webp new file mode 100644 index 0000000..6f88214 Binary files /dev/null and b/data/images/BB/BB-6.301-a.webp differ diff --git a/data/images/BB/BB-6.302-a.webp b/data/images/BB/BB-6.302-a.webp new file mode 100644 index 0000000..dc1a871 Binary files /dev/null and b/data/images/BB/BB-6.302-a.webp differ diff --git a/data/images/BB/BB-6.302-b.webp b/data/images/BB/BB-6.302-b.webp new file mode 100644 index 0000000..93ca6ad Binary files /dev/null and b/data/images/BB/BB-6.302-b.webp differ diff --git a/data/images/BB/BB-6.303-a.webp b/data/images/BB/BB-6.303-a.webp new file mode 100644 index 0000000..db12b51 Binary files /dev/null and b/data/images/BB/BB-6.303-a.webp differ diff --git a/data/images/BB/BB-6.304-a.webp b/data/images/BB/BB-6.304-a.webp new file mode 100644 index 0000000..1acc155 Binary files /dev/null and b/data/images/BB/BB-6.304-a.webp differ diff --git a/data/images/BB/BB-6.304-b.webp b/data/images/BB/BB-6.304-b.webp new file mode 100644 index 0000000..ff6ab55 Binary files /dev/null and b/data/images/BB/BB-6.304-b.webp differ diff --git a/data/images/BB/BB-6.306-a.webp b/data/images/BB/BB-6.306-a.webp new file mode 100644 index 0000000..3b6a3ba Binary files /dev/null and b/data/images/BB/BB-6.306-a.webp differ diff --git a/data/images/BB/BB-6.306-b.webp b/data/images/BB/BB-6.306-b.webp new file mode 100644 index 0000000..f438e5d Binary files /dev/null and b/data/images/BB/BB-6.306-b.webp differ diff --git a/data/images/BB/BB-6.307-a.webp b/data/images/BB/BB-6.307-a.webp new file mode 100644 index 0000000..04c5504 Binary files /dev/null and b/data/images/BB/BB-6.307-a.webp differ diff --git a/data/images/BB/BB-6.307-b.webp b/data/images/BB/BB-6.307-b.webp new file mode 100644 index 0000000..7545a38 Binary files /dev/null and b/data/images/BB/BB-6.307-b.webp differ diff --git a/data/images/BB/BB-6.402-a.webp b/data/images/BB/BB-6.402-a.webp new file mode 100644 index 0000000..18da772 Binary files /dev/null and b/data/images/BB/BB-6.402-a.webp differ diff --git a/data/images/BB/BB-6.403-a.webp b/data/images/BB/BB-6.403-a.webp new file mode 100644 index 0000000..acf4155 Binary files /dev/null and b/data/images/BB/BB-6.403-a.webp differ diff --git a/data/images/BB/BB-6.404-a.webp b/data/images/BB/BB-6.404-a.webp new file mode 100644 index 0000000..cc2ee00 Binary files /dev/null and b/data/images/BB/BB-6.404-a.webp differ diff --git a/data/images/BB/BB-6.405-a.webp b/data/images/BB/BB-6.405-a.webp new file mode 100644 index 0000000..04a7035 Binary files /dev/null and b/data/images/BB/BB-6.405-a.webp differ diff --git a/data/images/BB/BB-6.406-a.webp b/data/images/BB/BB-6.406-a.webp new file mode 100644 index 0000000..3382570 Binary files /dev/null and b/data/images/BB/BB-6.406-a.webp differ diff --git a/data/images/BB/BB-6.407-a.webp b/data/images/BB/BB-6.407-a.webp new file mode 100644 index 0000000..bac7ad2 Binary files /dev/null and b/data/images/BB/BB-6.407-a.webp differ diff --git a/data/images/BB/BB-6.407-b.webp b/data/images/BB/BB-6.407-b.webp new file mode 100644 index 0000000..a8f7cab Binary files /dev/null and b/data/images/BB/BB-6.407-b.webp differ diff --git a/data/images/BB/BB-6.501-a.webp b/data/images/BB/BB-6.501-a.webp new file mode 100644 index 0000000..d28a218 Binary files /dev/null and b/data/images/BB/BB-6.501-a.webp differ diff --git a/data/images/BB/BB-6.505-a.webp b/data/images/BB/BB-6.505-a.webp new file mode 100644 index 0000000..23e49f6 Binary files /dev/null and b/data/images/BB/BB-6.505-a.webp differ diff --git a/data/images/BB/BB-6.507-a.webp b/data/images/BB/BB-6.507-a.webp new file mode 100644 index 0000000..8a62df6 Binary files /dev/null and b/data/images/BB/BB-6.507-a.webp differ diff --git a/data/images/BB/BB-6.602-a.webp b/data/images/BB/BB-6.602-a.webp new file mode 100644 index 0000000..c6efd9a Binary files /dev/null and b/data/images/BB/BB-6.602-a.webp differ diff --git a/data/images/BB/BB-6.604-a.webp b/data/images/BB/BB-6.604-a.webp new file mode 100644 index 0000000..04989d0 Binary files /dev/null and b/data/images/BB/BB-6.604-a.webp differ diff --git a/data/images/BB/BB-6.606-a.webp b/data/images/BB/BB-6.606-a.webp new file mode 100644 index 0000000..ebf2a47 Binary files /dev/null and b/data/images/BB/BB-6.606-a.webp differ diff --git a/data/images/BB/BB-6.703-a.webp b/data/images/BB/BB-6.703-a.webp new file mode 100644 index 0000000..4d8a767 Binary files /dev/null and b/data/images/BB/BB-6.703-a.webp differ diff --git a/data/images/BB/BB-6.705-a.webp b/data/images/BB/BB-6.705-a.webp new file mode 100644 index 0000000..53db7b9 Binary files /dev/null and b/data/images/BB/BB-6.705-a.webp differ diff --git a/data/images/BB/BB-6.705-b.webp b/data/images/BB/BB-6.705-b.webp new file mode 100644 index 0000000..b2ea8fe Binary files /dev/null and b/data/images/BB/BB-6.705-b.webp differ diff --git a/data/images/BB/BB-6.805-a.webp b/data/images/BB/BB-6.805-a.webp new file mode 100644 index 0000000..272e2da Binary files /dev/null and b/data/images/BB/BB-6.805-a.webp differ diff --git a/data/images/FX/FX-1.101-a.webp b/data/images/FX/FX-1.101-a.webp new file mode 100644 index 0000000..18048bd Binary files /dev/null and b/data/images/FX/FX-1.101-a.webp differ diff --git a/data/images/FX/FX-1.103-a.webp b/data/images/FX/FX-1.103-a.webp new file mode 100644 index 0000000..f4055bd Binary files /dev/null and b/data/images/FX/FX-1.103-a.webp differ diff --git a/data/images/FX/FX-1.104-a.webp b/data/images/FX/FX-1.104-a.webp new file mode 100644 index 0000000..0244bc4 Binary files /dev/null and b/data/images/FX/FX-1.104-a.webp differ diff --git a/data/images/FX/FX-1.104-b.webp b/data/images/FX/FX-1.104-b.webp new file mode 100644 index 0000000..2fceda3 Binary files /dev/null and b/data/images/FX/FX-1.104-b.webp differ diff --git a/data/images/FX/FX-1.105-a.webp b/data/images/FX/FX-1.105-a.webp new file mode 100644 index 0000000..590282e Binary files /dev/null and b/data/images/FX/FX-1.105-a.webp differ diff --git a/data/images/FX/FX-1.106-a.webp b/data/images/FX/FX-1.106-a.webp new file mode 100644 index 0000000..8fc98c9 Binary files /dev/null and b/data/images/FX/FX-1.106-a.webp differ diff --git a/data/images/FX/FX-1.107-a.webp b/data/images/FX/FX-1.107-a.webp new file mode 100644 index 0000000..f7a91ce Binary files /dev/null and b/data/images/FX/FX-1.107-a.webp differ diff --git a/data/images/FX/FX-1.107-b.webp b/data/images/FX/FX-1.107-b.webp new file mode 100644 index 0000000..664484d Binary files /dev/null and b/data/images/FX/FX-1.107-b.webp differ diff --git a/data/images/FX/FX-1.108-a.webp b/data/images/FX/FX-1.108-a.webp new file mode 100644 index 0000000..accb028 Binary files /dev/null and b/data/images/FX/FX-1.108-a.webp differ diff --git a/data/images/FX/FX-1.108-b.webp b/data/images/FX/FX-1.108-b.webp new file mode 100644 index 0000000..31609fd Binary files /dev/null and b/data/images/FX/FX-1.108-b.webp differ diff --git a/data/images/FX/FX-1.108-c.webp b/data/images/FX/FX-1.108-c.webp new file mode 100644 index 0000000..58e1f91 Binary files /dev/null and b/data/images/FX/FX-1.108-c.webp differ diff --git a/data/images/FX/FX-1.109-a.webp b/data/images/FX/FX-1.109-a.webp new file mode 100644 index 0000000..8c8047b Binary files /dev/null and b/data/images/FX/FX-1.109-a.webp differ diff --git a/data/images/FX/FX-1.109-b.webp b/data/images/FX/FX-1.109-b.webp new file mode 100644 index 0000000..508369a Binary files /dev/null and b/data/images/FX/FX-1.109-b.webp differ diff --git a/data/images/FX/FX-1.109-c.webp b/data/images/FX/FX-1.109-c.webp new file mode 100644 index 0000000..8f70a77 Binary files /dev/null and b/data/images/FX/FX-1.109-c.webp differ diff --git a/data/images/FX/FX-1.109-d.webp b/data/images/FX/FX-1.109-d.webp new file mode 100644 index 0000000..ea472c5 Binary files /dev/null and b/data/images/FX/FX-1.109-d.webp differ diff --git a/data/images/FX/FX-1.110-a.webp b/data/images/FX/FX-1.110-a.webp new file mode 100644 index 0000000..e923c52 Binary files /dev/null and b/data/images/FX/FX-1.110-a.webp differ diff --git a/data/images/FX/FX-1.111-a.webp b/data/images/FX/FX-1.111-a.webp new file mode 100644 index 0000000..d79c92a Binary files /dev/null and b/data/images/FX/FX-1.111-a.webp differ diff --git a/data/images/FX/FX-1.111-b.webp b/data/images/FX/FX-1.111-b.webp new file mode 100644 index 0000000..f8b4fc6 Binary files /dev/null and b/data/images/FX/FX-1.111-b.webp differ diff --git a/data/images/FX/FX-1.112-a.webp b/data/images/FX/FX-1.112-a.webp new file mode 100644 index 0000000..1950faa Binary files /dev/null and b/data/images/FX/FX-1.112-a.webp differ diff --git a/data/images/FX/FX-1.112-b.webp b/data/images/FX/FX-1.112-b.webp new file mode 100644 index 0000000..74412d3 Binary files /dev/null and b/data/images/FX/FX-1.112-b.webp differ diff --git a/data/images/FX/FX-1.114-a.webp b/data/images/FX/FX-1.114-a.webp new file mode 100644 index 0000000..f626ead Binary files /dev/null and b/data/images/FX/FX-1.114-a.webp differ diff --git a/data/images/FX/FX-1.201-a.webp b/data/images/FX/FX-1.201-a.webp new file mode 100644 index 0000000..26ab71d Binary files /dev/null and b/data/images/FX/FX-1.201-a.webp differ diff --git a/data/images/FX/FX-1.202-a.webp b/data/images/FX/FX-1.202-a.webp new file mode 100644 index 0000000..60694ae Binary files /dev/null and b/data/images/FX/FX-1.202-a.webp differ diff --git a/data/images/FX/FX-1.202-b.webp b/data/images/FX/FX-1.202-b.webp new file mode 100644 index 0000000..9d30607 Binary files /dev/null and b/data/images/FX/FX-1.202-b.webp differ diff --git a/data/images/FX/FX-1.203-a.webp b/data/images/FX/FX-1.203-a.webp new file mode 100644 index 0000000..27852c2 Binary files /dev/null and b/data/images/FX/FX-1.203-a.webp differ diff --git a/data/images/FX/FX-1.203-b.webp b/data/images/FX/FX-1.203-b.webp new file mode 100644 index 0000000..6d849e2 Binary files /dev/null and b/data/images/FX/FX-1.203-b.webp differ diff --git a/data/images/FX/FX-1.203-c.webp b/data/images/FX/FX-1.203-c.webp new file mode 100644 index 0000000..4d1c114 Binary files /dev/null and b/data/images/FX/FX-1.203-c.webp differ diff --git a/data/images/FX/FX-1.204-a.webp b/data/images/FX/FX-1.204-a.webp new file mode 100644 index 0000000..16f2da5 Binary files /dev/null and b/data/images/FX/FX-1.204-a.webp differ diff --git a/data/images/FX/FX-1.204-b.webp b/data/images/FX/FX-1.204-b.webp new file mode 100644 index 0000000..301f305 Binary files /dev/null and b/data/images/FX/FX-1.204-b.webp differ diff --git a/data/images/FX/FX-1.205-a.webp b/data/images/FX/FX-1.205-a.webp new file mode 100644 index 0000000..d405e9a Binary files /dev/null and b/data/images/FX/FX-1.205-a.webp differ diff --git a/data/images/FX/FX-1.206-a.webp b/data/images/FX/FX-1.206-a.webp new file mode 100644 index 0000000..538e94c Binary files /dev/null and b/data/images/FX/FX-1.206-a.webp differ diff --git a/data/images/FX/FX-1.207-a.webp b/data/images/FX/FX-1.207-a.webp new file mode 100644 index 0000000..432306c Binary files /dev/null and b/data/images/FX/FX-1.207-a.webp differ diff --git a/data/images/FX/FX-1.207-b.webp b/data/images/FX/FX-1.207-b.webp new file mode 100644 index 0000000..a0fe15d Binary files /dev/null and b/data/images/FX/FX-1.207-b.webp differ diff --git a/data/images/FX/FX-1.207-c.webp b/data/images/FX/FX-1.207-c.webp new file mode 100644 index 0000000..332b32a Binary files /dev/null and b/data/images/FX/FX-1.207-c.webp differ diff --git a/data/images/FX/FX-1.208-a.webp b/data/images/FX/FX-1.208-a.webp new file mode 100644 index 0000000..bf8ef3d Binary files /dev/null and b/data/images/FX/FX-1.208-a.webp differ diff --git a/data/images/FX/FX-1.208-b.webp b/data/images/FX/FX-1.208-b.webp new file mode 100644 index 0000000..632d683 Binary files /dev/null and b/data/images/FX/FX-1.208-b.webp differ diff --git a/data/images/FX/FX-1.209-a.webp b/data/images/FX/FX-1.209-a.webp new file mode 100644 index 0000000..a926b89 Binary files /dev/null and b/data/images/FX/FX-1.209-a.webp differ diff --git a/data/images/FX/FX-1.209-b.webp b/data/images/FX/FX-1.209-b.webp new file mode 100644 index 0000000..8ac95f5 Binary files /dev/null and b/data/images/FX/FX-1.209-b.webp differ diff --git a/data/images/FX/FX-1.209-c.webp b/data/images/FX/FX-1.209-c.webp new file mode 100644 index 0000000..b3e53b7 Binary files /dev/null and b/data/images/FX/FX-1.209-c.webp differ diff --git a/data/images/FX/FX-1.209-d.webp b/data/images/FX/FX-1.209-d.webp new file mode 100644 index 0000000..475704e Binary files /dev/null and b/data/images/FX/FX-1.209-d.webp differ diff --git a/data/images/FX/FX-1.211-a.webp b/data/images/FX/FX-1.211-a.webp new file mode 100644 index 0000000..7709da4 Binary files /dev/null and b/data/images/FX/FX-1.211-a.webp differ diff --git a/data/images/FX/FX-1.212-a.webp b/data/images/FX/FX-1.212-a.webp new file mode 100644 index 0000000..5891f65 Binary files /dev/null and b/data/images/FX/FX-1.212-a.webp differ diff --git a/data/images/FX/FX-1.213-a.webp b/data/images/FX/FX-1.213-a.webp new file mode 100644 index 0000000..fafc68e Binary files /dev/null and b/data/images/FX/FX-1.213-a.webp differ diff --git a/data/images/FX/FX-1.214-a.webp b/data/images/FX/FX-1.214-a.webp new file mode 100644 index 0000000..66b6c62 Binary files /dev/null and b/data/images/FX/FX-1.214-a.webp differ diff --git a/data/images/FX/FX-1.214-b.webp b/data/images/FX/FX-1.214-b.webp new file mode 100644 index 0000000..2720cfd Binary files /dev/null and b/data/images/FX/FX-1.214-b.webp differ diff --git a/data/images/FX/FX-1.301-a.webp b/data/images/FX/FX-1.301-a.webp new file mode 100644 index 0000000..4493c3a Binary files /dev/null and b/data/images/FX/FX-1.301-a.webp differ diff --git a/data/images/FX/FX-1.302-a.webp b/data/images/FX/FX-1.302-a.webp new file mode 100644 index 0000000..eb88c5d Binary files /dev/null and b/data/images/FX/FX-1.302-a.webp differ diff --git a/data/images/FX/FX-1.302-b.webp b/data/images/FX/FX-1.302-b.webp new file mode 100644 index 0000000..1602d03 Binary files /dev/null and b/data/images/FX/FX-1.302-b.webp differ diff --git a/data/images/FX/FX-1.302-c.webp b/data/images/FX/FX-1.302-c.webp new file mode 100644 index 0000000..8a3c1a1 Binary files /dev/null and b/data/images/FX/FX-1.302-c.webp differ diff --git a/data/images/FX/FX-1.304-a.webp b/data/images/FX/FX-1.304-a.webp new file mode 100644 index 0000000..0204836 Binary files /dev/null and b/data/images/FX/FX-1.304-a.webp differ diff --git a/data/images/FX/FX-1.304-b.webp b/data/images/FX/FX-1.304-b.webp new file mode 100644 index 0000000..df2ba13 Binary files /dev/null and b/data/images/FX/FX-1.304-b.webp differ diff --git a/data/images/FX/FX-1.305-a.webp b/data/images/FX/FX-1.305-a.webp new file mode 100644 index 0000000..c5aa978 Binary files /dev/null and b/data/images/FX/FX-1.305-a.webp differ diff --git a/data/images/FX/FX-1.306-a.webp b/data/images/FX/FX-1.306-a.webp new file mode 100644 index 0000000..43781b4 Binary files /dev/null and b/data/images/FX/FX-1.306-a.webp differ diff --git a/data/images/FX/FX-1.306-b.webp b/data/images/FX/FX-1.306-b.webp new file mode 100644 index 0000000..044e9e4 Binary files /dev/null and b/data/images/FX/FX-1.306-b.webp differ diff --git a/data/images/FX/FX-1.307-a.webp b/data/images/FX/FX-1.307-a.webp new file mode 100644 index 0000000..1a1051e Binary files /dev/null and b/data/images/FX/FX-1.307-a.webp differ diff --git a/data/images/FX/FX-1.307-b.webp b/data/images/FX/FX-1.307-b.webp new file mode 100644 index 0000000..d4ed2de Binary files /dev/null and b/data/images/FX/FX-1.307-b.webp differ diff --git a/data/images/FX/FX-1.307-c.webp b/data/images/FX/FX-1.307-c.webp new file mode 100644 index 0000000..af9effc Binary files /dev/null and b/data/images/FX/FX-1.307-c.webp differ diff --git a/data/images/FX/FX-1.309-a.webp b/data/images/FX/FX-1.309-a.webp new file mode 100644 index 0000000..5db3877 Binary files /dev/null and b/data/images/FX/FX-1.309-a.webp differ diff --git a/data/images/FX/FX-1.309-b.webp b/data/images/FX/FX-1.309-b.webp new file mode 100644 index 0000000..3529fba Binary files /dev/null and b/data/images/FX/FX-1.309-b.webp differ diff --git a/data/images/FX/FX-1.310-a.webp b/data/images/FX/FX-1.310-a.webp new file mode 100644 index 0000000..1219d21 Binary files /dev/null and b/data/images/FX/FX-1.310-a.webp differ diff --git a/data/images/FX/FX-1.311-a.webp b/data/images/FX/FX-1.311-a.webp new file mode 100644 index 0000000..68dab0a Binary files /dev/null and b/data/images/FX/FX-1.311-a.webp differ diff --git a/data/images/FX/FX-1.313-a.webp b/data/images/FX/FX-1.313-a.webp new file mode 100644 index 0000000..17b606b Binary files /dev/null and b/data/images/FX/FX-1.313-a.webp differ diff --git a/data/images/FX/FX-1.313-b.webp b/data/images/FX/FX-1.313-b.webp new file mode 100644 index 0000000..d63178f Binary files /dev/null and b/data/images/FX/FX-1.313-b.webp differ diff --git a/data/images/FX/FX-1.402-a.webp b/data/images/FX/FX-1.402-a.webp new file mode 100644 index 0000000..df150fd Binary files /dev/null and b/data/images/FX/FX-1.402-a.webp differ diff --git a/data/images/FX/FX-1.404-a.webp b/data/images/FX/FX-1.404-a.webp new file mode 100644 index 0000000..ce9ff73 Binary files /dev/null and b/data/images/FX/FX-1.404-a.webp differ diff --git a/data/images/FX/FX-1.404-b.webp b/data/images/FX/FX-1.404-b.webp new file mode 100644 index 0000000..3e8490e Binary files /dev/null and b/data/images/FX/FX-1.404-b.webp differ diff --git a/data/images/FX/FX-1.405-a.webp b/data/images/FX/FX-1.405-a.webp new file mode 100644 index 0000000..35a96b1 Binary files /dev/null and b/data/images/FX/FX-1.405-a.webp differ diff --git a/data/images/FX/FX-1.407-a.webp b/data/images/FX/FX-1.407-a.webp new file mode 100644 index 0000000..9216102 Binary files /dev/null and b/data/images/FX/FX-1.407-a.webp differ diff --git a/data/images/FX/FX-1.407-b.webp b/data/images/FX/FX-1.407-b.webp new file mode 100644 index 0000000..554674e Binary files /dev/null and b/data/images/FX/FX-1.407-b.webp differ diff --git a/data/images/FX/FX-1.407-c.webp b/data/images/FX/FX-1.407-c.webp new file mode 100644 index 0000000..af86d9c Binary files /dev/null and b/data/images/FX/FX-1.407-c.webp differ diff --git a/data/images/FX/FX-1.409-a.webp b/data/images/FX/FX-1.409-a.webp new file mode 100644 index 0000000..9996e5d Binary files /dev/null and b/data/images/FX/FX-1.409-a.webp differ diff --git a/data/images/FX/FX-1.409-b.webp b/data/images/FX/FX-1.409-b.webp new file mode 100644 index 0000000..1d1ba12 Binary files /dev/null and b/data/images/FX/FX-1.409-b.webp differ diff --git a/data/images/FX/FX-1.514-a.webp b/data/images/FX/FX-1.514-a.webp new file mode 100644 index 0000000..c26bb3e Binary files /dev/null and b/data/images/FX/FX-1.514-a.webp differ diff --git a/data/images/FX/FX-2.101-a.webp b/data/images/FX/FX-2.101-a.webp new file mode 100644 index 0000000..ebc9841 Binary files /dev/null and b/data/images/FX/FX-2.101-a.webp differ diff --git a/data/images/FX/FX-2.201-a.webp b/data/images/FX/FX-2.201-a.webp new file mode 100644 index 0000000..77bbbc1 Binary files /dev/null and b/data/images/FX/FX-2.201-a.webp differ diff --git a/data/images/FX/FX-2.202-a.webp b/data/images/FX/FX-2.202-a.webp new file mode 100644 index 0000000..1c04f33 Binary files /dev/null and b/data/images/FX/FX-2.202-a.webp differ diff --git a/data/images/FX/FX-2.203-a.webp b/data/images/FX/FX-2.203-a.webp new file mode 100644 index 0000000..3c94b5b Binary files /dev/null and b/data/images/FX/FX-2.203-a.webp differ diff --git a/data/images/FX/FX-2.204-a.webp b/data/images/FX/FX-2.204-a.webp new file mode 100644 index 0000000..d23349b Binary files /dev/null and b/data/images/FX/FX-2.204-a.webp differ diff --git a/data/images/FX/FX-2.205-a.webp b/data/images/FX/FX-2.205-a.webp new file mode 100644 index 0000000..2adb3ef Binary files /dev/null and b/data/images/FX/FX-2.205-a.webp differ diff --git a/data/images/FX/FX-2.206-a.webp b/data/images/FX/FX-2.206-a.webp new file mode 100644 index 0000000..a9457b5 Binary files /dev/null and b/data/images/FX/FX-2.206-a.webp differ diff --git a/data/images/FX/FX-2.207-a.webp b/data/images/FX/FX-2.207-a.webp new file mode 100644 index 0000000..05fa2e8 Binary files /dev/null and b/data/images/FX/FX-2.207-a.webp differ diff --git a/data/images/FX/FX-2.208-a.webp b/data/images/FX/FX-2.208-a.webp new file mode 100644 index 0000000..2f7ed35 Binary files /dev/null and b/data/images/FX/FX-2.208-a.webp differ diff --git a/data/images/FX/FX-2.208-b.webp b/data/images/FX/FX-2.208-b.webp new file mode 100644 index 0000000..051dce1 Binary files /dev/null and b/data/images/FX/FX-2.208-b.webp differ diff --git a/data/images/FX/FX-2.301-a.webp b/data/images/FX/FX-2.301-a.webp new file mode 100644 index 0000000..2898ec0 Binary files /dev/null and b/data/images/FX/FX-2.301-a.webp differ diff --git a/data/images/FX/FX-2.307-a.webp b/data/images/FX/FX-2.307-a.webp new file mode 100644 index 0000000..ea5b52b Binary files /dev/null and b/data/images/FX/FX-2.307-a.webp differ diff --git a/data/images/FX/FX-2.402-a.webp b/data/images/FX/FX-2.402-a.webp new file mode 100644 index 0000000..80ab8a5 Binary files /dev/null and b/data/images/FX/FX-2.402-a.webp differ diff --git a/data/images/FX/FX-2.403-a.webp b/data/images/FX/FX-2.403-a.webp new file mode 100644 index 0000000..da256e3 Binary files /dev/null and b/data/images/FX/FX-2.403-a.webp differ diff --git a/data/images/FX/FX-2.404-a.webp b/data/images/FX/FX-2.404-a.webp new file mode 100644 index 0000000..fcc26c5 Binary files /dev/null and b/data/images/FX/FX-2.404-a.webp differ diff --git a/data/images/FX/FX-2.404-b.webp b/data/images/FX/FX-2.404-b.webp new file mode 100644 index 0000000..4daeb90 Binary files /dev/null and b/data/images/FX/FX-2.404-b.webp differ diff --git a/data/images/FX/FX-2.407-a.webp b/data/images/FX/FX-2.407-a.webp new file mode 100644 index 0000000..302a97e Binary files /dev/null and b/data/images/FX/FX-2.407-a.webp differ diff --git a/data/images/FX/FX-2.501-a.webp b/data/images/FX/FX-2.501-a.webp new file mode 100644 index 0000000..54504d9 Binary files /dev/null and b/data/images/FX/FX-2.501-a.webp differ diff --git a/data/images/FX/FX-2.503-a.webp b/data/images/FX/FX-2.503-a.webp new file mode 100644 index 0000000..34a8e44 Binary files /dev/null and b/data/images/FX/FX-2.503-a.webp differ diff --git a/data/images/FX/FX-2.507-a.webp b/data/images/FX/FX-2.507-a.webp new file mode 100644 index 0000000..da9077a Binary files /dev/null and b/data/images/FX/FX-2.507-a.webp differ diff --git a/data/images/FX/FX-3.101-a.webp b/data/images/FX/FX-3.101-a.webp new file mode 100644 index 0000000..43f9afd Binary files /dev/null and b/data/images/FX/FX-3.101-a.webp differ diff --git a/data/images/FX/FX-3.101-b.webp b/data/images/FX/FX-3.101-b.webp new file mode 100644 index 0000000..099ead7 Binary files /dev/null and b/data/images/FX/FX-3.101-b.webp differ diff --git a/data/images/FX/FX-3.101-c.webp b/data/images/FX/FX-3.101-c.webp new file mode 100644 index 0000000..443b235 Binary files /dev/null and b/data/images/FX/FX-3.101-c.webp differ diff --git a/data/images/FX/FX-3.102-a.webp b/data/images/FX/FX-3.102-a.webp new file mode 100644 index 0000000..83ac7f6 Binary files /dev/null and b/data/images/FX/FX-3.102-a.webp differ diff --git a/data/images/FX/FX-3.103-a.webp b/data/images/FX/FX-3.103-a.webp new file mode 100644 index 0000000..b5a9983 Binary files /dev/null and b/data/images/FX/FX-3.103-a.webp differ diff --git a/data/images/FX/FX-3.103-b.webp b/data/images/FX/FX-3.103-b.webp new file mode 100644 index 0000000..6a0d5de Binary files /dev/null and b/data/images/FX/FX-3.103-b.webp differ diff --git a/data/images/FX/FX-3.104-a.webp b/data/images/FX/FX-3.104-a.webp new file mode 100644 index 0000000..3e17e95 Binary files /dev/null and b/data/images/FX/FX-3.104-a.webp differ diff --git a/data/images/FX/FX-3.104-b.webp b/data/images/FX/FX-3.104-b.webp new file mode 100644 index 0000000..923196d Binary files /dev/null and b/data/images/FX/FX-3.104-b.webp differ diff --git a/data/images/FX/FX-3.105-a.webp b/data/images/FX/FX-3.105-a.webp new file mode 100644 index 0000000..0b1586f Binary files /dev/null and b/data/images/FX/FX-3.105-a.webp differ diff --git a/data/images/FX/FX-3.105-b.webp b/data/images/FX/FX-3.105-b.webp new file mode 100644 index 0000000..e83e1f5 Binary files /dev/null and b/data/images/FX/FX-3.105-b.webp differ diff --git a/data/images/FX/FX-3.105-c.webp b/data/images/FX/FX-3.105-c.webp new file mode 100644 index 0000000..e20447e Binary files /dev/null and b/data/images/FX/FX-3.105-c.webp differ diff --git a/data/images/FX/FX-3.106-a.webp b/data/images/FX/FX-3.106-a.webp new file mode 100644 index 0000000..12ffb4e Binary files /dev/null and b/data/images/FX/FX-3.106-a.webp differ diff --git a/data/images/FX/FX-3.107-a.webp b/data/images/FX/FX-3.107-a.webp new file mode 100644 index 0000000..47907bf Binary files /dev/null and b/data/images/FX/FX-3.107-a.webp differ diff --git a/data/images/FX/FX-3.107-b.webp b/data/images/FX/FX-3.107-b.webp new file mode 100644 index 0000000..7a53089 Binary files /dev/null and b/data/images/FX/FX-3.107-b.webp differ diff --git a/data/images/FX/FX-3.107-c.webp b/data/images/FX/FX-3.107-c.webp new file mode 100644 index 0000000..19ad87b Binary files /dev/null and b/data/images/FX/FX-3.107-c.webp differ diff --git a/data/images/FX/FX-3.107-d.webp b/data/images/FX/FX-3.107-d.webp new file mode 100644 index 0000000..fe829cd Binary files /dev/null and b/data/images/FX/FX-3.107-d.webp differ diff --git a/data/images/FX/FX-3.201-a.webp b/data/images/FX/FX-3.201-a.webp new file mode 100644 index 0000000..ed1901a Binary files /dev/null and b/data/images/FX/FX-3.201-a.webp differ diff --git a/data/images/FX/FX-3.201-b.webp b/data/images/FX/FX-3.201-b.webp new file mode 100644 index 0000000..77bfc4e Binary files /dev/null and b/data/images/FX/FX-3.201-b.webp differ diff --git a/data/images/FX/FX-3.201-c.webp b/data/images/FX/FX-3.201-c.webp new file mode 100644 index 0000000..12e91db Binary files /dev/null and b/data/images/FX/FX-3.201-c.webp differ diff --git a/data/images/FX/FX-3.203-a.webp b/data/images/FX/FX-3.203-a.webp new file mode 100644 index 0000000..d8feeab Binary files /dev/null and b/data/images/FX/FX-3.203-a.webp differ diff --git a/data/images/FX/FX-3.203-b.webp b/data/images/FX/FX-3.203-b.webp new file mode 100644 index 0000000..3dc6160 Binary files /dev/null and b/data/images/FX/FX-3.203-b.webp differ diff --git a/data/images/FX/FX-3.207-a.webp b/data/images/FX/FX-3.207-a.webp new file mode 100644 index 0000000..fae7d22 Binary files /dev/null and b/data/images/FX/FX-3.207-a.webp differ diff --git a/data/images/FX/FX-3.305-a.webp b/data/images/FX/FX-3.305-a.webp new file mode 100644 index 0000000..2c5d55d Binary files /dev/null and b/data/images/FX/FX-3.305-a.webp differ diff --git a/data/images/FX/FX-3.305-b.webp b/data/images/FX/FX-3.305-b.webp new file mode 100644 index 0000000..2210fe9 Binary files /dev/null and b/data/images/FX/FX-3.305-b.webp differ diff --git a/data/images/FX/FX-4.101-a.webp b/data/images/FX/FX-4.101-a.webp new file mode 100644 index 0000000..344acd0 Binary files /dev/null and b/data/images/FX/FX-4.101-a.webp differ diff --git a/data/images/FX/FX-4.101-b.webp b/data/images/FX/FX-4.101-b.webp new file mode 100644 index 0000000..91b8ed5 Binary files /dev/null and b/data/images/FX/FX-4.101-b.webp differ diff --git a/data/images/FX/FX-4.103-a.webp b/data/images/FX/FX-4.103-a.webp new file mode 100644 index 0000000..a4a3c4b Binary files /dev/null and b/data/images/FX/FX-4.103-a.webp differ diff --git a/data/images/FX/FX-4.104-a.webp b/data/images/FX/FX-4.104-a.webp new file mode 100644 index 0000000..529eafe Binary files /dev/null and b/data/images/FX/FX-4.104-a.webp differ diff --git a/data/images/FX/FX-4.104-b.webp b/data/images/FX/FX-4.104-b.webp new file mode 100644 index 0000000..193f760 Binary files /dev/null and b/data/images/FX/FX-4.104-b.webp differ diff --git a/data/images/FX/FX-4.105-a.webp b/data/images/FX/FX-4.105-a.webp new file mode 100644 index 0000000..a5cbfb0 Binary files /dev/null and b/data/images/FX/FX-4.105-a.webp differ diff --git a/data/images/FX/FX-4.105-b.webp b/data/images/FX/FX-4.105-b.webp new file mode 100644 index 0000000..e4f3fab Binary files /dev/null and b/data/images/FX/FX-4.105-b.webp differ diff --git a/data/images/FX/FX-4.201-a.webp b/data/images/FX/FX-4.201-a.webp new file mode 100644 index 0000000..a97fc2e Binary files /dev/null and b/data/images/FX/FX-4.201-a.webp differ diff --git a/data/images/FX/FX-4.201-b.webp b/data/images/FX/FX-4.201-b.webp new file mode 100644 index 0000000..deac2a7 Binary files /dev/null and b/data/images/FX/FX-4.201-b.webp differ diff --git a/data/images/FX/FX-4.201-c.webp b/data/images/FX/FX-4.201-c.webp new file mode 100644 index 0000000..01ac72e Binary files /dev/null and b/data/images/FX/FX-4.201-c.webp differ diff --git a/data/images/FX/FX-4.202-a.webp b/data/images/FX/FX-4.202-a.webp new file mode 100644 index 0000000..a773fe4 Binary files /dev/null and b/data/images/FX/FX-4.202-a.webp differ diff --git a/data/images/FX/FX-4.202-b.webp b/data/images/FX/FX-4.202-b.webp new file mode 100644 index 0000000..fa13aea Binary files /dev/null and b/data/images/FX/FX-4.202-b.webp differ diff --git a/data/images/FX/FX-4.202-c.webp b/data/images/FX/FX-4.202-c.webp new file mode 100644 index 0000000..2af5922 Binary files /dev/null and b/data/images/FX/FX-4.202-c.webp differ diff --git a/data/images/FX/FX-4.205-a.webp b/data/images/FX/FX-4.205-a.webp new file mode 100644 index 0000000..10c8a07 Binary files /dev/null and b/data/images/FX/FX-4.205-a.webp differ diff --git a/data/images/FX/FX-4.205-b.webp b/data/images/FX/FX-4.205-b.webp new file mode 100644 index 0000000..ce50f35 Binary files /dev/null and b/data/images/FX/FX-4.205-b.webp differ diff --git a/data/images/FX/FX-4.302-a.webp b/data/images/FX/FX-4.302-a.webp new file mode 100644 index 0000000..2c62198 Binary files /dev/null and b/data/images/FX/FX-4.302-a.webp differ diff --git a/data/images/FX/FX-4.302-b.webp b/data/images/FX/FX-4.302-b.webp new file mode 100644 index 0000000..813158f Binary files /dev/null and b/data/images/FX/FX-4.302-b.webp differ diff --git a/data/images/FX/FX-4.402-a.webp b/data/images/FX/FX-4.402-a.webp new file mode 100644 index 0000000..9062592 Binary files /dev/null and b/data/images/FX/FX-4.402-a.webp differ diff --git a/data/images/FX/FX-4.501-a.webp b/data/images/FX/FX-4.501-a.webp new file mode 100644 index 0000000..362bf9b Binary files /dev/null and b/data/images/FX/FX-4.501-a.webp differ diff --git a/data/images/FX/FX-4.502-a.webp b/data/images/FX/FX-4.502-a.webp new file mode 100644 index 0000000..ad61401 Binary files /dev/null and b/data/images/FX/FX-4.502-a.webp differ diff --git a/data/images/FX/FX-4.505-a.webp b/data/images/FX/FX-4.505-a.webp new file mode 100644 index 0000000..36fd10c Binary files /dev/null and b/data/images/FX/FX-4.505-a.webp differ diff --git a/data/images/FX/FX-4.601-a.webp b/data/images/FX/FX-4.601-a.webp new file mode 100644 index 0000000..fc6e5b8 Binary files /dev/null and b/data/images/FX/FX-4.601-a.webp differ diff --git a/data/images/FX/FX-4.601-b.webp b/data/images/FX/FX-4.601-b.webp new file mode 100644 index 0000000..51fbe46 Binary files /dev/null and b/data/images/FX/FX-4.601-b.webp differ diff --git a/data/images/FX/FX-4.602-a.webp b/data/images/FX/FX-4.602-a.webp new file mode 100644 index 0000000..bef1cdc Binary files /dev/null and b/data/images/FX/FX-4.602-a.webp differ diff --git a/data/images/FX/FX-4.605-a.webp b/data/images/FX/FX-4.605-a.webp new file mode 100644 index 0000000..2bb4925 Binary files /dev/null and b/data/images/FX/FX-4.605-a.webp differ diff --git a/data/images/FX/FX-4.805-a.webp b/data/images/FX/FX-4.805-a.webp new file mode 100644 index 0000000..33ee5cb Binary files /dev/null and b/data/images/FX/FX-4.805-a.webp differ diff --git a/data/images/FX/FX-5.101-a.webp b/data/images/FX/FX-5.101-a.webp new file mode 100644 index 0000000..c4d5f05 Binary files /dev/null and b/data/images/FX/FX-5.101-a.webp differ diff --git a/data/images/FX/FX-5.101-b.webp b/data/images/FX/FX-5.101-b.webp new file mode 100644 index 0000000..158eaa1 Binary files /dev/null and b/data/images/FX/FX-5.101-b.webp differ diff --git a/data/images/FX/FX-5.101-c.webp b/data/images/FX/FX-5.101-c.webp new file mode 100644 index 0000000..d80290f Binary files /dev/null and b/data/images/FX/FX-5.101-c.webp differ diff --git a/data/images/FX/FX-5.104-a.webp b/data/images/FX/FX-5.104-a.webp new file mode 100644 index 0000000..20ccd6c Binary files /dev/null and b/data/images/FX/FX-5.104-a.webp differ diff --git a/data/images/FX/FX-5.201-a.webp b/data/images/FX/FX-5.201-a.webp new file mode 100644 index 0000000..916ca86 Binary files /dev/null and b/data/images/FX/FX-5.201-a.webp differ diff --git a/data/images/FX/FX-5.201-b.webp b/data/images/FX/FX-5.201-b.webp new file mode 100644 index 0000000..c0bb6b8 Binary files /dev/null and b/data/images/FX/FX-5.201-b.webp differ diff --git a/data/images/FX/FX-5.204-a.webp b/data/images/FX/FX-5.204-a.webp new file mode 100644 index 0000000..b60105b Binary files /dev/null and b/data/images/FX/FX-5.204-a.webp differ diff --git a/data/images/FX/FX-5.301-a.webp b/data/images/FX/FX-5.301-a.webp new file mode 100644 index 0000000..87b1bfa Binary files /dev/null and b/data/images/FX/FX-5.301-a.webp differ diff --git a/data/images/FX/FX-5.301-b.webp b/data/images/FX/FX-5.301-b.webp new file mode 100644 index 0000000..ae7c8ba Binary files /dev/null and b/data/images/FX/FX-5.301-b.webp differ diff --git a/data/images/FX/FX-5.304-a.webp b/data/images/FX/FX-5.304-a.webp new file mode 100644 index 0000000..7949d03 Binary files /dev/null and b/data/images/FX/FX-5.304-a.webp differ diff --git a/data/images/FX/FX-5.401-a.webp b/data/images/FX/FX-5.401-a.webp new file mode 100644 index 0000000..1f4400e Binary files /dev/null and b/data/images/FX/FX-5.401-a.webp differ diff --git a/data/images/FX/FX-5.402-a.webp b/data/images/FX/FX-5.402-a.webp new file mode 100644 index 0000000..38d7b66 Binary files /dev/null and b/data/images/FX/FX-5.402-a.webp differ diff --git a/data/images/FX/FX-5.402-b.webp b/data/images/FX/FX-5.402-b.webp new file mode 100644 index 0000000..e340874 Binary files /dev/null and b/data/images/FX/FX-5.402-b.webp differ diff --git a/data/images/FX/FX-5.501-a.webp b/data/images/FX/FX-5.501-a.webp new file mode 100644 index 0000000..a4ab764 Binary files /dev/null and b/data/images/FX/FX-5.501-a.webp differ diff --git a/data/images/FX/FX-5.502-a.webp b/data/images/FX/FX-5.502-a.webp new file mode 100644 index 0000000..e9ba100 Binary files /dev/null and b/data/images/FX/FX-5.502-a.webp differ diff --git a/data/images/FX/FX-5.502-b.webp b/data/images/FX/FX-5.502-b.webp new file mode 100644 index 0000000..941aad7 Binary files /dev/null and b/data/images/FX/FX-5.502-b.webp differ diff --git a/data/images/FX/FX-5.601-a.webp b/data/images/FX/FX-5.601-a.webp new file mode 100644 index 0000000..1fca3d2 Binary files /dev/null and b/data/images/FX/FX-5.601-a.webp differ diff --git a/data/images/FX/FX-5.602-a.webp b/data/images/FX/FX-5.602-a.webp new file mode 100644 index 0000000..2036a08 Binary files /dev/null and b/data/images/FX/FX-5.602-a.webp differ diff --git a/data/images/FX/FX-5.603-a.webp b/data/images/FX/FX-5.603-a.webp new file mode 100644 index 0000000..6f53142 Binary files /dev/null and b/data/images/FX/FX-5.603-a.webp differ diff --git a/data/images/FX/FX-5.703-a.webp b/data/images/FX/FX-5.703-a.webp new file mode 100644 index 0000000..fade8f0 Binary files /dev/null and b/data/images/FX/FX-5.703-a.webp differ diff --git a/data/images/FX/FX-5.802-a.webp b/data/images/FX/FX-5.802-a.webp new file mode 100644 index 0000000..07e2289 Binary files /dev/null and b/data/images/FX/FX-5.802-a.webp differ diff --git a/data/images/FX/FX-5.802-b.webp b/data/images/FX/FX-5.802-b.webp new file mode 100644 index 0000000..7cf1e5b Binary files /dev/null and b/data/images/FX/FX-5.802-b.webp differ diff --git a/data/images/FX/FX-5.803-a.webp b/data/images/FX/FX-5.803-a.webp new file mode 100644 index 0000000..7ce97ee Binary files /dev/null and b/data/images/FX/FX-5.803-a.webp differ diff --git a/data/images/FX/FX-5.903-a.webp b/data/images/FX/FX-5.903-a.webp new file mode 100644 index 0000000..4e6bf2e Binary files /dev/null and b/data/images/FX/FX-5.903-a.webp differ diff --git a/data/images/UB/UB-1.101-a.webp b/data/images/UB/UB-1.101-a.webp new file mode 100644 index 0000000..f55bf55 Binary files /dev/null and b/data/images/UB/UB-1.101-a.webp differ diff --git a/data/images/UB/UB-1.101-b.webp b/data/images/UB/UB-1.101-b.webp new file mode 100644 index 0000000..9e98a71 Binary files /dev/null and b/data/images/UB/UB-1.101-b.webp differ diff --git a/data/images/UB/UB-1.102-a.webp b/data/images/UB/UB-1.102-a.webp new file mode 100644 index 0000000..60c7746 Binary files /dev/null and b/data/images/UB/UB-1.102-a.webp differ diff --git a/data/images/UB/UB-1.102-b.webp b/data/images/UB/UB-1.102-b.webp new file mode 100644 index 0000000..a5a7d58 Binary files /dev/null and b/data/images/UB/UB-1.102-b.webp differ diff --git a/data/images/UB/UB-1.103-a.webp b/data/images/UB/UB-1.103-a.webp new file mode 100644 index 0000000..564ce87 Binary files /dev/null and b/data/images/UB/UB-1.103-a.webp differ diff --git a/data/images/UB/UB-1.103-b.webp b/data/images/UB/UB-1.103-b.webp new file mode 100644 index 0000000..03e24dd Binary files /dev/null and b/data/images/UB/UB-1.103-b.webp differ diff --git a/data/images/UB/UB-1.104-a.webp b/data/images/UB/UB-1.104-a.webp new file mode 100644 index 0000000..ccbeee7 Binary files /dev/null and b/data/images/UB/UB-1.104-a.webp differ diff --git a/data/images/UB/UB-1.105-a.webp b/data/images/UB/UB-1.105-a.webp new file mode 100644 index 0000000..59bbdf7 Binary files /dev/null and b/data/images/UB/UB-1.105-a.webp differ diff --git a/data/images/UB/UB-1.106-a.webp b/data/images/UB/UB-1.106-a.webp new file mode 100644 index 0000000..ead998f Binary files /dev/null and b/data/images/UB/UB-1.106-a.webp differ diff --git a/data/images/UB/UB-1.202-a.webp b/data/images/UB/UB-1.202-a.webp new file mode 100644 index 0000000..d329adb Binary files /dev/null and b/data/images/UB/UB-1.202-a.webp differ diff --git a/data/images/UB/UB-1.203-a.webp b/data/images/UB/UB-1.203-a.webp new file mode 100644 index 0000000..52fe25c Binary files /dev/null and b/data/images/UB/UB-1.203-a.webp differ diff --git a/data/images/UB/UB-1.203-b.webp b/data/images/UB/UB-1.203-b.webp new file mode 100644 index 0000000..3df419c Binary files /dev/null and b/data/images/UB/UB-1.203-b.webp differ diff --git a/data/images/UB/UB-1.204-a.webp b/data/images/UB/UB-1.204-a.webp new file mode 100644 index 0000000..5aa208d Binary files /dev/null and b/data/images/UB/UB-1.204-a.webp differ diff --git a/data/images/UB/UB-1.204-b.webp b/data/images/UB/UB-1.204-b.webp new file mode 100644 index 0000000..a66800c Binary files /dev/null and b/data/images/UB/UB-1.204-b.webp differ diff --git a/data/images/UB/UB-1.206-a.webp b/data/images/UB/UB-1.206-a.webp new file mode 100644 index 0000000..c4ad437 Binary files /dev/null and b/data/images/UB/UB-1.206-a.webp differ diff --git a/data/images/UB/UB-1.206-b.webp b/data/images/UB/UB-1.206-b.webp new file mode 100644 index 0000000..b96aa04 Binary files /dev/null and b/data/images/UB/UB-1.206-b.webp differ diff --git a/data/images/UB/UB-1.207-a.webp b/data/images/UB/UB-1.207-a.webp new file mode 100644 index 0000000..56a1e3c Binary files /dev/null and b/data/images/UB/UB-1.207-a.webp differ diff --git a/data/images/UB/UB-1.208-a.webp b/data/images/UB/UB-1.208-a.webp new file mode 100644 index 0000000..271fa38 Binary files /dev/null and b/data/images/UB/UB-1.208-a.webp differ diff --git a/data/images/UB/UB-1.210-a.webp b/data/images/UB/UB-1.210-a.webp new file mode 100644 index 0000000..68258a1 Binary files /dev/null and b/data/images/UB/UB-1.210-a.webp differ diff --git a/data/images/UB/UB-1.210-b.webp b/data/images/UB/UB-1.210-b.webp new file mode 100644 index 0000000..cdee2ea Binary files /dev/null and b/data/images/UB/UB-1.210-b.webp differ diff --git a/data/images/UB/UB-1.304-a.webp b/data/images/UB/UB-1.304-a.webp new file mode 100644 index 0000000..9c682c9 Binary files /dev/null and b/data/images/UB/UB-1.304-a.webp differ diff --git a/data/images/UB/UB-1.306-a.webp b/data/images/UB/UB-1.306-a.webp new file mode 100644 index 0000000..3bfc83b Binary files /dev/null and b/data/images/UB/UB-1.306-a.webp differ diff --git a/data/images/UB/UB-1.307-a.webp b/data/images/UB/UB-1.307-a.webp new file mode 100644 index 0000000..e9e5756 Binary files /dev/null and b/data/images/UB/UB-1.307-a.webp differ diff --git a/data/images/UB/UB-1.307-b.webp b/data/images/UB/UB-1.307-b.webp new file mode 100644 index 0000000..fc1c547 Binary files /dev/null and b/data/images/UB/UB-1.307-b.webp differ diff --git a/data/images/UB/UB-1.308-a.webp b/data/images/UB/UB-1.308-a.webp new file mode 100644 index 0000000..4a72e10 Binary files /dev/null and b/data/images/UB/UB-1.308-a.webp differ diff --git a/data/images/UB/UB-1.310-a.webp b/data/images/UB/UB-1.310-a.webp new file mode 100644 index 0000000..c5ab5d8 Binary files /dev/null and b/data/images/UB/UB-1.310-a.webp differ diff --git a/data/images/UB/UB-1.310-b.webp b/data/images/UB/UB-1.310-b.webp new file mode 100644 index 0000000..ef7ddb0 Binary files /dev/null and b/data/images/UB/UB-1.310-b.webp differ diff --git a/data/images/UB/UB-1.406-a.webp b/data/images/UB/UB-1.406-a.webp new file mode 100644 index 0000000..114b561 Binary files /dev/null and b/data/images/UB/UB-1.406-a.webp differ diff --git a/data/images/UB/UB-1.406-b.webp b/data/images/UB/UB-1.406-b.webp new file mode 100644 index 0000000..0ca3edf Binary files /dev/null and b/data/images/UB/UB-1.406-b.webp differ diff --git a/data/images/UB/UB-1.407-a.webp b/data/images/UB/UB-1.407-a.webp new file mode 100644 index 0000000..676ffd1 Binary files /dev/null and b/data/images/UB/UB-1.407-a.webp differ diff --git a/data/images/UB/UB-1.408-a.webp b/data/images/UB/UB-1.408-a.webp new file mode 100644 index 0000000..f7542ff Binary files /dev/null and b/data/images/UB/UB-1.408-a.webp differ diff --git a/data/images/UB/UB-1.409-a.webp b/data/images/UB/UB-1.409-a.webp new file mode 100644 index 0000000..797ffb3 Binary files /dev/null and b/data/images/UB/UB-1.409-a.webp differ diff --git a/data/images/UB/UB-1.409-b.webp b/data/images/UB/UB-1.409-b.webp new file mode 100644 index 0000000..6c11f3a Binary files /dev/null and b/data/images/UB/UB-1.409-b.webp differ diff --git a/data/images/UB/UB-1.410-a.webp b/data/images/UB/UB-1.410-a.webp new file mode 100644 index 0000000..b0853be Binary files /dev/null and b/data/images/UB/UB-1.410-a.webp differ diff --git a/data/images/UB/UB-1.411-a.webp b/data/images/UB/UB-1.411-a.webp new file mode 100644 index 0000000..763e84c Binary files /dev/null and b/data/images/UB/UB-1.411-a.webp differ diff --git a/data/images/UB/UB-1.411-b.webp b/data/images/UB/UB-1.411-b.webp new file mode 100644 index 0000000..59484c3 Binary files /dev/null and b/data/images/UB/UB-1.411-b.webp differ diff --git a/data/images/UB/UB-1.509-a.webp b/data/images/UB/UB-1.509-a.webp new file mode 100644 index 0000000..4b1c761 Binary files /dev/null and b/data/images/UB/UB-1.509-a.webp differ diff --git a/data/images/UB/UB-1.609-a.webp b/data/images/UB/UB-1.609-a.webp new file mode 100644 index 0000000..8feaa36 Binary files /dev/null and b/data/images/UB/UB-1.609-a.webp differ diff --git a/data/images/UB/UB-1.709-a.webp b/data/images/UB/UB-1.709-a.webp new file mode 100644 index 0000000..b3976e6 Binary files /dev/null and b/data/images/UB/UB-1.709-a.webp differ diff --git a/data/images/UB/UB-2.101-a.webp b/data/images/UB/UB-2.101-a.webp new file mode 100644 index 0000000..6d57f38 Binary files /dev/null and b/data/images/UB/UB-2.101-a.webp differ diff --git a/data/images/UB/UB-2.101-b.webp b/data/images/UB/UB-2.101-b.webp new file mode 100644 index 0000000..b515915 Binary files /dev/null and b/data/images/UB/UB-2.101-b.webp differ diff --git a/data/images/UB/UB-2.104-a.webp b/data/images/UB/UB-2.104-a.webp new file mode 100644 index 0000000..8d7ac52 Binary files /dev/null and b/data/images/UB/UB-2.104-a.webp differ diff --git a/data/images/UB/UB-2.105-a.webp b/data/images/UB/UB-2.105-a.webp new file mode 100644 index 0000000..27d7c12 Binary files /dev/null and b/data/images/UB/UB-2.105-a.webp differ diff --git a/data/images/UB/UB-2.105-b.webp b/data/images/UB/UB-2.105-b.webp new file mode 100644 index 0000000..c34e3c5 Binary files /dev/null and b/data/images/UB/UB-2.105-b.webp differ diff --git a/data/images/UB/UB-2.201-a.webp b/data/images/UB/UB-2.201-a.webp new file mode 100644 index 0000000..cb04436 Binary files /dev/null and b/data/images/UB/UB-2.201-a.webp differ diff --git a/data/images/UB/UB-2.201-b.webp b/data/images/UB/UB-2.201-b.webp new file mode 100644 index 0000000..e6bdb97 Binary files /dev/null and b/data/images/UB/UB-2.201-b.webp differ diff --git a/data/images/UB/UB-2.201-c.webp b/data/images/UB/UB-2.201-c.webp new file mode 100644 index 0000000..e7577a5 Binary files /dev/null and b/data/images/UB/UB-2.201-c.webp differ diff --git a/data/images/UB/UB-2.202-a.webp b/data/images/UB/UB-2.202-a.webp new file mode 100644 index 0000000..a22627c Binary files /dev/null and b/data/images/UB/UB-2.202-a.webp differ diff --git a/data/images/UB/UB-2.202-b.webp b/data/images/UB/UB-2.202-b.webp new file mode 100644 index 0000000..56ef339 Binary files /dev/null and b/data/images/UB/UB-2.202-b.webp differ diff --git a/data/images/UB/UB-2.206-a.webp b/data/images/UB/UB-2.206-a.webp new file mode 100644 index 0000000..09dd598 Binary files /dev/null and b/data/images/UB/UB-2.206-a.webp differ diff --git a/data/images/UB/UB-2.301-a.webp b/data/images/UB/UB-2.301-a.webp new file mode 100644 index 0000000..2aee193 Binary files /dev/null and b/data/images/UB/UB-2.301-a.webp differ diff --git a/data/images/UB/UB-2.302-a.webp b/data/images/UB/UB-2.302-a.webp new file mode 100644 index 0000000..ca21642 Binary files /dev/null and b/data/images/UB/UB-2.302-a.webp differ diff --git a/data/images/UB/UB-2.302-b.webp b/data/images/UB/UB-2.302-b.webp new file mode 100644 index 0000000..b0af18c Binary files /dev/null and b/data/images/UB/UB-2.302-b.webp differ diff --git a/data/images/UB/UB-2.303-a.webp b/data/images/UB/UB-2.303-a.webp new file mode 100644 index 0000000..704b389 Binary files /dev/null and b/data/images/UB/UB-2.303-a.webp differ diff --git a/data/images/UB/UB-2.305-a.webp b/data/images/UB/UB-2.305-a.webp new file mode 100644 index 0000000..a2242fe Binary files /dev/null and b/data/images/UB/UB-2.305-a.webp differ diff --git a/data/images/UB/UB-2.305-b.webp b/data/images/UB/UB-2.305-b.webp new file mode 100644 index 0000000..f5d42dd Binary files /dev/null and b/data/images/UB/UB-2.305-b.webp differ diff --git a/data/images/UB/UB-2.305-c.webp b/data/images/UB/UB-2.305-c.webp new file mode 100644 index 0000000..614628a Binary files /dev/null and b/data/images/UB/UB-2.305-c.webp differ diff --git a/data/images/UB/UB-2.306-a.webp b/data/images/UB/UB-2.306-a.webp new file mode 100644 index 0000000..d6223a8 Binary files /dev/null and b/data/images/UB/UB-2.306-a.webp differ diff --git a/data/images/UB/UB-2.307-a.webp b/data/images/UB/UB-2.307-a.webp new file mode 100644 index 0000000..b2219d5 Binary files /dev/null and b/data/images/UB/UB-2.307-a.webp differ diff --git a/data/images/UB/UB-2.401-a.webp b/data/images/UB/UB-2.401-a.webp new file mode 100644 index 0000000..69be6c5 Binary files /dev/null and b/data/images/UB/UB-2.401-a.webp differ diff --git a/data/images/UB/UB-2.403-a.webp b/data/images/UB/UB-2.403-a.webp new file mode 100644 index 0000000..082b302 Binary files /dev/null and b/data/images/UB/UB-2.403-a.webp differ diff --git a/data/images/UB/UB-2.404-a.webp b/data/images/UB/UB-2.404-a.webp new file mode 100644 index 0000000..cd107d6 Binary files /dev/null and b/data/images/UB/UB-2.404-a.webp differ diff --git a/data/images/UB/UB-2.404-b.webp b/data/images/UB/UB-2.404-b.webp new file mode 100644 index 0000000..ce5b26d Binary files /dev/null and b/data/images/UB/UB-2.404-b.webp differ diff --git a/data/images/UB/UB-2.405-a.webp b/data/images/UB/UB-2.405-a.webp new file mode 100644 index 0000000..f6e9f38 Binary files /dev/null and b/data/images/UB/UB-2.405-a.webp differ diff --git a/data/images/UB/UB-2.406-a.webp b/data/images/UB/UB-2.406-a.webp new file mode 100644 index 0000000..1a65c13 Binary files /dev/null and b/data/images/UB/UB-2.406-a.webp differ diff --git a/data/images/UB/UB-2.407-a.webp b/data/images/UB/UB-2.407-a.webp new file mode 100644 index 0000000..79228d2 Binary files /dev/null and b/data/images/UB/UB-2.407-a.webp differ diff --git a/data/images/UB/UB-2.503-a.webp b/data/images/UB/UB-2.503-a.webp new file mode 100644 index 0000000..6fc4089 Binary files /dev/null and b/data/images/UB/UB-2.503-a.webp differ diff --git a/data/images/UB/UB-2.504-a.webp b/data/images/UB/UB-2.504-a.webp new file mode 100644 index 0000000..e119718 Binary files /dev/null and b/data/images/UB/UB-2.504-a.webp differ diff --git a/data/images/UB/UB-2.504-b.webp b/data/images/UB/UB-2.504-b.webp new file mode 100644 index 0000000..b638525 Binary files /dev/null and b/data/images/UB/UB-2.504-b.webp differ diff --git a/data/images/UB/UB-2.505-a.webp b/data/images/UB/UB-2.505-a.webp new file mode 100644 index 0000000..9a46406 Binary files /dev/null and b/data/images/UB/UB-2.505-a.webp differ diff --git a/data/images/UB/UB-2.506-a.webp b/data/images/UB/UB-2.506-a.webp new file mode 100644 index 0000000..16fb732 Binary files /dev/null and b/data/images/UB/UB-2.506-a.webp differ diff --git a/data/images/UB/UB-2.506-b.webp b/data/images/UB/UB-2.506-b.webp new file mode 100644 index 0000000..2bf837d Binary files /dev/null and b/data/images/UB/UB-2.506-b.webp differ diff --git a/data/images/UB/UB-2.506-c.webp b/data/images/UB/UB-2.506-c.webp new file mode 100644 index 0000000..ab8129c Binary files /dev/null and b/data/images/UB/UB-2.506-c.webp differ diff --git a/data/images/UB/UB-2.606-a.webp b/data/images/UB/UB-2.606-a.webp new file mode 100644 index 0000000..fa7fb78 Binary files /dev/null and b/data/images/UB/UB-2.606-a.webp differ diff --git a/data/images/UB/UB-2.606-b.webp b/data/images/UB/UB-2.606-b.webp new file mode 100644 index 0000000..bded0b5 Binary files /dev/null and b/data/images/UB/UB-2.606-b.webp differ diff --git a/data/images/UB/UB-2.706-a.webp b/data/images/UB/UB-2.706-a.webp new file mode 100644 index 0000000..56bd14e Binary files /dev/null and b/data/images/UB/UB-2.706-a.webp differ diff --git a/data/images/UB/UB-3.201-a.webp b/data/images/UB/UB-3.201-a.webp new file mode 100644 index 0000000..ad68ca6 Binary files /dev/null and b/data/images/UB/UB-3.201-a.webp differ diff --git a/data/images/UB/UB-3.201-b.webp b/data/images/UB/UB-3.201-b.webp new file mode 100644 index 0000000..6c98d7d Binary files /dev/null and b/data/images/UB/UB-3.201-b.webp differ diff --git a/data/images/UB/UB-3.206-a.webp b/data/images/UB/UB-3.206-a.webp new file mode 100644 index 0000000..543e137 Binary files /dev/null and b/data/images/UB/UB-3.206-a.webp differ diff --git a/data/images/UB/UB-3.206-b.webp b/data/images/UB/UB-3.206-b.webp new file mode 100644 index 0000000..2ec05bc Binary files /dev/null and b/data/images/UB/UB-3.206-b.webp differ diff --git a/data/images/UB/UB-3.206-c.webp b/data/images/UB/UB-3.206-c.webp new file mode 100644 index 0000000..8940216 Binary files /dev/null and b/data/images/UB/UB-3.206-c.webp differ diff --git a/data/images/UB/UB-3.301-a.webp b/data/images/UB/UB-3.301-a.webp new file mode 100644 index 0000000..be79428 Binary files /dev/null and b/data/images/UB/UB-3.301-a.webp differ diff --git a/data/images/UB/UB-3.304-a.webp b/data/images/UB/UB-3.304-a.webp new file mode 100644 index 0000000..1b51672 Binary files /dev/null and b/data/images/UB/UB-3.304-a.webp differ diff --git a/data/images/UB/UB-3.306-a.webp b/data/images/UB/UB-3.306-a.webp new file mode 100644 index 0000000..de6fb25 Binary files /dev/null and b/data/images/UB/UB-3.306-a.webp differ diff --git a/data/images/UB/UB-3.307-a.webp b/data/images/UB/UB-3.307-a.webp new file mode 100644 index 0000000..d455e22 Binary files /dev/null and b/data/images/UB/UB-3.307-a.webp differ diff --git a/data/images/UB/UB-3.308-a.webp b/data/images/UB/UB-3.308-a.webp new file mode 100644 index 0000000..f638035 Binary files /dev/null and b/data/images/UB/UB-3.308-a.webp differ diff --git a/data/images/UB/UB-3.309-a.webp b/data/images/UB/UB-3.309-a.webp new file mode 100644 index 0000000..c8898e5 Binary files /dev/null and b/data/images/UB/UB-3.309-a.webp differ diff --git a/data/images/UB/UB-3.309-b.webp b/data/images/UB/UB-3.309-b.webp new file mode 100644 index 0000000..8db3cfa Binary files /dev/null and b/data/images/UB/UB-3.309-b.webp differ diff --git a/data/images/UB/UB-3.310-a.webp b/data/images/UB/UB-3.310-a.webp new file mode 100644 index 0000000..4bfc81b Binary files /dev/null and b/data/images/UB/UB-3.310-a.webp differ diff --git a/data/images/UB/UB-3.310-b.webp b/data/images/UB/UB-3.310-b.webp new file mode 100644 index 0000000..21ca2a2 Binary files /dev/null and b/data/images/UB/UB-3.310-b.webp differ diff --git a/data/images/UB/UB-3.401-a.webp b/data/images/UB/UB-3.401-a.webp new file mode 100644 index 0000000..7d9c940 Binary files /dev/null and b/data/images/UB/UB-3.401-a.webp differ diff --git a/data/images/UB/UB-3.401-b.webp b/data/images/UB/UB-3.401-b.webp new file mode 100644 index 0000000..d5b6de1 Binary files /dev/null and b/data/images/UB/UB-3.401-b.webp differ diff --git a/data/images/UB/UB-3.401-c.webp b/data/images/UB/UB-3.401-c.webp new file mode 100644 index 0000000..9e9d987 Binary files /dev/null and b/data/images/UB/UB-3.401-c.webp differ diff --git a/data/images/UB/UB-3.402-a.webp b/data/images/UB/UB-3.402-a.webp new file mode 100644 index 0000000..12ea3c6 Binary files /dev/null and b/data/images/UB/UB-3.402-a.webp differ diff --git a/data/images/UB/UB-3.403-a.webp b/data/images/UB/UB-3.403-a.webp new file mode 100644 index 0000000..4d5af27 Binary files /dev/null and b/data/images/UB/UB-3.403-a.webp differ diff --git a/data/images/UB/UB-3.403-b.webp b/data/images/UB/UB-3.403-b.webp new file mode 100644 index 0000000..eb6f22e Binary files /dev/null and b/data/images/UB/UB-3.403-b.webp differ diff --git a/data/images/UB/UB-3.403-c.webp b/data/images/UB/UB-3.403-c.webp new file mode 100644 index 0000000..41e2c58 Binary files /dev/null and b/data/images/UB/UB-3.403-c.webp differ diff --git a/data/images/UB/UB-3.404-a.webp b/data/images/UB/UB-3.404-a.webp new file mode 100644 index 0000000..684ba59 Binary files /dev/null and b/data/images/UB/UB-3.404-a.webp differ diff --git a/data/images/UB/UB-3.405-a.webp b/data/images/UB/UB-3.405-a.webp new file mode 100644 index 0000000..53eda09 Binary files /dev/null and b/data/images/UB/UB-3.405-a.webp differ diff --git a/data/images/UB/UB-3.405-b.webp b/data/images/UB/UB-3.405-b.webp new file mode 100644 index 0000000..646ed26 Binary files /dev/null and b/data/images/UB/UB-3.405-b.webp differ diff --git a/data/images/UB/UB-3.405-c.webp b/data/images/UB/UB-3.405-c.webp new file mode 100644 index 0000000..28c6b9c Binary files /dev/null and b/data/images/UB/UB-3.405-c.webp differ diff --git a/data/images/UB/UB-3.407-a.webp b/data/images/UB/UB-3.407-a.webp new file mode 100644 index 0000000..cbe1843 Binary files /dev/null and b/data/images/UB/UB-3.407-a.webp differ diff --git a/data/images/UB/UB-3.408-a.webp b/data/images/UB/UB-3.408-a.webp new file mode 100644 index 0000000..bc6ad18 Binary files /dev/null and b/data/images/UB/UB-3.408-a.webp differ diff --git a/data/images/UB/UB-3.408-b.webp b/data/images/UB/UB-3.408-b.webp new file mode 100644 index 0000000..bcebea4 Binary files /dev/null and b/data/images/UB/UB-3.408-b.webp differ diff --git a/data/images/UB/UB-3.408-c.webp b/data/images/UB/UB-3.408-c.webp new file mode 100644 index 0000000..ada262d Binary files /dev/null and b/data/images/UB/UB-3.408-c.webp differ diff --git a/data/images/UB/UB-3.409-a.webp b/data/images/UB/UB-3.409-a.webp new file mode 100644 index 0000000..296f2fe Binary files /dev/null and b/data/images/UB/UB-3.409-a.webp differ diff --git a/data/images/UB/UB-3.410-a.webp b/data/images/UB/UB-3.410-a.webp new file mode 100644 index 0000000..dd5fc70 Binary files /dev/null and b/data/images/UB/UB-3.410-a.webp differ diff --git a/data/images/UB/UB-3.502-a.webp b/data/images/UB/UB-3.502-a.webp new file mode 100644 index 0000000..0c88786 Binary files /dev/null and b/data/images/UB/UB-3.502-a.webp differ diff --git a/data/images/UB/UB-3.503-a.webp b/data/images/UB/UB-3.503-a.webp new file mode 100644 index 0000000..3622c1d Binary files /dev/null and b/data/images/UB/UB-3.503-a.webp differ diff --git a/data/images/UB/UB-3.503-b.webp b/data/images/UB/UB-3.503-b.webp new file mode 100644 index 0000000..200551c Binary files /dev/null and b/data/images/UB/UB-3.503-b.webp differ diff --git a/data/images/UB/UB-3.504-a.webp b/data/images/UB/UB-3.504-a.webp new file mode 100644 index 0000000..03da6cd Binary files /dev/null and b/data/images/UB/UB-3.504-a.webp differ diff --git a/data/images/UB/UB-3.505-a.webp b/data/images/UB/UB-3.505-a.webp new file mode 100644 index 0000000..da8145d Binary files /dev/null and b/data/images/UB/UB-3.505-a.webp differ diff --git a/data/images/UB/UB-3.506-a.webp b/data/images/UB/UB-3.506-a.webp new file mode 100644 index 0000000..b3ef7ca Binary files /dev/null and b/data/images/UB/UB-3.506-a.webp differ diff --git a/data/images/UB/UB-3.506-b.webp b/data/images/UB/UB-3.506-b.webp new file mode 100644 index 0000000..f4173f2 Binary files /dev/null and b/data/images/UB/UB-3.506-b.webp differ diff --git a/data/images/UB/UB-3.510-a.webp b/data/images/UB/UB-3.510-a.webp new file mode 100644 index 0000000..fdaf8f7 Binary files /dev/null and b/data/images/UB/UB-3.510-a.webp differ diff --git a/data/images/UB/UB-3.510-b.webp b/data/images/UB/UB-3.510-b.webp new file mode 100644 index 0000000..9235f25 Binary files /dev/null and b/data/images/UB/UB-3.510-b.webp differ diff --git a/data/images/UB/UB-3.604-a.webp b/data/images/UB/UB-3.604-a.webp new file mode 100644 index 0000000..8fd8d19 Binary files /dev/null and b/data/images/UB/UB-3.604-a.webp differ diff --git a/data/images/UB/UB-3.608-a.webp b/data/images/UB/UB-3.608-a.webp new file mode 100644 index 0000000..e5846df Binary files /dev/null and b/data/images/UB/UB-3.608-a.webp differ diff --git a/data/images/UB/UB-3.705-a.webp b/data/images/UB/UB-3.705-a.webp new file mode 100644 index 0000000..92da948 Binary files /dev/null and b/data/images/UB/UB-3.705-a.webp differ diff --git a/data/images/UB/UB-3.708-a.webp b/data/images/UB/UB-3.708-a.webp new file mode 100644 index 0000000..cd8c4a9 Binary files /dev/null and b/data/images/UB/UB-3.708-a.webp differ diff --git a/data/images/UB/UB-3.708-b.webp b/data/images/UB/UB-3.708-b.webp new file mode 100644 index 0000000..5a8f59d Binary files /dev/null and b/data/images/UB/UB-3.708-b.webp differ diff --git a/data/images/UB/UB-4.101-a.webp b/data/images/UB/UB-4.101-a.webp new file mode 100644 index 0000000..cb21c12 Binary files /dev/null and b/data/images/UB/UB-4.101-a.webp differ diff --git a/data/images/UB/UB-4.103-a.webp b/data/images/UB/UB-4.103-a.webp new file mode 100644 index 0000000..9f719b8 Binary files /dev/null and b/data/images/UB/UB-4.103-a.webp differ diff --git a/data/images/UB/UB-4.104-a.webp b/data/images/UB/UB-4.104-a.webp new file mode 100644 index 0000000..a1429be Binary files /dev/null and b/data/images/UB/UB-4.104-a.webp differ diff --git a/data/images/UB/UB-4.106-a.webp b/data/images/UB/UB-4.106-a.webp new file mode 100644 index 0000000..eb8949b Binary files /dev/null and b/data/images/UB/UB-4.106-a.webp differ diff --git a/data/images/UB/UB-4.107-a.webp b/data/images/UB/UB-4.107-a.webp new file mode 100644 index 0000000..ea5a64c Binary files /dev/null and b/data/images/UB/UB-4.107-a.webp differ diff --git a/data/images/UB/UB-4.201-a.webp b/data/images/UB/UB-4.201-a.webp new file mode 100644 index 0000000..6d8ad0f Binary files /dev/null and b/data/images/UB/UB-4.201-a.webp differ diff --git a/data/images/UB/UB-4.205-a.webp b/data/images/UB/UB-4.205-a.webp new file mode 100644 index 0000000..60d95ac Binary files /dev/null and b/data/images/UB/UB-4.205-a.webp differ diff --git a/data/images/UB/UB-4.208-a.webp b/data/images/UB/UB-4.208-a.webp new file mode 100644 index 0000000..d16824a Binary files /dev/null and b/data/images/UB/UB-4.208-a.webp differ diff --git a/data/images/UB/UB-4.302-a.webp b/data/images/UB/UB-4.302-a.webp new file mode 100644 index 0000000..d8061dd Binary files /dev/null and b/data/images/UB/UB-4.302-a.webp differ diff --git a/data/images/UB/UB-4.304-a.webp b/data/images/UB/UB-4.304-a.webp new file mode 100644 index 0000000..4f11d49 Binary files /dev/null and b/data/images/UB/UB-4.304-a.webp differ diff --git a/data/images/UB/UB-4.304-b.webp b/data/images/UB/UB-4.304-b.webp new file mode 100644 index 0000000..da946f3 Binary files /dev/null and b/data/images/UB/UB-4.304-b.webp differ diff --git a/data/images/UB/UB-4.304-c.webp b/data/images/UB/UB-4.304-c.webp new file mode 100644 index 0000000..1c928d2 Binary files /dev/null and b/data/images/UB/UB-4.304-c.webp differ diff --git a/data/images/UB/UB-4.305-a.webp b/data/images/UB/UB-4.305-a.webp new file mode 100644 index 0000000..9a723f1 Binary files /dev/null and b/data/images/UB/UB-4.305-a.webp differ diff --git a/data/images/UB/UB-4.308-a.webp b/data/images/UB/UB-4.308-a.webp new file mode 100644 index 0000000..fb014b7 Binary files /dev/null and b/data/images/UB/UB-4.308-a.webp differ diff --git a/data/images/UB/UB-4.308-b.webp b/data/images/UB/UB-4.308-b.webp new file mode 100644 index 0000000..8e51669 Binary files /dev/null and b/data/images/UB/UB-4.308-b.webp differ diff --git a/data/images/UB/UB-4.401-a.webp b/data/images/UB/UB-4.401-a.webp new file mode 100644 index 0000000..6183f7c Binary files /dev/null and b/data/images/UB/UB-4.401-a.webp differ diff --git a/data/images/UB/UB-4.401-b.webp b/data/images/UB/UB-4.401-b.webp new file mode 100644 index 0000000..23afecb Binary files /dev/null and b/data/images/UB/UB-4.401-b.webp differ diff --git a/data/images/UB/UB-4.402-a.webp b/data/images/UB/UB-4.402-a.webp new file mode 100644 index 0000000..bd171d8 Binary files /dev/null and b/data/images/UB/UB-4.402-a.webp differ diff --git a/data/images/UB/UB-4.403-a.webp b/data/images/UB/UB-4.403-a.webp new file mode 100644 index 0000000..b2bf6d3 Binary files /dev/null and b/data/images/UB/UB-4.403-a.webp differ diff --git a/data/images/UB/UB-4.403-b.webp b/data/images/UB/UB-4.403-b.webp new file mode 100644 index 0000000..4e624b1 Binary files /dev/null and b/data/images/UB/UB-4.403-b.webp differ diff --git a/data/images/UB/UB-4.404-a.webp b/data/images/UB/UB-4.404-a.webp new file mode 100644 index 0000000..2ff51e1 Binary files /dev/null and b/data/images/UB/UB-4.404-a.webp differ diff --git a/data/images/UB/UB-4.405-a.webp b/data/images/UB/UB-4.405-a.webp new file mode 100644 index 0000000..3c8568c Binary files /dev/null and b/data/images/UB/UB-4.405-a.webp differ diff --git a/data/images/UB/UB-4.406-a.webp b/data/images/UB/UB-4.406-a.webp new file mode 100644 index 0000000..153f2d3 Binary files /dev/null and b/data/images/UB/UB-4.406-a.webp differ diff --git a/data/images/UB/UB-4.406-b.webp b/data/images/UB/UB-4.406-b.webp new file mode 100644 index 0000000..6e80ed8 Binary files /dev/null and b/data/images/UB/UB-4.406-b.webp differ diff --git a/data/images/UB/UB-4.407-a.webp b/data/images/UB/UB-4.407-a.webp new file mode 100644 index 0000000..a737e80 Binary files /dev/null and b/data/images/UB/UB-4.407-a.webp differ diff --git a/data/images/UB/UB-4.407-b.webp b/data/images/UB/UB-4.407-b.webp new file mode 100644 index 0000000..1bc5e16 Binary files /dev/null and b/data/images/UB/UB-4.407-b.webp differ diff --git a/data/images/UB/UB-4.501-a.webp b/data/images/UB/UB-4.501-a.webp new file mode 100644 index 0000000..cae4927 Binary files /dev/null and b/data/images/UB/UB-4.501-a.webp differ diff --git a/data/images/UB/UB-4.502-a.webp b/data/images/UB/UB-4.502-a.webp new file mode 100644 index 0000000..f16dacf Binary files /dev/null and b/data/images/UB/UB-4.502-a.webp differ diff --git a/data/images/UB/UB-4.502-b.webp b/data/images/UB/UB-4.502-b.webp new file mode 100644 index 0000000..ea12796 Binary files /dev/null and b/data/images/UB/UB-4.502-b.webp differ diff --git a/data/images/UB/UB-4.503-a.webp b/data/images/UB/UB-4.503-a.webp new file mode 100644 index 0000000..f791392 Binary files /dev/null and b/data/images/UB/UB-4.503-a.webp differ diff --git a/data/images/UB/UB-4.503-b.webp b/data/images/UB/UB-4.503-b.webp new file mode 100644 index 0000000..e19bdd6 Binary files /dev/null and b/data/images/UB/UB-4.503-b.webp differ diff --git a/data/images/UB/UB-4.504-a.webp b/data/images/UB/UB-4.504-a.webp new file mode 100644 index 0000000..6b902fe Binary files /dev/null and b/data/images/UB/UB-4.504-a.webp differ diff --git a/data/images/UB/UB-4.505-a.webp b/data/images/UB/UB-4.505-a.webp new file mode 100644 index 0000000..08923f3 Binary files /dev/null and b/data/images/UB/UB-4.505-a.webp differ diff --git a/data/images/UB/UB-4.506-a.webp b/data/images/UB/UB-4.506-a.webp new file mode 100644 index 0000000..c74b189 Binary files /dev/null and b/data/images/UB/UB-4.506-a.webp differ diff --git a/data/images/UB/UB-4.507-a.webp b/data/images/UB/UB-4.507-a.webp new file mode 100644 index 0000000..21b767c Binary files /dev/null and b/data/images/UB/UB-4.507-a.webp differ diff --git a/data/images/UB/UB-4.508-a.webp b/data/images/UB/UB-4.508-a.webp new file mode 100644 index 0000000..e071871 Binary files /dev/null and b/data/images/UB/UB-4.508-a.webp differ diff --git a/data/images/UB/UB-4.508-b.webp b/data/images/UB/UB-4.508-b.webp new file mode 100644 index 0000000..8b5b410 Binary files /dev/null and b/data/images/UB/UB-4.508-b.webp differ diff --git a/data/images/UB/UB-4.508-c.webp b/data/images/UB/UB-4.508-c.webp new file mode 100644 index 0000000..8878867 Binary files /dev/null and b/data/images/UB/UB-4.508-c.webp differ diff --git a/data/images/UB/UB-4.602-a.webp b/data/images/UB/UB-4.602-a.webp new file mode 100644 index 0000000..9d55a4d Binary files /dev/null and b/data/images/UB/UB-4.602-a.webp differ diff --git a/data/images/UB/UB-4.608-a.webp b/data/images/UB/UB-4.608-a.webp new file mode 100644 index 0000000..252aaa6 Binary files /dev/null and b/data/images/UB/UB-4.608-a.webp differ diff --git a/data/images/UB/UB-4.708-a.webp b/data/images/UB/UB-4.708-a.webp new file mode 100644 index 0000000..2017e64 Binary files /dev/null and b/data/images/UB/UB-4.708-a.webp differ diff --git a/data/images/UB/UB-5.101-a.webp b/data/images/UB/UB-5.101-a.webp new file mode 100644 index 0000000..a8b50b5 Binary files /dev/null and b/data/images/UB/UB-5.101-a.webp differ diff --git a/data/images/UB/UB-5.104-a.webp b/data/images/UB/UB-5.104-a.webp new file mode 100644 index 0000000..5459284 Binary files /dev/null and b/data/images/UB/UB-5.104-a.webp differ diff --git a/data/images/UB/UB-5.105-a.webp b/data/images/UB/UB-5.105-a.webp new file mode 100644 index 0000000..a63fb87 Binary files /dev/null and b/data/images/UB/UB-5.105-a.webp differ diff --git a/data/images/UB/UB-5.106-a.webp b/data/images/UB/UB-5.106-a.webp new file mode 100644 index 0000000..c24b033 Binary files /dev/null and b/data/images/UB/UB-5.106-a.webp differ diff --git a/data/images/UB/UB-5.108-a.webp b/data/images/UB/UB-5.108-a.webp new file mode 100644 index 0000000..86d3d52 Binary files /dev/null and b/data/images/UB/UB-5.108-a.webp differ diff --git a/data/images/UB/UB-5.202-a.webp b/data/images/UB/UB-5.202-a.webp new file mode 100644 index 0000000..44b8299 Binary files /dev/null and b/data/images/UB/UB-5.202-a.webp differ diff --git a/data/images/UB/UB-5.207-a.webp b/data/images/UB/UB-5.207-a.webp new file mode 100644 index 0000000..59d4f34 Binary files /dev/null and b/data/images/UB/UB-5.207-a.webp differ diff --git a/data/images/UB/UB-5.301-a.webp b/data/images/UB/UB-5.301-a.webp new file mode 100644 index 0000000..f7751e2 Binary files /dev/null and b/data/images/UB/UB-5.301-a.webp differ diff --git a/data/images/UB/UB-5.301-b.webp b/data/images/UB/UB-5.301-b.webp new file mode 100644 index 0000000..9d98854 Binary files /dev/null and b/data/images/UB/UB-5.301-b.webp differ diff --git a/data/images/UB/UB-5.301-c.webp b/data/images/UB/UB-5.301-c.webp new file mode 100644 index 0000000..af8ca32 Binary files /dev/null and b/data/images/UB/UB-5.301-c.webp differ diff --git a/data/images/UB/UB-5.302-a.webp b/data/images/UB/UB-5.302-a.webp new file mode 100644 index 0000000..a356ac8 Binary files /dev/null and b/data/images/UB/UB-5.302-a.webp differ diff --git a/data/images/UB/UB-5.303-a.webp b/data/images/UB/UB-5.303-a.webp new file mode 100644 index 0000000..3da01db Binary files /dev/null and b/data/images/UB/UB-5.303-a.webp differ diff --git a/data/images/UB/UB-5.304-a.webp b/data/images/UB/UB-5.304-a.webp new file mode 100644 index 0000000..345bcef Binary files /dev/null and b/data/images/UB/UB-5.304-a.webp differ diff --git a/data/images/UB/UB-5.304-b.webp b/data/images/UB/UB-5.304-b.webp new file mode 100644 index 0000000..07b4812 Binary files /dev/null and b/data/images/UB/UB-5.304-b.webp differ diff --git a/data/images/UB/UB-5.305-a.webp b/data/images/UB/UB-5.305-a.webp new file mode 100644 index 0000000..8eebd95 Binary files /dev/null and b/data/images/UB/UB-5.305-a.webp differ diff --git a/data/images/UB/UB-5.305-b.webp b/data/images/UB/UB-5.305-b.webp new file mode 100644 index 0000000..c8a58cb Binary files /dev/null and b/data/images/UB/UB-5.305-b.webp differ diff --git a/data/images/UB/UB-5.306-a.webp b/data/images/UB/UB-5.306-a.webp new file mode 100644 index 0000000..ae2d0d8 Binary files /dev/null and b/data/images/UB/UB-5.306-a.webp differ diff --git a/data/images/UB/UB-5.306-b.webp b/data/images/UB/UB-5.306-b.webp new file mode 100644 index 0000000..28df1ec Binary files /dev/null and b/data/images/UB/UB-5.306-b.webp differ diff --git a/data/images/UB/UB-5.307-a.webp b/data/images/UB/UB-5.307-a.webp new file mode 100644 index 0000000..63bed2b Binary files /dev/null and b/data/images/UB/UB-5.307-a.webp differ diff --git a/data/images/UB/UB-5.308-a.webp b/data/images/UB/UB-5.308-a.webp new file mode 100644 index 0000000..c8862d0 Binary files /dev/null and b/data/images/UB/UB-5.308-a.webp differ diff --git a/data/images/UB/UB-5.308-b.webp b/data/images/UB/UB-5.308-b.webp new file mode 100644 index 0000000..51e9bcd Binary files /dev/null and b/data/images/UB/UB-5.308-b.webp differ diff --git a/data/images/UB/UB-5.308-c.webp b/data/images/UB/UB-5.308-c.webp new file mode 100644 index 0000000..ea7e62a Binary files /dev/null and b/data/images/UB/UB-5.308-c.webp differ diff --git a/data/images/UB/UB-5.402-a.webp b/data/images/UB/UB-5.402-a.webp new file mode 100644 index 0000000..f4a887b Binary files /dev/null and b/data/images/UB/UB-5.402-a.webp differ diff --git a/data/images/UB/UB-5.402-b.webp b/data/images/UB/UB-5.402-b.webp new file mode 100644 index 0000000..e8aca81 Binary files /dev/null and b/data/images/UB/UB-5.402-b.webp differ diff --git a/data/images/UB/UB-5.403-a.webp b/data/images/UB/UB-5.403-a.webp new file mode 100644 index 0000000..bce4590 Binary files /dev/null and b/data/images/UB/UB-5.403-a.webp differ diff --git a/data/images/UB/UB-5.404-a.webp b/data/images/UB/UB-5.404-a.webp new file mode 100644 index 0000000..0cc853a Binary files /dev/null and b/data/images/UB/UB-5.404-a.webp differ diff --git a/data/images/UB/UB-5.404-b.webp b/data/images/UB/UB-5.404-b.webp new file mode 100644 index 0000000..b1abe45 Binary files /dev/null and b/data/images/UB/UB-5.404-b.webp differ diff --git a/data/images/UB/UB-5.405-a.webp b/data/images/UB/UB-5.405-a.webp new file mode 100644 index 0000000..0b09061 Binary files /dev/null and b/data/images/UB/UB-5.405-a.webp differ diff --git a/data/images/UB/UB-5.406-a.webp b/data/images/UB/UB-5.406-a.webp new file mode 100644 index 0000000..f8ed1d5 Binary files /dev/null and b/data/images/UB/UB-5.406-a.webp differ diff --git a/data/images/UB/UB-5.408-a.webp b/data/images/UB/UB-5.408-a.webp new file mode 100644 index 0000000..7eff915 Binary files /dev/null and b/data/images/UB/UB-5.408-a.webp differ diff --git a/data/images/UB/UB-5.408-b.webp b/data/images/UB/UB-5.408-b.webp new file mode 100644 index 0000000..4765abd Binary files /dev/null and b/data/images/UB/UB-5.408-b.webp differ diff --git a/data/images/UB/UB-5.409-a.webp b/data/images/UB/UB-5.409-a.webp new file mode 100644 index 0000000..9615aa8 Binary files /dev/null and b/data/images/UB/UB-5.409-a.webp differ diff --git a/data/images/UB/UB-5.410-a.webp b/data/images/UB/UB-5.410-a.webp new file mode 100644 index 0000000..fbe4f7d Binary files /dev/null and b/data/images/UB/UB-5.410-a.webp differ diff --git a/data/images/UB/UB-5.410-b.webp b/data/images/UB/UB-5.410-b.webp new file mode 100644 index 0000000..d39245b Binary files /dev/null and b/data/images/UB/UB-5.410-b.webp differ diff --git a/data/images/UB/UB-5.501-a.webp b/data/images/UB/UB-5.501-a.webp new file mode 100644 index 0000000..0f264b4 Binary files /dev/null and b/data/images/UB/UB-5.501-a.webp differ diff --git a/data/images/UB/UB-5.501-b.webp b/data/images/UB/UB-5.501-b.webp new file mode 100644 index 0000000..98373cf Binary files /dev/null and b/data/images/UB/UB-5.501-b.webp differ diff --git a/data/images/UB/UB-5.502-a.webp b/data/images/UB/UB-5.502-a.webp new file mode 100644 index 0000000..e87cf1f Binary files /dev/null and b/data/images/UB/UB-5.502-a.webp differ diff --git a/data/images/UB/UB-5.502-b.webp b/data/images/UB/UB-5.502-b.webp new file mode 100644 index 0000000..cf1675c Binary files /dev/null and b/data/images/UB/UB-5.502-b.webp differ diff --git a/data/images/UB/UB-5.508-a.webp b/data/images/UB/UB-5.508-a.webp new file mode 100644 index 0000000..4a1999a Binary files /dev/null and b/data/images/UB/UB-5.508-a.webp differ diff --git a/data/images/UB/UB-5.509-a.webp b/data/images/UB/UB-5.509-a.webp new file mode 100644 index 0000000..3785b95 Binary files /dev/null and b/data/images/UB/UB-5.509-a.webp differ diff --git a/data/images/UB/UB-5.509-b.webp b/data/images/UB/UB-5.509-b.webp new file mode 100644 index 0000000..2d97567 Binary files /dev/null and b/data/images/UB/UB-5.509-b.webp differ diff --git a/data/images/UB/UB-5.510-a.webp b/data/images/UB/UB-5.510-a.webp new file mode 100644 index 0000000..799c7b7 Binary files /dev/null and b/data/images/UB/UB-5.510-a.webp differ diff --git a/data/images/UB/UB-5.510-b.webp b/data/images/UB/UB-5.510-b.webp new file mode 100644 index 0000000..f1d4527 Binary files /dev/null and b/data/images/UB/UB-5.510-b.webp differ diff --git a/data/images/UB/UB-5.607-a.webp b/data/images/UB/UB-5.607-a.webp new file mode 100644 index 0000000..14f6df3 Binary files /dev/null and b/data/images/UB/UB-5.607-a.webp differ diff --git a/data/images/UB/UB-5.610-a.webp b/data/images/UB/UB-5.610-a.webp new file mode 100644 index 0000000..5751f81 Binary files /dev/null and b/data/images/UB/UB-5.610-a.webp differ diff --git a/data/images/UB/UB-5.610-b.webp b/data/images/UB/UB-5.610-b.webp new file mode 100644 index 0000000..5308730 Binary files /dev/null and b/data/images/UB/UB-5.610-b.webp differ diff --git a/data/images/UB/UB-6.101-a.webp b/data/images/UB/UB-6.101-a.webp new file mode 100644 index 0000000..76cc302 Binary files /dev/null and b/data/images/UB/UB-6.101-a.webp differ diff --git a/data/images/UB/UB-6.101-b.webp b/data/images/UB/UB-6.101-b.webp new file mode 100644 index 0000000..af187a7 Binary files /dev/null and b/data/images/UB/UB-6.101-b.webp differ diff --git a/data/images/UB/UB-6.102-a.webp b/data/images/UB/UB-6.102-a.webp new file mode 100644 index 0000000..d133320 Binary files /dev/null and b/data/images/UB/UB-6.102-a.webp differ diff --git a/data/images/UB/UB-6.102-b.webp b/data/images/UB/UB-6.102-b.webp new file mode 100644 index 0000000..19111cf Binary files /dev/null and b/data/images/UB/UB-6.102-b.webp differ diff --git a/data/images/UB/UB-6.104-a.webp b/data/images/UB/UB-6.104-a.webp new file mode 100644 index 0000000..0b5ee6a Binary files /dev/null and b/data/images/UB/UB-6.104-a.webp differ diff --git a/data/images/UB/UB-6.104-b.webp b/data/images/UB/UB-6.104-b.webp new file mode 100644 index 0000000..65e7c4d Binary files /dev/null and b/data/images/UB/UB-6.104-b.webp differ diff --git a/data/images/UB/UB-6.104-c.webp b/data/images/UB/UB-6.104-c.webp new file mode 100644 index 0000000..7e1e866 Binary files /dev/null and b/data/images/UB/UB-6.104-c.webp differ diff --git a/data/images/UB/UB-6.108-a.webp b/data/images/UB/UB-6.108-a.webp new file mode 100644 index 0000000..f9f2d7f Binary files /dev/null and b/data/images/UB/UB-6.108-a.webp differ diff --git a/data/images/UB/UB-6.108-b.webp b/data/images/UB/UB-6.108-b.webp new file mode 100644 index 0000000..fdd64f4 Binary files /dev/null and b/data/images/UB/UB-6.108-b.webp differ diff --git a/data/images/UB/UB-6.108-c.webp b/data/images/UB/UB-6.108-c.webp new file mode 100644 index 0000000..f2d41dd Binary files /dev/null and b/data/images/UB/UB-6.108-c.webp differ diff --git a/data/images/UB/UB-6.108-d.webp b/data/images/UB/UB-6.108-d.webp new file mode 100644 index 0000000..8bd714e Binary files /dev/null and b/data/images/UB/UB-6.108-d.webp differ diff --git a/data/images/UB/UB-6.201-a.webp b/data/images/UB/UB-6.201-a.webp new file mode 100644 index 0000000..481c189 Binary files /dev/null and b/data/images/UB/UB-6.201-a.webp differ diff --git a/data/images/UB/UB-6.201-b.webp b/data/images/UB/UB-6.201-b.webp new file mode 100644 index 0000000..597e90b Binary files /dev/null and b/data/images/UB/UB-6.201-b.webp differ diff --git a/data/images/UB/UB-6.204-a.webp b/data/images/UB/UB-6.204-a.webp new file mode 100644 index 0000000..7cd4902 Binary files /dev/null and b/data/images/UB/UB-6.204-a.webp differ diff --git a/data/images/UB/UB-6.204-b.webp b/data/images/UB/UB-6.204-b.webp new file mode 100644 index 0000000..76e893e Binary files /dev/null and b/data/images/UB/UB-6.204-b.webp differ diff --git a/data/images/UB/UB-6.204-c.webp b/data/images/UB/UB-6.204-c.webp new file mode 100644 index 0000000..71edf7a Binary files /dev/null and b/data/images/UB/UB-6.204-c.webp differ diff --git a/data/images/UB/UB-6.204-d.webp b/data/images/UB/UB-6.204-d.webp new file mode 100644 index 0000000..822db73 Binary files /dev/null and b/data/images/UB/UB-6.204-d.webp differ diff --git a/data/images/UB/UB-6.205-a.webp b/data/images/UB/UB-6.205-a.webp new file mode 100644 index 0000000..4d5c649 Binary files /dev/null and b/data/images/UB/UB-6.205-a.webp differ diff --git a/data/images/UB/UB-6.208-a.webp b/data/images/UB/UB-6.208-a.webp new file mode 100644 index 0000000..f12694c Binary files /dev/null and b/data/images/UB/UB-6.208-a.webp differ diff --git a/data/images/UB/UB-6.208-b.webp b/data/images/UB/UB-6.208-b.webp new file mode 100644 index 0000000..1787d65 Binary files /dev/null and b/data/images/UB/UB-6.208-b.webp differ diff --git a/data/images/UB/UB-6.208-c.webp b/data/images/UB/UB-6.208-c.webp new file mode 100644 index 0000000..5d1b3bd Binary files /dev/null and b/data/images/UB/UB-6.208-c.webp differ diff --git a/data/images/UB/UB-6.208-d.webp b/data/images/UB/UB-6.208-d.webp new file mode 100644 index 0000000..1517e17 Binary files /dev/null and b/data/images/UB/UB-6.208-d.webp differ diff --git a/data/images/UB/UB-6.209-a.webp b/data/images/UB/UB-6.209-a.webp new file mode 100644 index 0000000..0614699 Binary files /dev/null and b/data/images/UB/UB-6.209-a.webp differ diff --git a/data/images/UB/UB-6.209-b.webp b/data/images/UB/UB-6.209-b.webp new file mode 100644 index 0000000..241b63a Binary files /dev/null and b/data/images/UB/UB-6.209-b.webp differ diff --git a/data/images/UB/UB-6.210-a.webp b/data/images/UB/UB-6.210-a.webp new file mode 100644 index 0000000..98f3cf6 Binary files /dev/null and b/data/images/UB/UB-6.210-a.webp differ diff --git a/data/images/UB/UB-6.301-a.webp b/data/images/UB/UB-6.301-a.webp new file mode 100644 index 0000000..3938ef3 Binary files /dev/null and b/data/images/UB/UB-6.301-a.webp differ diff --git a/data/images/UB/UB-6.301-b.webp b/data/images/UB/UB-6.301-b.webp new file mode 100644 index 0000000..f56a031 Binary files /dev/null and b/data/images/UB/UB-6.301-b.webp differ diff --git a/data/images/UB/UB-6.302-a.webp b/data/images/UB/UB-6.302-a.webp new file mode 100644 index 0000000..092da60 Binary files /dev/null and b/data/images/UB/UB-6.302-a.webp differ diff --git a/data/images/UB/UB-6.302-b.webp b/data/images/UB/UB-6.302-b.webp new file mode 100644 index 0000000..adcf634 Binary files /dev/null and b/data/images/UB/UB-6.302-b.webp differ diff --git a/data/images/UB/UB-6.303-a.webp b/data/images/UB/UB-6.303-a.webp new file mode 100644 index 0000000..3817942 Binary files /dev/null and b/data/images/UB/UB-6.303-a.webp differ diff --git a/data/images/UB/UB-6.303-b.webp b/data/images/UB/UB-6.303-b.webp new file mode 100644 index 0000000..561c929 Binary files /dev/null and b/data/images/UB/UB-6.303-b.webp differ diff --git a/data/images/UB/UB-6.303-c.webp b/data/images/UB/UB-6.303-c.webp new file mode 100644 index 0000000..2399388 Binary files /dev/null and b/data/images/UB/UB-6.303-c.webp differ diff --git a/data/images/UB/UB-6.303-d.webp b/data/images/UB/UB-6.303-d.webp new file mode 100644 index 0000000..d2d678f Binary files /dev/null and b/data/images/UB/UB-6.303-d.webp differ diff --git a/data/images/UB/UB-6.304-a.webp b/data/images/UB/UB-6.304-a.webp new file mode 100644 index 0000000..9e5c8a7 Binary files /dev/null and b/data/images/UB/UB-6.304-a.webp differ diff --git a/data/images/UB/UB-6.304-b.webp b/data/images/UB/UB-6.304-b.webp new file mode 100644 index 0000000..75fe56c Binary files /dev/null and b/data/images/UB/UB-6.304-b.webp differ diff --git a/data/images/UB/UB-6.305-a.webp b/data/images/UB/UB-6.305-a.webp new file mode 100644 index 0000000..f1ee29d Binary files /dev/null and b/data/images/UB/UB-6.305-a.webp differ diff --git a/data/images/UB/UB-6.308-a.webp b/data/images/UB/UB-6.308-a.webp new file mode 100644 index 0000000..93f1a17 Binary files /dev/null and b/data/images/UB/UB-6.308-a.webp differ diff --git a/data/images/UB/UB-6.308-b.webp b/data/images/UB/UB-6.308-b.webp new file mode 100644 index 0000000..597a47d Binary files /dev/null and b/data/images/UB/UB-6.308-b.webp differ diff --git a/data/images/UB/UB-6.308-c.webp b/data/images/UB/UB-6.308-c.webp new file mode 100644 index 0000000..1c0bb54 Binary files /dev/null and b/data/images/UB/UB-6.308-c.webp differ diff --git a/data/images/UB/UB-6.309-a.webp b/data/images/UB/UB-6.309-a.webp new file mode 100644 index 0000000..cbc669c Binary files /dev/null and b/data/images/UB/UB-6.309-a.webp differ diff --git a/data/images/UB/UB-6.309-b.webp b/data/images/UB/UB-6.309-b.webp new file mode 100644 index 0000000..221304c Binary files /dev/null and b/data/images/UB/UB-6.309-b.webp differ diff --git a/data/images/UB/UB-6.310-a.webp b/data/images/UB/UB-6.310-a.webp new file mode 100644 index 0000000..4aab68c Binary files /dev/null and b/data/images/UB/UB-6.310-a.webp differ diff --git a/data/images/UB/UB-6.310-b.webp b/data/images/UB/UB-6.310-b.webp new file mode 100644 index 0000000..c69f8cc Binary files /dev/null and b/data/images/UB/UB-6.310-b.webp differ diff --git a/data/images/UB/UB-6.310-c.webp b/data/images/UB/UB-6.310-c.webp new file mode 100644 index 0000000..ae2a89f Binary files /dev/null and b/data/images/UB/UB-6.310-c.webp differ diff --git a/data/images/UB/UB-6.401-a.webp b/data/images/UB/UB-6.401-a.webp new file mode 100644 index 0000000..25f00e1 Binary files /dev/null and b/data/images/UB/UB-6.401-a.webp differ diff --git a/data/images/UB/UB-6.401-b.webp b/data/images/UB/UB-6.401-b.webp new file mode 100644 index 0000000..25f00d3 Binary files /dev/null and b/data/images/UB/UB-6.401-b.webp differ diff --git a/data/images/UB/UB-6.402-a.webp b/data/images/UB/UB-6.402-a.webp new file mode 100644 index 0000000..8441d6f Binary files /dev/null and b/data/images/UB/UB-6.402-a.webp differ diff --git a/data/images/UB/UB-6.402-b.webp b/data/images/UB/UB-6.402-b.webp new file mode 100644 index 0000000..706a31e Binary files /dev/null and b/data/images/UB/UB-6.402-b.webp differ diff --git a/data/images/UB/UB-6.402-c.webp b/data/images/UB/UB-6.402-c.webp new file mode 100644 index 0000000..46019d4 Binary files /dev/null and b/data/images/UB/UB-6.402-c.webp differ diff --git a/data/images/UB/UB-6.403-a.webp b/data/images/UB/UB-6.403-a.webp new file mode 100644 index 0000000..90ba48b Binary files /dev/null and b/data/images/UB/UB-6.403-a.webp differ diff --git a/data/images/UB/UB-6.403-b.webp b/data/images/UB/UB-6.403-b.webp new file mode 100644 index 0000000..02ca548 Binary files /dev/null and b/data/images/UB/UB-6.403-b.webp differ diff --git a/data/images/UB/UB-6.403-c.webp b/data/images/UB/UB-6.403-c.webp new file mode 100644 index 0000000..0310ab7 Binary files /dev/null and b/data/images/UB/UB-6.403-c.webp differ diff --git a/data/images/UB/UB-6.404-a.webp b/data/images/UB/UB-6.404-a.webp new file mode 100644 index 0000000..d9938df Binary files /dev/null and b/data/images/UB/UB-6.404-a.webp differ diff --git a/data/images/UB/UB-6.405-a.webp b/data/images/UB/UB-6.405-a.webp new file mode 100644 index 0000000..26b297b Binary files /dev/null and b/data/images/UB/UB-6.405-a.webp differ diff --git a/data/images/UB/UB-6.405-b.webp b/data/images/UB/UB-6.405-b.webp new file mode 100644 index 0000000..af289f4 Binary files /dev/null and b/data/images/UB/UB-6.405-b.webp differ diff --git a/data/images/UB/UB-6.406-a.webp b/data/images/UB/UB-6.406-a.webp new file mode 100644 index 0000000..8a1afc4 Binary files /dev/null and b/data/images/UB/UB-6.406-a.webp differ diff --git a/data/images/UB/UB-6.407-a.webp b/data/images/UB/UB-6.407-a.webp new file mode 100644 index 0000000..eb78ef8 Binary files /dev/null and b/data/images/UB/UB-6.407-a.webp differ diff --git a/data/images/UB/UB-6.407-b.webp b/data/images/UB/UB-6.407-b.webp new file mode 100644 index 0000000..91441c5 Binary files /dev/null and b/data/images/UB/UB-6.407-b.webp differ diff --git a/data/images/UB/UB-6.408-a.webp b/data/images/UB/UB-6.408-a.webp new file mode 100644 index 0000000..ce3de6e Binary files /dev/null and b/data/images/UB/UB-6.408-a.webp differ diff --git a/data/images/UB/UB-6.408-b.webp b/data/images/UB/UB-6.408-b.webp new file mode 100644 index 0000000..e9cd38b Binary files /dev/null and b/data/images/UB/UB-6.408-b.webp differ diff --git a/data/images/UB/UB-6.409-a.webp b/data/images/UB/UB-6.409-a.webp new file mode 100644 index 0000000..887f2b3 Binary files /dev/null and b/data/images/UB/UB-6.409-a.webp differ diff --git a/data/images/UB/UB-6.409-b.webp b/data/images/UB/UB-6.409-b.webp new file mode 100644 index 0000000..69327bb Binary files /dev/null and b/data/images/UB/UB-6.409-b.webp differ diff --git a/data/images/UB/UB-6.502-a.webp b/data/images/UB/UB-6.502-a.webp new file mode 100644 index 0000000..c236c6a Binary files /dev/null and b/data/images/UB/UB-6.502-a.webp differ diff --git a/data/images/UB/UB-6.504-a.webp b/data/images/UB/UB-6.504-a.webp new file mode 100644 index 0000000..1eb41c2 Binary files /dev/null and b/data/images/UB/UB-6.504-a.webp differ diff --git a/data/images/UB/UB-6.505-a.webp b/data/images/UB/UB-6.505-a.webp new file mode 100644 index 0000000..e7fabfd Binary files /dev/null and b/data/images/UB/UB-6.505-a.webp differ diff --git a/data/images/UB/UB-6.507-a.webp b/data/images/UB/UB-6.507-a.webp new file mode 100644 index 0000000..7d72fd8 Binary files /dev/null and b/data/images/UB/UB-6.507-a.webp differ diff --git a/data/images/UB/UB-6.507-b.webp b/data/images/UB/UB-6.507-b.webp new file mode 100644 index 0000000..486a1db Binary files /dev/null and b/data/images/UB/UB-6.507-b.webp differ diff --git a/data/images/UB/UB-6.508-a.webp b/data/images/UB/UB-6.508-a.webp new file mode 100644 index 0000000..32d753d Binary files /dev/null and b/data/images/UB/UB-6.508-a.webp differ diff --git a/data/images/UB/UB-6.508-b.webp b/data/images/UB/UB-6.508-b.webp new file mode 100644 index 0000000..120e4db Binary files /dev/null and b/data/images/UB/UB-6.508-b.webp differ diff --git a/data/images/UB/UB-6.508-c.webp b/data/images/UB/UB-6.508-c.webp new file mode 100644 index 0000000..a3be60b Binary files /dev/null and b/data/images/UB/UB-6.508-c.webp differ diff --git a/data/images/UB/UB-6.509-a.webp b/data/images/UB/UB-6.509-a.webp new file mode 100644 index 0000000..2730885 Binary files /dev/null and b/data/images/UB/UB-6.509-a.webp differ diff --git a/data/images/UB/UB-6.509-b.webp b/data/images/UB/UB-6.509-b.webp new file mode 100644 index 0000000..e6fb1ae Binary files /dev/null and b/data/images/UB/UB-6.509-b.webp differ diff --git a/data/images/UB/UB-6.605-a.webp b/data/images/UB/UB-6.605-a.webp new file mode 100644 index 0000000..b5ede3a Binary files /dev/null and b/data/images/UB/UB-6.605-a.webp differ diff --git a/data/images/UB/UB-6.606-a.webp b/data/images/UB/UB-6.606-a.webp new file mode 100644 index 0000000..d2aa1f7 Binary files /dev/null and b/data/images/UB/UB-6.606-a.webp differ diff --git a/data/images/UB/UB-6.608-a.webp b/data/images/UB/UB-6.608-a.webp new file mode 100644 index 0000000..da3f914 Binary files /dev/null and b/data/images/UB/UB-6.608-a.webp differ diff --git a/data/images/UB/UB-6.609-a.webp b/data/images/UB/UB-6.609-a.webp new file mode 100644 index 0000000..a850c5c Binary files /dev/null and b/data/images/UB/UB-6.609-a.webp differ diff --git a/data/images/UB/UB-6.609-b.webp b/data/images/UB/UB-6.609-b.webp new file mode 100644 index 0000000..f0c48fe Binary files /dev/null and b/data/images/UB/UB-6.609-b.webp differ diff --git a/data/images/UB/UB-6.706-a.webp b/data/images/UB/UB-6.706-a.webp new file mode 100644 index 0000000..0e26d62 Binary files /dev/null and b/data/images/UB/UB-6.706-a.webp differ diff --git a/data/images/UB/UB-6.707-a.webp b/data/images/UB/UB-6.707-a.webp new file mode 100644 index 0000000..be7d90d Binary files /dev/null and b/data/images/UB/UB-6.707-a.webp differ diff --git a/data/images/VT/VT-1.00-a.webp b/data/images/VT/VT-1.00-a.webp new file mode 100644 index 0000000..fd40805 Binary files /dev/null and b/data/images/VT/VT-1.00-a.webp differ diff --git a/data/images/VT/VT-1.01-a.webp b/data/images/VT/VT-1.01-a.webp new file mode 100644 index 0000000..e248705 Binary files /dev/null and b/data/images/VT/VT-1.01-a.webp differ diff --git a/data/images/VT/VT-1.02-a.webp b/data/images/VT/VT-1.02-a.webp new file mode 100644 index 0000000..000b0ea Binary files /dev/null and b/data/images/VT/VT-1.02-a.webp differ diff --git a/data/images/VT/VT-1.03-a.webp b/data/images/VT/VT-1.03-a.webp new file mode 100644 index 0000000..9051002 Binary files /dev/null and b/data/images/VT/VT-1.03-a.webp differ diff --git a/data/images/VT/VT-1.04-a.webp b/data/images/VT/VT-1.04-a.webp new file mode 100644 index 0000000..aa66c0b Binary files /dev/null and b/data/images/VT/VT-1.04-a.webp differ diff --git a/data/images/VT/VT-1.05-a.webp b/data/images/VT/VT-1.05-a.webp new file mode 100644 index 0000000..6fb84f0 Binary files /dev/null and b/data/images/VT/VT-1.05-a.webp differ diff --git a/data/images/VT/VT-1.10-a.webp b/data/images/VT/VT-1.10-a.webp new file mode 100644 index 0000000..5e4aae0 Binary files /dev/null and b/data/images/VT/VT-1.10-a.webp differ diff --git a/data/images/VT/VT-1.11-a.webp b/data/images/VT/VT-1.11-a.webp new file mode 100644 index 0000000..985d6fa Binary files /dev/null and b/data/images/VT/VT-1.11-a.webp differ diff --git a/data/images/VT/VT-1.12-a.webp b/data/images/VT/VT-1.12-a.webp new file mode 100644 index 0000000..588a4b4 Binary files /dev/null and b/data/images/VT/VT-1.12-a.webp differ diff --git a/data/images/VT/VT-1.20-a.webp b/data/images/VT/VT-1.20-a.webp new file mode 100644 index 0000000..d2e66f4 Binary files /dev/null and b/data/images/VT/VT-1.20-a.webp differ diff --git a/data/images/VT/VT-1.21-a.webp b/data/images/VT/VT-1.21-a.webp new file mode 100644 index 0000000..148ec15 Binary files /dev/null and b/data/images/VT/VT-1.21-a.webp differ diff --git a/data/images/VT/VT-1.22-a.webp b/data/images/VT/VT-1.22-a.webp new file mode 100644 index 0000000..79bc783 Binary files /dev/null and b/data/images/VT/VT-1.22-a.webp differ diff --git a/data/images/VT/VT-1.23-a.webp b/data/images/VT/VT-1.23-a.webp new file mode 100644 index 0000000..f410cc9 Binary files /dev/null and b/data/images/VT/VT-1.23-a.webp differ diff --git a/data/images/VT/VT-1.24-a.webp b/data/images/VT/VT-1.24-a.webp new file mode 100644 index 0000000..9babd20 Binary files /dev/null and b/data/images/VT/VT-1.24-a.webp differ diff --git a/data/images/VT/VT-1.30-a.webp b/data/images/VT/VT-1.30-a.webp new file mode 100644 index 0000000..0e7f574 Binary files /dev/null and b/data/images/VT/VT-1.30-a.webp differ diff --git a/data/images/VT/VT-1.31-a.webp b/data/images/VT/VT-1.31-a.webp new file mode 100644 index 0000000..280ba40 Binary files /dev/null and b/data/images/VT/VT-1.31-a.webp differ diff --git a/data/images/VT/VT-1.40-a.webp b/data/images/VT/VT-1.40-a.webp new file mode 100644 index 0000000..65ad9fb Binary files /dev/null and b/data/images/VT/VT-1.40-a.webp differ diff --git a/data/images/VT/VT-1.50-a.webp b/data/images/VT/VT-1.50-a.webp new file mode 100644 index 0000000..3af1640 Binary files /dev/null and b/data/images/VT/VT-1.50-a.webp differ diff --git a/data/images/VT/VT-1.51-a.webp b/data/images/VT/VT-1.51-a.webp new file mode 100644 index 0000000..df076c2 Binary files /dev/null and b/data/images/VT/VT-1.51-a.webp differ diff --git a/data/images/VT/VT-1.52-a.webp b/data/images/VT/VT-1.52-a.webp new file mode 100644 index 0000000..8ab7f33 Binary files /dev/null and b/data/images/VT/VT-1.52-a.webp differ diff --git a/data/images/VT/VT-1.53-a.webp b/data/images/VT/VT-1.53-a.webp new file mode 100644 index 0000000..1104304 Binary files /dev/null and b/data/images/VT/VT-1.53-a.webp differ diff --git a/data/images/VT/VT-1.60-a.webp b/data/images/VT/VT-1.60-a.webp new file mode 100644 index 0000000..574173b Binary files /dev/null and b/data/images/VT/VT-1.60-a.webp differ diff --git a/data/images/VT/VT-1.61-a.webp b/data/images/VT/VT-1.61-a.webp new file mode 100644 index 0000000..a9b183c Binary files /dev/null and b/data/images/VT/VT-1.61-a.webp differ diff --git a/data/images/VT/VT-1.62-a.webp b/data/images/VT/VT-1.62-a.webp new file mode 100644 index 0000000..b028ead Binary files /dev/null and b/data/images/VT/VT-1.62-a.webp differ diff --git a/data/images/VT/VT-2.10-a.webp b/data/images/VT/VT-2.10-a.webp new file mode 100644 index 0000000..5c2965f Binary files /dev/null and b/data/images/VT/VT-2.10-a.webp differ diff --git a/data/images/VT/VT-2.11-a.webp b/data/images/VT/VT-2.11-a.webp new file mode 100644 index 0000000..81f6954 Binary files /dev/null and b/data/images/VT/VT-2.11-a.webp differ diff --git a/data/images/VT/VT-2.11-b.webp b/data/images/VT/VT-2.11-b.webp new file mode 100644 index 0000000..c6f6684 Binary files /dev/null and b/data/images/VT/VT-2.11-b.webp differ diff --git a/data/images/VT/VT-2.12-a.webp b/data/images/VT/VT-2.12-a.webp new file mode 100644 index 0000000..3720fbb Binary files /dev/null and b/data/images/VT/VT-2.12-a.webp differ diff --git a/data/images/VT/VT-2.13-a.webp b/data/images/VT/VT-2.13-a.webp new file mode 100644 index 0000000..d7054c5 Binary files /dev/null and b/data/images/VT/VT-2.13-a.webp differ diff --git a/data/images/VT/VT-2.20-a.webp b/data/images/VT/VT-2.20-a.webp new file mode 100644 index 0000000..680c564 Binary files /dev/null and b/data/images/VT/VT-2.20-a.webp differ diff --git a/data/images/VT/VT-2.21-a.webp b/data/images/VT/VT-2.21-a.webp new file mode 100644 index 0000000..3ffc72f Binary files /dev/null and b/data/images/VT/VT-2.21-a.webp differ diff --git a/data/images/VT/VT-2.21-b.webp b/data/images/VT/VT-2.21-b.webp new file mode 100644 index 0000000..2fe55df Binary files /dev/null and b/data/images/VT/VT-2.21-b.webp differ diff --git a/data/images/VT/VT-2.22-a.webp b/data/images/VT/VT-2.22-a.webp new file mode 100644 index 0000000..a7bc8be Binary files /dev/null and b/data/images/VT/VT-2.22-a.webp differ diff --git a/data/images/VT/VT-2.30-a.webp b/data/images/VT/VT-2.30-a.webp new file mode 100644 index 0000000..9f935ef Binary files /dev/null and b/data/images/VT/VT-2.30-a.webp differ diff --git a/data/images/VT/VT-2.31-a.webp b/data/images/VT/VT-2.31-a.webp new file mode 100644 index 0000000..b1f3e4c Binary files /dev/null and b/data/images/VT/VT-2.31-a.webp differ diff --git a/data/images/VT/VT-2.32-a.webp b/data/images/VT/VT-2.32-a.webp new file mode 100644 index 0000000..b7ebcbd Binary files /dev/null and b/data/images/VT/VT-2.32-a.webp differ diff --git a/data/images/VT/VT-2.33-a.webp b/data/images/VT/VT-2.33-a.webp new file mode 100644 index 0000000..32267c3 Binary files /dev/null and b/data/images/VT/VT-2.33-a.webp differ diff --git a/data/images/VT/VT-2.34-a.webp b/data/images/VT/VT-2.34-a.webp new file mode 100644 index 0000000..9e1688c Binary files /dev/null and b/data/images/VT/VT-2.34-a.webp differ diff --git a/data/images/VT/VT-2.40-a.webp b/data/images/VT/VT-2.40-a.webp new file mode 100644 index 0000000..c26e825 Binary files /dev/null and b/data/images/VT/VT-2.40-a.webp differ diff --git a/data/images/VT/VT-2.41-a.webp b/data/images/VT/VT-2.41-a.webp new file mode 100644 index 0000000..650f4d0 Binary files /dev/null and b/data/images/VT/VT-2.41-a.webp differ diff --git a/data/images/VT/VT-2.50-a.webp b/data/images/VT/VT-2.50-a.webp new file mode 100644 index 0000000..9d1a867 Binary files /dev/null and b/data/images/VT/VT-2.50-a.webp differ diff --git a/data/images/VT/VT-3.10-a.webp b/data/images/VT/VT-3.10-a.webp new file mode 100644 index 0000000..dd5cb43 Binary files /dev/null and b/data/images/VT/VT-3.10-a.webp differ diff --git a/data/images/VT/VT-3.11-a.webp b/data/images/VT/VT-3.11-a.webp new file mode 100644 index 0000000..25d167f Binary files /dev/null and b/data/images/VT/VT-3.11-a.webp differ diff --git a/data/images/VT/VT-3.12-a.webp b/data/images/VT/VT-3.12-a.webp new file mode 100644 index 0000000..cd70486 Binary files /dev/null and b/data/images/VT/VT-3.12-a.webp differ diff --git a/data/images/VT/VT-3.13-a.webp b/data/images/VT/VT-3.13-a.webp new file mode 100644 index 0000000..b10d0bd Binary files /dev/null and b/data/images/VT/VT-3.13-a.webp differ diff --git a/data/images/VT/VT-3.14-a.webp b/data/images/VT/VT-3.14-a.webp new file mode 100644 index 0000000..545a5b9 Binary files /dev/null and b/data/images/VT/VT-3.14-a.webp differ diff --git a/data/images/VT/VT-3.20-a.webp b/data/images/VT/VT-3.20-a.webp new file mode 100644 index 0000000..2a6425d Binary files /dev/null and b/data/images/VT/VT-3.20-a.webp differ diff --git a/data/images/VT/VT-3.30-a.webp b/data/images/VT/VT-3.30-a.webp new file mode 100644 index 0000000..171ca13 Binary files /dev/null and b/data/images/VT/VT-3.30-a.webp differ diff --git a/data/images/VT/VT-3.31-a.webp b/data/images/VT/VT-3.31-a.webp new file mode 100644 index 0000000..65e677b Binary files /dev/null and b/data/images/VT/VT-3.31-a.webp differ diff --git a/data/images/VT/VT-3.32-a.webp b/data/images/VT/VT-3.32-a.webp new file mode 100644 index 0000000..e3a934c Binary files /dev/null and b/data/images/VT/VT-3.32-a.webp differ diff --git a/data/images/VT/VT-3.33-a.webp b/data/images/VT/VT-3.33-a.webp new file mode 100644 index 0000000..25fb6bb Binary files /dev/null and b/data/images/VT/VT-3.33-a.webp differ diff --git a/data/images/VT/VT-3.34-a.webp b/data/images/VT/VT-3.34-a.webp new file mode 100644 index 0000000..70da8f1 Binary files /dev/null and b/data/images/VT/VT-3.34-a.webp differ diff --git a/data/images/VT/VT-3.35-a.webp b/data/images/VT/VT-3.35-a.webp new file mode 100644 index 0000000..6d6eeb5 Binary files /dev/null and b/data/images/VT/VT-3.35-a.webp differ diff --git a/data/images/VT/VT-4.10-a.webp b/data/images/VT/VT-4.10-a.webp new file mode 100644 index 0000000..fcd24c2 Binary files /dev/null and b/data/images/VT/VT-4.10-a.webp differ diff --git a/data/images/VT/VT-4.11-a.webp b/data/images/VT/VT-4.11-a.webp new file mode 100644 index 0000000..430a1db Binary files /dev/null and b/data/images/VT/VT-4.11-a.webp differ diff --git a/data/images/VT/VT-4.12-a.webp b/data/images/VT/VT-4.12-a.webp new file mode 100644 index 0000000..8741927 Binary files /dev/null and b/data/images/VT/VT-4.12-a.webp differ diff --git a/data/images/VT/VT-4.13-a.webp b/data/images/VT/VT-4.13-a.webp new file mode 100644 index 0000000..8dd1041 Binary files /dev/null and b/data/images/VT/VT-4.13-a.webp differ diff --git a/data/images/VT/VT-4.14-a.webp b/data/images/VT/VT-4.14-a.webp new file mode 100644 index 0000000..83b9bcd Binary files /dev/null and b/data/images/VT/VT-4.14-a.webp differ diff --git a/data/images/VT/VT-4.20-a.webp b/data/images/VT/VT-4.20-a.webp new file mode 100644 index 0000000..32f79d2 Binary files /dev/null and b/data/images/VT/VT-4.20-a.webp differ diff --git a/data/images/VT/VT-4.30-a.webp b/data/images/VT/VT-4.30-a.webp new file mode 100644 index 0000000..7745f5f Binary files /dev/null and b/data/images/VT/VT-4.30-a.webp differ diff --git a/data/images/VT/VT-4.31-a.webp b/data/images/VT/VT-4.31-a.webp new file mode 100644 index 0000000..0b12c07 Binary files /dev/null and b/data/images/VT/VT-4.31-a.webp differ diff --git a/data/images/VT/VT-4.32-a.webp b/data/images/VT/VT-4.32-a.webp new file mode 100644 index 0000000..97fb518 Binary files /dev/null and b/data/images/VT/VT-4.32-a.webp differ diff --git a/data/images/VT/VT-4.33-a.webp b/data/images/VT/VT-4.33-a.webp new file mode 100644 index 0000000..955fccd Binary files /dev/null and b/data/images/VT/VT-4.33-a.webp differ diff --git a/data/images/VT/VT-4.34-a.webp b/data/images/VT/VT-4.34-a.webp new file mode 100644 index 0000000..15ca4f2 Binary files /dev/null and b/data/images/VT/VT-4.34-a.webp differ diff --git a/data/images/VT/VT-4.35-a.webp b/data/images/VT/VT-4.35-a.webp new file mode 100644 index 0000000..e2d9716 Binary files /dev/null and b/data/images/VT/VT-4.35-a.webp differ diff --git a/data/images/VT/VT-4.40-a.webp b/data/images/VT/VT-4.40-a.webp new file mode 100644 index 0000000..e2189da Binary files /dev/null and b/data/images/VT/VT-4.40-a.webp differ diff --git a/data/images/VT/VT-4.41-a.webp b/data/images/VT/VT-4.41-a.webp new file mode 100644 index 0000000..7a154ee Binary files /dev/null and b/data/images/VT/VT-4.41-a.webp differ diff --git a/data/images/VT/VT-4.42-a.webp b/data/images/VT/VT-4.42-a.webp new file mode 100644 index 0000000..5056f82 Binary files /dev/null and b/data/images/VT/VT-4.42-a.webp differ diff --git a/data/images/VT/VT-4.50-a.webp b/data/images/VT/VT-4.50-a.webp new file mode 100644 index 0000000..47de777 Binary files /dev/null and b/data/images/VT/VT-4.50-a.webp differ diff --git a/data/images/VT/VT-4.51-a.webp b/data/images/VT/VT-4.51-a.webp new file mode 100644 index 0000000..cdaa50f Binary files /dev/null and b/data/images/VT/VT-4.51-a.webp differ diff --git a/data/images/VT/VT-4.52-a.webp b/data/images/VT/VT-4.52-a.webp new file mode 100644 index 0000000..34889b8 Binary files /dev/null and b/data/images/VT/VT-4.52-a.webp differ diff --git a/data/images/VT/VT-4.53-a.webp b/data/images/VT/VT-4.53-a.webp new file mode 100644 index 0000000..1e08ff4 Binary files /dev/null and b/data/images/VT/VT-4.53-a.webp differ diff --git a/data/images/VT/VT-4.62-a.webp b/data/images/VT/VT-4.62-a.webp new file mode 100644 index 0000000..19d9b17 Binary files /dev/null and b/data/images/VT/VT-4.62-a.webp differ diff --git a/data/images/VT/VT-5.10-a.webp b/data/images/VT/VT-5.10-a.webp new file mode 100644 index 0000000..c05bab3 Binary files /dev/null and b/data/images/VT/VT-5.10-a.webp differ diff --git a/data/images/VT/VT-5.11-a.webp b/data/images/VT/VT-5.11-a.webp new file mode 100644 index 0000000..56d2fed Binary files /dev/null and b/data/images/VT/VT-5.11-a.webp differ diff --git a/data/images/VT/VT-5.11-b.webp b/data/images/VT/VT-5.11-b.webp new file mode 100644 index 0000000..b073201 Binary files /dev/null and b/data/images/VT/VT-5.11-b.webp differ diff --git a/data/images/VT/VT-5.12-a.webp b/data/images/VT/VT-5.12-a.webp new file mode 100644 index 0000000..7707d7f Binary files /dev/null and b/data/images/VT/VT-5.12-a.webp differ diff --git a/data/images/VT/VT-5.13-a.webp b/data/images/VT/VT-5.13-a.webp new file mode 100644 index 0000000..bd8de15 Binary files /dev/null and b/data/images/VT/VT-5.13-a.webp differ diff --git a/data/images/VT/VT-5.20-a.webp b/data/images/VT/VT-5.20-a.webp new file mode 100644 index 0000000..f9a18d9 Binary files /dev/null and b/data/images/VT/VT-5.20-a.webp differ diff --git a/data/images/VT/VT-5.21-a.webp b/data/images/VT/VT-5.21-a.webp new file mode 100644 index 0000000..0d096db Binary files /dev/null and b/data/images/VT/VT-5.21-a.webp differ diff --git a/data/images/VT/VT-5.21-b.webp b/data/images/VT/VT-5.21-b.webp new file mode 100644 index 0000000..5e270f4 Binary files /dev/null and b/data/images/VT/VT-5.21-b.webp differ diff --git a/data/images/VT/VT-5.22-a.webp b/data/images/VT/VT-5.22-a.webp new file mode 100644 index 0000000..1259573 Binary files /dev/null and b/data/images/VT/VT-5.22-a.webp differ diff --git a/data/images/VT/VT-5.30-a.webp b/data/images/VT/VT-5.30-a.webp new file mode 100644 index 0000000..a51ba38 Binary files /dev/null and b/data/images/VT/VT-5.30-a.webp differ diff --git a/data/images/VT/VT-5.31-a.webp b/data/images/VT/VT-5.31-a.webp new file mode 100644 index 0000000..02c1dff Binary files /dev/null and b/data/images/VT/VT-5.31-a.webp differ diff --git a/data/images/VT/VT-5.32-a.webp b/data/images/VT/VT-5.32-a.webp new file mode 100644 index 0000000..0f3a9cd Binary files /dev/null and b/data/images/VT/VT-5.32-a.webp differ diff --git a/data/images/VT/VT-5.33-a.webp b/data/images/VT/VT-5.33-a.webp new file mode 100644 index 0000000..29d93e5 Binary files /dev/null and b/data/images/VT/VT-5.33-a.webp differ diff --git a/data/images/VT/VT-5.34-a.webp b/data/images/VT/VT-5.34-a.webp new file mode 100644 index 0000000..3721c8a Binary files /dev/null and b/data/images/VT/VT-5.34-a.webp differ diff --git a/data/variantGroups.json b/data/variantGroups.json new file mode 100644 index 0000000..69de57b --- /dev/null +++ b/data/variantGroups.json @@ -0,0 +1,834 @@ +[ + { + "id": "UB-1.101", + "variantIds": ["UB-1.101-a", "UB-1.101-b"] + }, + { + "id": "UB-1.102", + "variantIds": ["UB-1.102-a", "UB-1.102-b"] + }, + { + "id": "UB-1.103", + "variantIds": ["UB-1.103-a", "UB-1.103-b"] + }, + { + "id": "UB-1.203", + "variantIds": ["UB-1.203-a", "UB-1.203-b"] + }, + { + "id": "UB-1.204", + "variantIds": ["UB-1.204-a", "UB-1.204-b"] + }, + { + "id": "UB-1.206", + "variantIds": ["UB-1.206-a", "UB-1.206-b"] + }, + { + "id": "UB-1.210", + "variantIds": ["UB-1.210-a", "UB-1.210-b"] + }, + { + "id": "UB-1.307", + "variantIds": ["UB-1.307-a", "UB-1.307-b"] + }, + { + "id": "UB-1.310", + "variantIds": ["UB-1.310-a", "UB-1.310-b"] + }, + { + "id": "UB-1.406", + "variantIds": ["UB-1.406-a", "UB-1.406-b"] + }, + { + "id": "UB-1.409", + "variantIds": ["UB-1.409-a", "UB-1.409-b"] + }, + { + "id": "UB-1.411", + "variantIds": ["UB-1.411-a", "UB-1.411-b"] + }, + { + "id": "UB-2.101", + "variantIds": ["UB-2.101-a", "UB-2.101-b"] + }, + { + "id": "UB-2.105", + "variantIds": ["UB-2.105-a", "UB-2.105-b"] + }, + { + "id": "UB-2.201", + "variantIds": ["UB-2.201-a", "UB-2.201-b", "UB-2.201-c"] + }, + { + "id": "UB-2.202", + "variantIds": ["UB-2.202-a", "UB-2.202-b"] + }, + { + "id": "UB-2.302", + "variantIds": ["UB-2.302-a", "UB-2.302-b"] + }, + { + "id": "UB-2.305", + "variantIds": ["UB-2.305-a", "UB-2.305-b", "UB-2.305-c"] + }, + { + "id": "UB-2.404", + "variantIds": ["UB-2.404-a", "UB-2.404-b"] + }, + { + "id": "UB-2.504", + "variantIds": ["UB-2.504-a", "UB-2.504-b"] + }, + { + "id": "UB-2.506", + "variantIds": ["UB-2.506-a", "UB-2.506-b", "UB-2.506-c"] + }, + { + "id": "UB-2.606", + "variantIds": ["UB-2.606-a", "UB-2.606-b"] + }, + { + "id": "UB-3.201", + "variantIds": ["UB-3.201-a", "UB-3.201-b"] + }, + { + "id": "UB-3.206", + "variantIds": ["UB-3.206-a", "UB-3.206-b", "UB-3.206-c"] + }, + { + "id": "UB-3.309", + "variantIds": ["UB-3.309-a", "UB-3.309-b"] + }, + { + "id": "UB-3.310", + "variantIds": ["UB-3.310-a", "UB-3.310-b"] + }, + { + "id": "UB-3.401", + "variantIds": ["UB-3.401-a", "UB-3.401-b", "UB-3.401-c"] + }, + { + "id": "UB-3.403", + "variantIds": ["UB-3.403-a", "UB-3.403-b", "UB-3.403-c"] + }, + { + "id": "UB-3.405", + "variantIds": ["UB-3.405-a", "UB-3.405-b", "UB-3.405-c"] + }, + { + "id": "UB-3.408", + "variantIds": ["UB-3.408-a", "UB-3.408-b", "UB-3.408-c"] + }, + { + "id": "UB-3.503", + "variantIds": ["UB-3.503-a", "UB-3.503-b"] + }, + { + "id": "UB-3.506", + "variantIds": ["UB-3.506-a", "UB-3.506-b"] + }, + { + "id": "UB-3.510", + "variantIds": ["UB-3.510-a", "UB-3.510-b"] + }, + { + "id": "UB-3.708", + "variantIds": ["UB-3.708-a", "UB-3.708-b"] + }, + { + "id": "UB-4.304", + "variantIds": ["UB-4.304-a", "UB-4.304-b", "UB-4.304-c"] + }, + { + "id": "UB-4.308", + "variantIds": ["UB-4.308-a", "UB-4.308-b"] + }, + { + "id": "UB-4.401", + "variantIds": ["UB-4.401-a", "UB-4.401-b"] + }, + { + "id": "UB-4.403", + "variantIds": ["UB-4.403-a", "UB-4.403-b"] + }, + { + "id": "UB-4.406", + "variantIds": ["UB-4.406-a", "UB-4.406-b"] + }, + { + "id": "UB-4.407", + "variantIds": ["UB-4.407-a", "UB-4.407-b"] + }, + { + "id": "UB-4.502", + "variantIds": ["UB-4.502-a", "UB-4.502-b"] + }, + { + "id": "UB-4.503", + "variantIds": ["UB-4.503-a", "UB-4.503-b"] + }, + { + "id": "UB-4.508", + "variantIds": ["UB-4.508-a", "UB-4.508-b", "UB-4.508-c"] + }, + { + "id": "UB-5.301", + "variantIds": ["UB-5.301-a", "UB-5.301-b", "UB-5.301-c"] + }, + { + "id": "UB-5.304", + "variantIds": ["UB-5.304-a", "UB-5.304-b"] + }, + { + "id": "UB-5.305", + "variantIds": ["UB-5.305-a", "UB-5.305-b"] + }, + { + "id": "UB-5.306", + "variantIds": ["UB-5.306-a", "UB-5.306-b"] + }, + { + "id": "UB-5.308", + "variantIds": ["UB-5.308-a", "UB-5.308-b", "UB-5.308-c"] + }, + { + "id": "UB-5.402", + "variantIds": ["UB-5.402-a", "UB-5.402-b"] + }, + { + "id": "UB-5.404", + "variantIds": ["UB-5.404-a", "UB-5.404-b"] + }, + { + "id": "UB-5.408", + "variantIds": ["UB-5.408-a", "UB-5.408-b"] + }, + { + "id": "UB-5.410", + "variantIds": ["UB-5.410-a", "UB-5.410-b"] + }, + { + "id": "UB-5.501", + "variantIds": ["UB-5.501-a", "UB-5.501-b"] + }, + { + "id": "UB-5.502", + "variantIds": ["UB-5.502-a", "UB-5.502-b"] + }, + { + "id": "UB-5.509", + "variantIds": ["UB-5.509-a", "UB-5.509-b"] + }, + { + "id": "UB-5.510", + "variantIds": ["UB-5.510-a", "UB-5.510-b"] + }, + { + "id": "UB-5.610", + "variantIds": ["UB-5.610-a", "UB-5.610-b"] + }, + { + "id": "UB-6.101", + "variantIds": ["UB-6.101-a", "UB-6.101-b"] + }, + { + "id": "UB-6.102", + "variantIds": ["UB-6.102-a", "UB-6.102-b"] + }, + { + "id": "UB-6.104", + "variantIds": ["UB-6.104-a", "UB-6.104-b", "UB-6.104-c"] + }, + { + "id": "UB-6.108", + "variantIds": ["UB-6.108-a", "UB-6.108-b", "UB-6.108-c", "UB-6.108-d"] + }, + { + "id": "UB-6.201", + "variantIds": ["UB-6.201-a", "UB-6.201-b"] + }, + { + "id": "UB-6.204", + "variantIds": ["UB-6.204-a", "UB-6.204-b", "UB-6.204-c", "UB-6.204-d"] + }, + { + "id": "UB-6.208", + "variantIds": ["UB-6.208-a", "UB-6.208-b", "UB-6.208-c", "UB-6.208-d"] + }, + { + "id": "UB-6.209", + "variantIds": ["UB-6.209-a", "UB-6.209-b"] + }, + { + "id": "UB-6.301", + "variantIds": ["UB-6.301-a", "UB-6.301-b"] + }, + { + "id": "UB-6.302", + "variantIds": ["UB-6.302-a", "UB-6.302-b"] + }, + { + "id": "UB-6.303", + "variantIds": ["UB-6.303-a", "UB-6.303-b", "UB-6.303-c", "UB-6.303-d"] + }, + { + "id": "UB-6.304", + "variantIds": ["UB-6.304-a", "UB-6.304-b"] + }, + { + "id": "UB-6.308", + "variantIds": ["UB-6.308-a", "UB-6.308-b", "UB-6.308-c"] + }, + { + "id": "UB-6.309", + "variantIds": ["UB-6.309-a", "UB-6.309-b"] + }, + { + "id": "UB-6.310", + "variantIds": ["UB-6.310-a", "UB-6.310-b", "UB-6.310-c"] + }, + { + "id": "UB-6.401", + "variantIds": ["UB-6.401-a", "UB-6.401-b"] + }, + { + "id": "UB-6.402", + "variantIds": ["UB-6.402-a", "UB-6.402-b", "UB-6.402-c"] + }, + { + "id": "UB-6.403", + "variantIds": ["UB-6.403-a", "UB-6.403-b", "UB-6.403-c"] + }, + { + "id": "UB-6.405", + "variantIds": ["UB-6.405-a", "UB-6.405-b"] + }, + { + "id": "UB-6.407", + "variantIds": ["UB-6.407-a", "UB-6.407-b"] + }, + { + "id": "UB-6.408", + "variantIds": ["UB-6.408-a", "UB-6.408-b"] + }, + { + "id": "UB-6.409", + "variantIds": ["UB-6.409-a", "UB-6.409-b"] + }, + { + "id": "UB-6.507", + "variantIds": ["UB-6.507-a", "UB-6.507-b"] + }, + { + "id": "UB-6.508", + "variantIds": ["UB-6.508-a", "UB-6.508-b", "UB-6.508-c"] + }, + { + "id": "UB-6.509", + "variantIds": ["UB-6.509-a", "UB-6.509-b"] + }, + { + "id": "UB-6.609", + "variantIds": ["UB-6.609-a", "UB-6.609-b"] + }, + { + "id": "BB-1.103", + "variantIds": ["BB-1.103-a", "BB-1.103-b", "BB-1.103-c"] + }, + { + "id": "BB-1.105", + "variantIds": ["BB-1.105-a", "BB-1.105-b", "BB-1.105-c"] + }, + { + "id": "BB-1.106", + "variantIds": ["BB-1.106-a", "BB-1.106-b"] + }, + { + "id": "BB-1.108", + "variantIds": ["BB-1.108-a", "BB-1.108-b"] + }, + { + "id": "BB-1.111", + "variantIds": ["BB-1.111-a", "BB-1.111-b"] + }, + { + "id": "BB-1.114", + "variantIds": ["BB-1.114-a", "BB-1.114-b"] + }, + { + "id": "BB-1.204", + "variantIds": ["BB-1.204-a", "BB-1.204-b"] + }, + { + "id": "BB-1.207", + "variantIds": ["BB-1.207-a", "BB-1.207-b"] + }, + { + "id": "BB-1.210", + "variantIds": ["BB-1.210-a", "BB-1.210-b", "BB-1.210-c"] + }, + { + "id": "BB-1.214", + "variantIds": ["BB-1.214-a", "BB-1.214-b"] + }, + { + "id": "BB-1.215", + "variantIds": ["BB-1.215-a", "BB-1.215-b", "BB-1.215-c"] + }, + { + "id": "BB-1.303", + "variantIds": ["BB-1.303-a", "BB-1.303-b"] + }, + { + "id": "BB-1.305", + "variantIds": ["BB-1.305-a", "BB-1.305-b"] + }, + { + "id": "BB-1.308", + "variantIds": ["BB-1.308-a", "BB-1.308-b"] + }, + { + "id": "BB-1.309", + "variantIds": ["BB-1.309-a", "BB-1.309-b", "BB-1.309-c", "BB-1.309-d"] + }, + { + "id": "BB-1.310", + "variantIds": ["BB-1.310-a", "BB-1.310-b", "BB-1.310-c"] + }, + { + "id": "BB-1.311", + "variantIds": ["BB-1.311-a", "BB-1.311-b", "BB-1.311-c", "BB-1.311-d"] + }, + { + "id": "BB-1.312", + "variantIds": ["BB-1.312-a", "BB-1.312-b"] + }, + { + "id": "BB-1.313", + "variantIds": ["BB-1.313-a", "BB-1.313-b", "BB-1.313-c"] + }, + { + "id": "BB-1.314", + "variantIds": ["BB-1.314-a", "BB-1.314-b", "BB-1.314-c"] + }, + { + "id": "BB-1.315", + "variantIds": ["BB-1.315-a", "BB-1.315-b"] + }, + { + "id": "BB-1.403", + "variantIds": ["BB-1.403-a", "BB-1.403-b"] + }, + { + "id": "BB-1.411", + "variantIds": ["BB-1.411-a", "BB-1.411-b", "BB-1.411-c"] + }, + { + "id": "BB-1.412", + "variantIds": ["BB-1.412-a", "BB-1.412-b"] + }, + { + "id": "BB-1.417", + "variantIds": ["BB-1.417-a", "BB-1.417-b"] + }, + { + "id": "BB-1.518", + "variantIds": ["BB-1.518-a", "BB-1.518-b", "BB-1.518-c"] + }, + { + "id": "BB-1.618", + "variantIds": ["BB-1.618-a", "BB-1.618-b"] + }, + { + "id": "BB-2.101", + "variantIds": ["BB-2.101-a", "BB-2.101-b"] + }, + { + "id": "BB-2.108", + "variantIds": ["BB-2.108-a", "BB-2.108-b"] + }, + { + "id": "BB-2.110", + "variantIds": ["BB-2.110-a", "BB-2.110-b"] + }, + { + "id": "BB-2.112", + "variantIds": ["BB-2.112-a", "BB-2.112-b"] + }, + { + "id": "BB-2.203", + "variantIds": ["BB-2.203-a", "BB-2.203-b"] + }, + { + "id": "BB-2.208", + "variantIds": ["BB-2.208-a", "BB-2.208-b"] + }, + { + "id": "BB-2.209", + "variantIds": ["BB-2.209-a", "BB-2.209-b"] + }, + { + "id": "BB-2.306", + "variantIds": ["BB-2.306-a", "BB-2.306-b"] + }, + { + "id": "BB-2.408", + "variantIds": ["BB-2.408-a", "BB-2.408-b", "BB-2.408-c"] + }, + { + "id": "BB-3.208", + "variantIds": ["BB-3.208-a", "BB-3.208-b"] + }, + { + "id": "BB-3.407", + "variantIds": ["BB-3.407-a", "BB-3.407-b"] + }, + { + "id": "BB-4.102", + "variantIds": ["BB-4.102-a", "BB-4.102-b"] + }, + { + "id": "BB-4.103", + "variantIds": ["BB-4.103-a", "BB-4.103-b"] + }, + { + "id": "BB-4.107", + "variantIds": ["BB-4.107-a", "BB-4.107-b", "BB-4.107-c"] + }, + { + "id": "BB-4.108", + "variantIds": ["BB-4.108-a", "BB-4.108-b", "BB-4.108-c"] + }, + { + "id": "BB-4.109", + "variantIds": ["BB-4.109-a", "BB-4.109-b", "BB-4.109-c"] + }, + { + "id": "BB-4.204", + "variantIds": ["BB-4.204-a", "BB-4.204-b"] + }, + { + "id": "BB-4.206", + "variantIds": ["BB-4.206-a", "BB-4.206-b"] + }, + { + "id": "BB-4.210", + "variantIds": ["BB-4.210-a", "BB-4.210-b"] + }, + { + "id": "BB-4.308", + "variantIds": ["BB-4.308-a", "BB-4.308-b"] + }, + { + "id": "BB-4.309", + "variantIds": ["BB-4.309-a", "BB-4.309-b", "BB-4.309-c"] + }, + { + "id": "BB-5.201", + "variantIds": ["BB-5.201-a", "BB-5.201-b"] + }, + { + "id": "BB-5.204", + "variantIds": ["BB-5.204-a", "BB-5.204-b"] + }, + { + "id": "BB-5.206", + "variantIds": ["BB-5.206-a", "BB-5.206-b"] + }, + { + "id": "BB-5.207", + "variantIds": ["BB-5.207-a", "BB-5.207-b"] + }, + { + "id": "BB-5.307", + "variantIds": ["BB-5.307-a", "BB-5.307-b"] + }, + { + "id": "BB-5.312", + "variantIds": ["BB-5.312-a", "BB-5.312-b", "BB-5.312-c"] + }, + { + "id": "BB-5.313", + "variantIds": ["BB-5.313-a", "BB-5.313-b", "BB-5.313-c"] + }, + { + "id": "BB-5.401", + "variantIds": ["BB-5.401-a", "BB-5.401-b"] + }, + { + "id": "BB-5.405", + "variantIds": ["BB-5.405-a", "BB-5.405-b", "BB-5.405-c"] + }, + { + "id": "BB-5.408", + "variantIds": ["BB-5.408-a", "BB-5.408-b"] + }, + { + "id": "BB-5.409", + "variantIds": ["BB-5.409-a", "BB-5.409-b"] + }, + { + "id": "BB-5.508", + "variantIds": ["BB-5.508-a", "BB-5.508-b", "BB-5.508-c"] + }, + { + "id": "BB-5.613", + "variantIds": ["BB-5.613-a", "BB-5.613-b"] + }, + { + "id": "BB-6.102", + "variantIds": ["BB-6.102-a", "BB-6.102-b"] + }, + { + "id": "BB-6.104", + "variantIds": ["BB-6.104-a", "BB-6.104-b"] + }, + { + "id": "BB-6.106", + "variantIds": ["BB-6.106-a", "BB-6.106-b"] + }, + { + "id": "BB-6.201", + "variantIds": ["BB-6.201-a", "BB-6.201-b"] + }, + { + "id": "BB-6.202", + "variantIds": ["BB-6.202-a", "BB-6.202-b"] + }, + { + "id": "BB-6.204", + "variantIds": ["BB-6.204-a", "BB-6.204-b"] + }, + { + "id": "BB-6.206", + "variantIds": ["BB-6.206-a", "BB-6.206-b"] + }, + { + "id": "BB-6.207", + "variantIds": ["BB-6.207-a", "BB-6.207-b"] + }, + { + "id": "BB-6.302", + "variantIds": ["BB-6.302-a", "BB-6.302-b"] + }, + { + "id": "BB-6.304", + "variantIds": ["BB-6.304-a", "BB-6.304-b"] + }, + { + "id": "BB-6.306", + "variantIds": ["BB-6.306-a", "BB-6.306-b"] + }, + { + "id": "BB-6.307", + "variantIds": ["BB-6.307-a", "BB-6.307-b"] + }, + { + "id": "BB-6.407", + "variantIds": ["BB-6.407-a", "BB-6.407-b"] + }, + { + "id": "BB-6.705", + "variantIds": ["BB-6.705-a", "BB-6.705-b"] + }, + { + "id": "FX-1.104", + "variantIds": ["FX-1.104-a", "FX-1.104-b"] + }, + { + "id": "FX-1.107", + "variantIds": ["FX-1.107-a", "FX-1.107-b"] + }, + { + "id": "FX-1.108", + "variantIds": ["FX-1.108-a", "FX-1.108-b", "FX-1.108-c"] + }, + { + "id": "FX-1.109", + "variantIds": ["FX-1.109-a", "FX-1.109-b", "FX-1.109-c", "FX-1.109-d"] + }, + { + "id": "FX-1.111", + "variantIds": ["FX-1.111-a", "FX-1.111-b"] + }, + { + "id": "FX-1.112", + "variantIds": ["FX-1.112-a", "FX-1.112-b"] + }, + { + "id": "FX-1.202", + "variantIds": ["FX-1.202-a", "FX-1.202-b"] + }, + { + "id": "FX-1.203", + "variantIds": ["FX-1.203-a", "FX-1.203-b", "FX-1.203-c"] + }, + { + "id": "FX-1.204", + "variantIds": ["FX-1.204-a", "FX-1.204-b"] + }, + { + "id": "FX-1.207", + "variantIds": ["FX-1.207-a", "FX-1.207-b", "FX-1.207-c"] + }, + { + "id": "FX-1.208", + "variantIds": ["FX-1.208-a", "FX-1.208-b"] + }, + { + "id": "FX-1.209", + "variantIds": ["FX-1.209-a", "FX-1.209-b", "FX-1.209-c", "FX-1.209-d"] + }, + { + "id": "FX-1.214", + "variantIds": ["FX-1.214-a", "FX-1.214-b"] + }, + { + "id": "FX-1.302", + "variantIds": ["FX-1.302-a", "FX-1.302-b", "FX-1.302-c"] + }, + { + "id": "FX-1.304", + "variantIds": ["FX-1.304-a", "FX-1.304-b"] + }, + { + "id": "FX-1.306", + "variantIds": ["FX-1.306-a", "FX-1.306-b"] + }, + { + "id": "FX-1.307", + "variantIds": ["FX-1.307-a", "FX-1.307-b", "FX-1.307-c"] + }, + { + "id": "FX-1.309", + "variantIds": ["FX-1.309-a", "FX-1.309-b"] + }, + { + "id": "FX-1.313", + "variantIds": ["FX-1.313-a", "FX-1.313-b"] + }, + { + "id": "FX-1.404", + "variantIds": ["FX-1.404-a", "FX-1.404-b"] + }, + { + "id": "FX-1.407", + "variantIds": ["FX-1.407-a", "FX-1.407-b", "FX-1.407-c"] + }, + { + "id": "FX-1.409", + "variantIds": ["FX-1.409-a", "FX-1.409-b"] + }, + { + "id": "FX-2.208", + "variantIds": ["FX-2.208-a", "FX-2.208-b"] + }, + { + "id": "FX-2.404", + "variantIds": ["FX-2.404-a", "FX-2.404-b"] + }, + { + "id": "FX-3.101", + "variantIds": ["FX-3.101-a", "FX-3.101-b", "FX-3.101-c"] + }, + { + "id": "FX-3.103", + "variantIds": ["FX-3.103-a", "FX-3.103-b"] + }, + { + "id": "FX-3.104", + "variantIds": ["FX-3.104-a", "FX-3.104-b"] + }, + { + "id": "FX-3.105", + "variantIds": ["FX-3.105-a", "FX-3.105-b", "FX-3.105-c"] + }, + { + "id": "FX-3.107", + "variantIds": ["FX-3.107-a", "FX-3.107-b", "FX-3.107-c", "FX-3.107-d"] + }, + { + "id": "FX-3.201", + "variantIds": ["FX-3.201-a", "FX-3.201-b", "FX-3.201-c"] + }, + { + "id": "FX-3.203", + "variantIds": ["FX-3.203-a", "FX-3.203-b"] + }, + { + "id": "FX-3.305", + "variantIds": ["FX-3.305-a", "FX-3.305-b"] + }, + { + "id": "FX-4.101", + "variantIds": ["FX-4.101-a", "FX-4.101-b"] + }, + { + "id": "FX-4.104", + "variantIds": ["FX-4.104-a", "FX-4.104-b"] + }, + { + "id": "FX-4.105", + "variantIds": ["FX-4.105-a", "FX-4.105-b"] + }, + { + "id": "FX-4.201", + "variantIds": ["FX-4.201-a", "FX-4.201-b", "FX-4.201-c"] + }, + { + "id": "FX-4.202", + "variantIds": ["FX-4.202-a", "FX-4.202-b", "FX-4.202-c"] + }, + { + "id": "FX-4.205", + "variantIds": ["FX-4.205-a", "FX-4.205-b"] + }, + { + "id": "FX-4.302", + "variantIds": ["FX-4.302-a", "FX-4.302-b"] + }, + { + "id": "FX-4.601", + "variantIds": ["FX-4.601-a", "FX-4.601-b"] + }, + { + "id": "FX-5.101", + "variantIds": ["FX-5.101-a", "FX-5.101-b", "FX-5.101-c"] + }, + { + "id": "FX-5.201", + "variantIds": ["FX-5.201-a", "FX-5.201-b"] + }, + { + "id": "FX-5.301", + "variantIds": ["FX-5.301-a", "FX-5.301-b"] + }, + { + "id": "FX-5.402", + "variantIds": ["FX-5.402-a", "FX-5.402-b"] + }, + { + "id": "FX-5.502", + "variantIds": ["FX-5.502-a", "FX-5.502-b"] + }, + { + "id": "FX-5.802", + "variantIds": ["FX-5.802-a", "FX-5.802-b"] + }, + { + "id": "VT-2.11", + "variantIds": ["VT-2.11-a", "VT-2.11-b"] + }, + { + "id": "VT-2.21", + "variantIds": ["VT-2.21-a", "VT-2.21-b"] + }, + { + "id": "VT-5.11", + "variantIds": ["VT-5.11-a", "VT-5.11-b"] + }, + { + "id": "VT-5.21", + "variantIds": ["VT-5.21-a", "VT-5.21-b"] + } +] diff --git a/data/vaults.json b/data/vaults.json new file mode 100644 index 0000000..9835c3b --- /dev/null +++ b/data/vaults.json @@ -0,0 +1,785 @@ +[ + { + "id": "VT-1.00-a", + "elementGroupId": "VT-1", + "code": "1.00", + "dValue": 1.6, + "description": "Handspring fwd", + "name": null, + "image": "VT-1.00-a.webp" + }, + { + "id": "VT-1.01-a", + "elementGroupId": "VT-1", + "code": "1.01", + "dValue": 2.0, + "description": "Handspring fwd on – ½ turn (180°) off", + "name": null, + "image": "VT-1.01-a.webp" + }, + { + "id": "VT-1.02-a", + "elementGroupId": "VT-1", + "code": "1.02", + "dValue": 2.6, + "description": "Handspring fwd on – 1/1 turn (360°) off", + "name": null, + "image": "VT-1.02-a.webp" + }, + { + "id": "VT-1.03-a", + "elementGroupId": "VT-1", + "code": "1.03", + "dValue": 3.2, + "description": "Handspring fwd on – 1½ turn (540°) off", + "name": "Kim", + "image": "VT-1.03-a.webp" + }, + { + "id": "VT-1.04-a", + "elementGroupId": "VT-1", + "code": "1.04", + "dValue": 3.6, + "description": "Handspring fwd on – 2/1 turn (720°) off", + "name": null, + "image": "VT-1.04-a.webp" + }, + { + "id": "VT-1.05-a", + "elementGroupId": "VT-1", + "code": "1.05", + "dValue": 4.0, + "description": "Handspring fwd on – 2½ turn (900°) off", + "name": null, + "image": "VT-1.05-a.webp" + }, + { + "id": "VT-1.10-a", + "elementGroupId": "VT-1", + "code": "1.10", + "dValue": 2.0, + "description": "Yamashita", + "name": null, + "image": "VT-1.10-a.webp" + }, + { + "id": "VT-1.11-a", + "elementGroupId": "VT-1", + "code": "1.11", + "dValue": 2.4, + "description": "Yamashita with ½ turn (180°) off", + "name": null, + "image": "VT-1.11-a.webp" + }, + { + "id": "VT-1.12-a", + "elementGroupId": "VT-1", + "code": "1.12", + "dValue": 2.8, + "description": "Yamashita with 1/1 turn (360°) off", + "name": null, + "image": "VT-1.12-a.webp" + }, + { + "id": "VT-1.20-a", + "elementGroupId": "VT-1", + "code": "1.20", + "dValue": 1.6, + "description": "Handspring fwd with ½ turn (180°) on – repulsion off", + "name": null, + "image": "VT-1.20-a.webp" + }, + { + "id": "VT-1.21-a", + "elementGroupId": "VT-1", + "code": "1.21", + "dValue": 2.4, + "description": "Handspring fwd with ½ turn (180°) on – ½ turn (180°) off (in either direction)", + "name": null, + "image": "VT-1.21-a.webp" + }, + { + "id": "VT-1.22-a", + "elementGroupId": "VT-1", + "code": "1.22", + "dValue": 2.6, + "description": "Handspring fwd with ½ turn (180°) on – 1/1 turn (360°) off", + "name": null, + "image": "VT-1.22-a.webp" + }, + { + "id": "VT-1.23-a", + "elementGroupId": "VT-1", + "code": "1.23", + "dValue": 3.2, + "description": "Handspring fwd with ½ turn (180°) on – 1½ turn (540°) off", + "name": null, + "image": "VT-1.23-a.webp" + }, + { + "id": "VT-1.24-a", + "elementGroupId": "VT-1", + "code": "1.24", + "dValue": 3.6, + "description": "Handspring fwd with ½ turn (180°) on – 2/1 turn (720°) off", + "name": null, + "image": "VT-1.24-a.webp" + }, + { + "id": "VT-1.30-a", + "elementGroupId": "VT-1", + "code": "1.30", + "dValue": 3.2, + "description": "Handspring fwd with 1/1 turn (360°) on – Handspring fwd off", + "name": null, + "image": "VT-1.30-a.webp" + }, + { + "id": "VT-1.31-a", + "elementGroupId": "VT-1", + "code": "1.31", + "dValue": 3.6, + "description": "Handspring fwd with 1/1 turn (360°) on – 1/1 turn (360°) off", + "name": "Korbut", + "image": "VT-1.31-a.webp" + }, + { + "id": "VT-1.40-a", + "elementGroupId": "VT-1", + "code": "1.40", + "dValue": 2.0, + "description": "Round-off, flic-flac on – repulsion off", + "name": null, + "image": "VT-1.40-a.webp" + }, + { + "id": "VT-1.50-a", + "elementGroupId": "VT-1", + "code": "1.50", + "dValue": 2.2, + "description": "Round-off, flic-flac with ½ turn (180°) on – Handspring fwd off", + "name": null, + "image": "VT-1.50-a.webp" + }, + { + "id": "VT-1.51-a", + "elementGroupId": "VT-1", + "code": "1.51", + "dValue": 2.6, + "description": "Round-off, flic-flac with ½ turn (180°) on –½ turn (180°) off", + "name": null, + "image": "VT-1.51-a.webp" + }, + { + "id": "VT-1.52-a", + "elementGroupId": "VT-1", + "code": "1.52", + "dValue": 3.0, + "description": "Round-off, flic-flac with ½ turn (180°) on – 1/1 turn (360°) off", + "name": null, + "image": "VT-1.52-a.webp" + }, + { + "id": "VT-1.53-a", + "elementGroupId": "VT-1", + "code": "1.53", + "dValue": 3.4, + "description": "Round-off, flic-flac with ½ turn (180°) on – 1½ turn (540°) off", + "name": null, + "image": "VT-1.53-a.webp" + }, + { + "id": "VT-1.60-a", + "elementGroupId": "VT-1", + "code": "1.60", + "dValue": 2.4, + "description": "Round-off, flic-flac with 1/1 turn (360°) on – repulsion off", + "name": null, + "image": "VT-1.60-a.webp" + }, + { + "id": "VT-1.61-a", + "elementGroupId": "VT-1", + "code": "1.61", + "dValue": 2.8, + "description": "Round-off, flic-flac with 1/1 turn (360°) on – ½ turn (180°) off", + "name": null, + "image": "VT-1.61-a.webp" + }, + { + "id": "VT-1.62-a", + "elementGroupId": "VT-1", + "code": "1.62", + "dValue": 3.2, + "description": "Round-off, flic-flac with 1/1 turn (360°) on –1/1 turn (360°) off", + "name": null, + "image": "VT-1.62-a.webp" + }, + { + "id": "VT-2.10-a", + "elementGroupId": "VT-2", + "code": "2.10", + "dValue": 3.6, + "description": "Handspring fwd on – tucked salto fwd off", + "name": null, + "image": "VT-2.10-a.webp" + }, + { + "id": "VT-2.11-a", + "elementGroupId": "VT-2", + "code": "2.11", + "dValue": 3.8, + "description": "Handspring fwd on – tucked salto fwd with ½ twist (180°) off", + "name": null, + "image": "VT-2.11-a.webp" + }, + { + "id": "VT-2.11-b", + "elementGroupId": "VT-2", + "code": "2.11", + "dValue": 3.8, + "description": "Handspring fwd on – ½ turn (180°) and tucked salto bwd off", + "name": null, + "image": "VT-2.11-b.webp" + }, + { + "id": "VT-2.12-a", + "elementGroupId": "VT-2", + "code": "2.12", + "dValue": 4.2, + "description": "Handspring fwd on – tucked salto fwd with 1/1 twist (360°) off", + "name": null, + "image": "VT-2.12-a.webp" + }, + { + "id": "VT-2.13-a", + "elementGroupId": "VT-2", + "code": "2.13", + "dValue": 4.6, + "description": "Handspring fwd on – tucked salto fwd with 1½ twist (540°) off", + "name": null, + "image": "VT-2.13-a.webp" + }, + { + "id": "VT-2.20-a", + "elementGroupId": "VT-2", + "code": "2.20", + "dValue": 3.8, + "description": "Handspring fwd on – piked salto fwd off", + "name": null, + "image": "VT-2.20-a.webp" + }, + { + "id": "VT-2.21-a", + "elementGroupId": "VT-2", + "code": "2.21", + "dValue": 4.0, + "description": "Handspring fwd on – piked salto fwd with ½ twist (180°) off", + "name": null, + "image": "VT-2.21-a.webp" + }, + { + "id": "VT-2.21-b", + "elementGroupId": "VT-2", + "code": "2.21", + "dValue": 4.0, + "description": "Handspring fwd on – ½ turn (180°) and piked salto bwd off", + "name": null, + "image": "VT-2.21-b.webp" + }, + { + "id": "VT-2.22-a", + "elementGroupId": "VT-2", + "code": "2.22", + "dValue": 4.4, + "description": "Handspring fwd on – piked salto fwd with 1/1 twist (360°) off", + "name": "Chusovitina", + "image": "VT-2.22-a.webp" + }, + { + "id": "VT-2.30-a", + "elementGroupId": "VT-2", + "code": "2.30", + "dValue": 4.4, + "description": "Handspring fwd on – stretched salto fwd off", + "name": "Evdokimova", + "image": "VT-2.30-a.webp" + }, + { + "id": "VT-2.31-a", + "elementGroupId": "VT-2", + "code": "2.31", + "dValue": 4.6, + "description": "Handspring fwd on – stretched salto fwd with ½ twist (180°) off", + "name": "Wang", + "image": "VT-2.31-a.webp" + }, + { + "id": "VT-2.32-a", + "elementGroupId": "VT-2", + "code": "2.32", + "dValue": 5.0, + "description": "Handspring fwd on – stretched salto fwd with 1/1 twist (360°) off", + "name": null, + "image": "VT-2.32-a.webp" + }, + { + "id": "VT-2.33-a", + "elementGroupId": "VT-2", + "code": "2.33", + "dValue": 5.4, + "description": "Handspring fwd on – stretched salto fwd with 1½ twist (540°) off", + "name": "Chusovitina", + "image": "VT-2.33-a.webp" + }, + { + "id": "VT-2.34-a", + "elementGroupId": "VT-2", + "code": "2.34", + "dValue": 5.8, + "description": "Handspring fwd on – stretched salto fwd with 2/1 twist (720°) off", + "name": "Yeo", + "image": "VT-2.34-a.webp" + }, + { + "id": "VT-2.40-a", + "elementGroupId": "VT-2", + "code": "2.40", + "dValue": 4.8, + "description": "Handspring fwd with 1/1 turn (360°) on – tucked salto fwd off", + "name": "Davydova", + "image": "VT-2.40-a.webp" + }, + { + "id": "VT-2.41-a", + "elementGroupId": "VT-2", + "code": "2.41", + "dValue": 5.2, + "description": "Handspring fwd with 1/1 turn (360°) on – piked salto fwd off", + "name": null, + "image": "VT-2.41-a.webp" + }, + { + "id": "VT-2.50-a", + "elementGroupId": "VT-2", + "code": "2.50", + "dValue": 6.0, + "description": "Handspring fwd on – tucked double salto fwd off", + "name": "Produnova", + "image": "VT-2.50-a.webp" + }, + { + "id": "VT-3.10-a", + "elementGroupId": "VT-3", + "code": "3.10", + "dValue": 3.2, + "description": "Tsukahara tucked", + "name": "Tourischeva", + "image": "VT-3.10-a.webp" + }, + { + "id": "VT-3.11-a", + "elementGroupId": "VT-3", + "code": "3.11", + "dValue": 3.4, + "description": "Tsukahara tucked with ½ twist (180°) off", + "name": null, + "image": "VT-3.11-a.webp" + }, + { + "id": "VT-3.12-a", + "elementGroupId": "VT-3", + "code": "3.12", + "dValue": 3.8, + "description": "Tsukahara tucked with 1/1 twist (360°) off", + "name": "Kim", + "image": "VT-3.12-a.webp" + }, + { + "id": "VT-3.13-a", + "elementGroupId": "VT-3", + "code": "3.13", + "dValue": 4.2, + "description": "Tsukahara tucked with 1½ twist (540°) off", + "name": null, + "image": "VT-3.13-a.webp" + }, + { + "id": "VT-3.14-a", + "elementGroupId": "VT-3", + "code": "3.14", + "dValue": 4.6, + "description": "Tsukahara tucked with 2/1 twist (720°) off", + "name": null, + "image": "VT-3.14-a.webp" + }, + { + "id": "VT-3.20-a", + "elementGroupId": "VT-3", + "code": "3.20", + "dValue": 3.4, + "description": "Tsukahara piked", + "name": null, + "image": "VT-3.20-a.webp" + }, + { + "id": "VT-3.30-a", + "elementGroupId": "VT-3", + "code": "3.30", + "dValue": 3.8, + "description": "Tsukahara stretched", + "name": null, + "image": "VT-3.30-a.webp" + }, + { + "id": "VT-3.31-a", + "elementGroupId": "VT-3", + "code": "3.31", + "dValue": 4.0, + "description": "Tsukahara stretched with ½ twist (180°) off", + "name": null, + "image": "VT-3.31-a.webp" + }, + { + "id": "VT-3.32-a", + "elementGroupId": "VT-3", + "code": "3.32", + "dValue": 4.4, + "description": "Tsukahara stretched with 1/1 twist (360°) off", + "name": "Kim", + "image": "VT-3.32-a.webp" + }, + { + "id": "VT-3.33-a", + "elementGroupId": "VT-3", + "code": "3.33", + "dValue": 4.8, + "description": "Tsukahara stretched with 1½ twist (540°) off", + "name": null, + "image": "VT-3.33-a.webp" + }, + { + "id": "VT-3.34-a", + "elementGroupId": "VT-3", + "code": "3.34", + "dValue": 5.2, + "description": "Tsukahara stretched with 2/1 twist (720°) off", + "name": "Zamolodchikova", + "image": "VT-3.34-a.webp" + }, + { + "id": "VT-3.35-a", + "elementGroupId": "VT-3", + "code": "3.35", + "dValue": 5.6, + "description": "Tsukahara stretched with 2½ twist (900°) off", + "name": null, + "image": "VT-3.35-a.webp" + }, + { + "id": "VT-4.10-a", + "elementGroupId": "VT-4", + "code": "4.10", + "dValue": 3.0, + "description": "Round-off, flic-flac on – tucked salto bwd off", + "name": "Yurchenko", + "image": "VT-4.10-a.webp" + }, + { + "id": "VT-4.11-a", + "elementGroupId": "VT-4", + "code": "4.11", + "dValue": 3.2, + "description": "Round-off, flic-flac on – tucked salto bwd with ½ twist (180°) off", + "name": null, + "image": "VT-4.11-a.webp" + }, + { + "id": "VT-4.12-a", + "elementGroupId": "VT-4", + "code": "4.12", + "dValue": 3.6, + "description": "Round-off, flic-flac on - tucked salto bwd with 1/1 twist (360°) off", + "name": null, + "image": "VT-4.12-a.webp" + }, + { + "id": "VT-4.13-a", + "elementGroupId": "VT-4", + "code": "4.13", + "dValue": 4.0, + "description": "Round-off, flic-flac on – tucked salto bwd with 1½ twist (540°) off", + "name": null, + "image": "VT-4.13-a.webp" + }, + { + "id": "VT-4.14-a", + "elementGroupId": "VT-4", + "code": "4.14", + "dValue": 4.4, + "description": "Round-off, flic-flac on – tucked salto bwd with 2/1 twist (720°) off", + "name": "Dungelova", + "image": "VT-4.14-a.webp" + }, + { + "id": "VT-4.20-a", + "elementGroupId": "VT-4", + "code": "4.20", + "dValue": 3.2, + "description": "Round-off, flic-flac on – piked salto bwd off", + "name": null, + "image": "VT-4.20-a.webp" + }, + { + "id": "VT-4.30-a", + "elementGroupId": "VT-4", + "code": "4.30", + "dValue": 3.6, + "description": "Round-off, flic-flac on – stretched salto bwd off", + "name": null, + "image": "VT-4.30-a.webp" + }, + { + "id": "VT-4.31-a", + "elementGroupId": "VT-4", + "code": "4.31", + "dValue": 3.8, + "description": "Round-off, flic-flac on – stretched salto bwd with ½ twist (180°) off", + "name": null, + "image": "VT-4.31-a.webp" + }, + { + "id": "VT-4.32-a", + "elementGroupId": "VT-4", + "code": "4.32", + "dValue": 4.2, + "description": "Round-off, flic-flac on – stretched salto bwd with 1/1 twist (360°) off", + "name": null, + "image": "VT-4.32-a.webp" + }, + { + "id": "VT-4.33-a", + "elementGroupId": "VT-4", + "code": "4.33", + "dValue": 4.6, + "description": "Round-off, flic-flac on – stretched salto bwd with 1½ twist (540°) off", + "name": null, + "image": "VT-4.33-a.webp" + }, + { + "id": "VT-4.34-a", + "elementGroupId": "VT-4", + "code": "4.34", + "dValue": 5.0, + "description": "Round-off, flic-flac on – stretched salto bwd with 2/1 twist (720°) off", + "name": "Baitova", + "image": "VT-4.34-a.webp" + }, + { + "id": "VT-4.35-a", + "elementGroupId": "VT-4", + "code": "4.35", + "dValue": 5.4, + "description": "Round-off, flic-flac on –stretched salto bwd with 2½ twist (900°) off", + "name": "Amanar", + "image": "VT-4.35-a.webp" + }, + { + "id": "VT-4.40-a", + "elementGroupId": "VT-4", + "code": "4.40", + "dValue": 3.6, + "description": "Round-off, flic-flac with ¾ turn (270°) on – tucked salto bwd off", + "name": "Luconi", + "image": "VT-4.40-a.webp" + }, + { + "id": "VT-4.41-a", + "elementGroupId": "VT-4", + "code": "4.41", + "dValue": 4.0, + "description": "Round-off, flic-flac with ¾ turn (270°) on – tucked salto bwd with ½ twist (180°) off", + "name": null, + "image": "VT-4.41-a.webp" + }, + { + "id": "VT-4.42-a", + "elementGroupId": "VT-4", + "code": "4.42", + "dValue": 4.2, + "description": "Round-off, flic-flac with ¾ turn (270°) on – tucked salto bwd with 1/1 twist (360°) off", + "name": null, + "image": "VT-4.42-a.webp" + }, + { + "id": "VT-4.50-a", + "elementGroupId": "VT-4", + "code": "4.50", + "dValue": 3.8, + "description": "Round-off, flic-flac with ¾ turn (270°) on – piked salto bwd off", + "name": null, + "image": "VT-4.50-a.webp" + }, + { + "id": "VT-4.51-a", + "elementGroupId": "VT-4", + "code": "4.51", + "dValue": 4.2, + "description": "Round-off, flic-flac with ¾ turn (270°) on – stretched salto bwd off", + "name": null, + "image": "VT-4.51-a.webp" + }, + { + "id": "VT-4.52-a", + "elementGroupId": "VT-4", + "code": "4.52", + "dValue": 4.6, + "description": "Round-off, flic-flac with ¾ turn (270°) on – stretched salto bwd with ½ twist (180°) off", + "name": null, + "image": "VT-4.52-a.webp" + }, + { + "id": "VT-4.53-a", + "elementGroupId": "VT-4", + "code": "4.53", + "dValue": 5.0, + "description": "Round-off, flic-flac with ¾ turn (270°) on – stretched salto bwd with 1/1 twist (360°) off", + "name": null, + "image": "VT-4.53-a.webp" + }, + { + "id": "VT-4.62-a", + "elementGroupId": "VT-4", + "code": "4.62", + "dValue": 6.4, + "description": "Round-off, flic-flac on –double piked salto bwd off", + "name": "Biles", + "image": "VT-4.62-a.webp" + }, + { + "id": "VT-5.10-a", + "elementGroupId": "VT-5", + "code": "5.10", + "dValue": 3.8, + "description": "Round-off, flic-flac with ½ turn (180°) on – tucked salto fwd off", + "name": "Ivantcheva", + "image": "VT-5.10-a.webp" + }, + { + "id": "VT-5.11-a", + "elementGroupId": "VT-5", + "code": "5.11", + "dValue": 4.0, + "description": "Round-off, flic-flac with ½ turn (180°) on – tucked salto fwd with ½ twist (180°) off", + "name": "Servente", + "image": "VT-5.11-a.webp" + }, + { + "id": "VT-5.11-b", + "elementGroupId": "VT-5", + "code": "5.11", + "dValue": 4.0, + "description": "Round-off, flic-flac with ½ turn (180°) on – ½ turn (180°) and tucked salto bwd off", + "name": null, + "image": "VT-5.11-b.webp" + }, + { + "id": "VT-5.12-a", + "elementGroupId": "VT-5", + "code": "5.12", + "dValue": 4.4, + "description": "Round-off, flic-flac with ½ turn (180°) on – tucked salto fwd with 1/1 twist (360°) off", + "name": null, + "image": "VT-5.12-a.webp" + }, + { + "id": "VT-5.13-a", + "elementGroupId": "VT-5", + "code": "5.13", + "dValue": 4.8, + "description": "Round-off flic-flac with ½ turn (180°) on - tucked salto fwd with 1½ twist (540°) off", + "name": "Khorkina", + "image": "VT-5.13-a.webp" + }, + { + "id": "VT-5.20-a", + "elementGroupId": "VT-5", + "code": "5.20", + "dValue": 4.0, + "description": "Round-off, flic-flac with ½ turn (180°) on – piked salto fwd off", + "name": "Omelianchik", + "image": "VT-5.20-a.webp" + }, + { + "id": "VT-5.21-a", + "elementGroupId": "VT-5", + "code": "5.21", + "dValue": 4.2, + "description": "Round-off, flic-flac with ½ turn (180°) on – piked salto fwd with ½ twist (180°) off", + "name": "Podkopayeva", + "image": "VT-5.21-a.webp" + }, + { + "id": "VT-5.21-b", + "elementGroupId": "VT-5", + "code": "5.21", + "dValue": 4.2, + "description": "Round-off, flic-flac with ½ turn (180°) on – ½ turn (180°) and piked salto bwd off", + "name": null, + "image": "VT-5.21-b.webp" + }, + { + "id": "VT-5.22-a", + "elementGroupId": "VT-5", + "code": "5.22", + "dValue": 4.6, + "description": "Round-off, flic-flac with ½ turn (180°) on – piked salto fwd with 1/1 twist (360°) off", + "name": null, + "image": "VT-5.22-a.webp" + }, + { + "id": "VT-5.30-a", + "elementGroupId": "VT-5", + "code": "5.30", + "dValue": 4.6, + "description": "Round-off, flic-flac with ½ turn (180°) on – stretched salto fwd off", + "name": null, + "image": "VT-5.30-a.webp" + }, + { + "id": "VT-5.31-a", + "elementGroupId": "VT-5", + "code": "5.31", + "dValue": 4.8, + "description": "Round-off, flic-flac with ½ turn (180°) on – salto fwd stretched with ½ twist (180°) off", + "name": null, + "image": "VT-5.31-a.webp" + }, + { + "id": "VT-5.32-a", + "elementGroupId": "VT-5", + "code": "5.32", + "dValue": 5.2, + "description": "Round-off flic-flac with ½ turn (180°) on – stretched salto fwd with 1/1 twist (360°) off", + "name": null, + "image": "VT-5.32-a.webp" + }, + { + "id": "VT-5.33-a", + "elementGroupId": "VT-5", + "code": "5.33", + "dValue": 5.6, + "description": "Round-off flic-flac with ½ turn (180°) on – stretched salto fwd with 1½ twist (540°) off", + "name": "Cheng", + "image": "VT-5.33-a.webp" + }, + { + "id": "VT-5.34-a", + "elementGroupId": "VT-5", + "code": "5.34", + "dValue": 6.0, + "description": "Round off flic-flac with ½ turn (180°) on – stretched salto fwd with 2/1 twist (720°) off", + "name": "Biles", + "image": "VT-5.34-a.webp" + } +] diff --git a/docs/DATA_MODEL.md b/docs/DATA_MODEL.md index 252cb66..2819a3a 100644 --- a/docs/DATA_MODEL.md +++ b/docs/DATA_MODEL.md @@ -6,6 +6,8 @@ The catalog data (apparatus, element groups, elements, vaults and variant groups Example data that shows how each entity is structured is in [examples/](examples/). The entries are invented and are for documentation only. +The extracted catalog data is in [data/](../data/). [EXTRACTION.md](EXTRACTION.md) explains how it was made. + ## Diagram ```mermaid @@ -67,29 +69,29 @@ A group of elements or vaults on one apparatus, as listed in the Code of Points. One element on uneven bars, balance beam or floor. -| Field | Example | Description | -| ---------------- | ------------------------------ | ---------------------------------------------- | -| `id` | `"UB-1.101-a"` | Apparatus + code + variant letter | -| `elementGroupId` | `"UB-1"` | The group the element belongs to | -| `code` | `"1.101"` | Element number in the Code of Points | -| `value` | `0.1` | Difficulty value (0.1–1.0) | -| `description` | `"Glide kip to support on LB"` | Description from the Code of Points | -| `name` | `"Biles"` or `null` | The gymnast the element is named after, if any | -| `image` | `"UB-1.101-a.webp"` | Drawing of the element | +| Field | Example | Description | +| ---------------- | ------------------------------ | -------------------------------------------------------------------------------------------------- | +| `id` | `"UB-1.101-a"` | Apparatus + code + variant letter. The letter is always there, also when there is only one variant | +| `elementGroupId` | `"UB-1"` | The group the element belongs to | +| `code` | `"1.101"` | Element number in the Code of Points | +| `value` | `0.1` | Difficulty value (0.1–1.0) | +| `description` | `"Glide kip to support on LB"` | Description from the Code of Points | +| `name` | `"Biles"` or `null` | The gymnast the element is named after, if any | +| `image` | `"UB-1.101-a.webp"` | File name of the drawing. The file is in a folder per apparatus: `data/images/UB/UB-1.101-a.webp` | ### Vault One vault from the vault table. -| Field | Example | Description | -| ---------------- | ------------------ | -------------------------------------------- | -| `id` | `"VT-1.22-a"` | `VT` + code + variant letter | -| `elementGroupId` | `"VT-1"` | The vault group the vault belongs to | -| `code` | `"1.22"` | Vault number in the Code of Points | -| `dValue` | `2.6` | Difficulty score for the vault | -| `description` | `"..."` | Description from the Code of Points | -| `name` | `"Kim"` or `null` | The gymnast the vault is named after, if any | -| `image` | `"VT-1.22-a.webp"` | Drawing of the vault | +| Field | Example | Description | +| ---------------- | ------------------ | ------------------------------------------------------------------------------------------------ | +| `id` | `"VT-1.22-a"` | `VT` + code + variant letter. The letter is always there, also when there is only one variant | +| `elementGroupId` | `"VT-1"` | The vault group the vault belongs to | +| `code` | `"1.22"` | Vault number in the Code of Points | +| `dValue` | `2.6` | Difficulty score for the vault | +| `description` | `"..."` | Description from the Code of Points | +| `name` | `"Kim"` or `null` | The gymnast the vault is named after, if any | +| `image` | `"VT-1.22-a.webp"` | File name of the drawing. The file is in a folder per apparatus: `data/images/VT/VT-1.22-a.webp` | ### VariantGroup @@ -193,6 +195,20 @@ The variants are linked through a variant group that holds a list of their ids. We use one list (`variantIds`) instead of separate lists for elements and vaults, because a variant group never contains both. The type is given by the id: vault ids always start with `VT-`. +### Every id has a variant letter + +The id of an element or vault always ends with a variant letter, also when there is only one variant: `UB-2.405-a`, not `UB-2.405`. We considered dropping the letter for elements without variants, but kept it for three reasons: + +- The id does not change if a later version of the Code of Points adds a variant. A routine or a gymnast's element list that refers to `UB-2.405-a` keeps working. +- An element id can never be mistaken for a variant group id. A variant group id has no letter (`UB-2.305`). +- There is one id format to validate, and the image file name always matches the id. + +In the user interface, the letter does not have to be shown for elements without variants. + +### Images are stored in one folder per apparatus + +There is one image per element and vault, more than 800 in total. They are stored in one folder per apparatus, for example `data/images/UB/UB-2.305-a.webp`, so the folders stay easy to browse. The `image` field holds only the file name. The folder is the first part of the id, so the path can always be built from the id. + ### Google login and `googleId` Coaches log in with their Google account, so we do not store usernames or passwords. When a coach logs in, the frontend receives a token from Google and sends it to the backend. The backend verifies the token with Google and reads the user's unique id (`sub`) from it. That id is stored as `googleId` and is used to find the coach on later logins, or to create a new coach on the first login. diff --git a/docs/EXTRACTION.md b/docs/EXTRACTION.md new file mode 100644 index 0000000..9c77e9e --- /dev/null +++ b/docs/EXTRACTION.md @@ -0,0 +1,76 @@ +# How the catalog data was made + +This document explains, in plain language, how we got the elements and vaults out of the Code of Points and into the repository. Read it if you wonder where the files in `data/` come from, what has been checked, and how to fix something that is wrong. + +## In short + +The FIG Women's Artistic Gymnastics Code of Points 2025–2028 is a PDF. Pages 60–169 hold the Table of Elements: one table cell per element, with a code, a description, sometimes a name, and a drawing. + +We wrote a Python script that reads those pages and produces the catalog: 749 elements, 87 vaults and one image for each of them. The script does most of the work, and we checked and corrected the uncertain cases by hand. + +## The parts, and which ones matter + +There are many files, but only three things to know about. + +| Part | What it is | Do you need to touch it? | +| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------- | +| [`data/`](../data/) | The result: five JSON files and a folder of images. This is what the application will use. | No. It is generated, so never edit it by hand. | +| [`scripts/extract-cop/extract.py`](../scripts/extract-cop/) | The tool that makes `data/` from the PDF. It also holds the lists of corrections we made by hand. | Only to add a correction, or to run the extraction again. | +| The PDF | The source. It is not in the repository and must never be committed, because the rights belong to FIG. | Only if you run the script. | + +Most of the files are the images in `data/images/`, one per element and vault. They are why the folder looks large. + +How to install and run the script is described in [scripts/extract-cop/README.md](../scripts/extract-cop/README.md). What each file in `data/` contains is listed in [data/README.md](../data/README.md). + +## What the script does + +For each page in the Table of Elements, the script does this: + +1. **Finds the group.** It reads the heading at the top of the page, such as "2.000 — CASTS AND CLEAR HIP CIRCLES". That gives the apparatus and the element group. +2. **Finds the codes.** Every element starts with a coloured label with its code, such as `2.305`. Each label marks one cell in the table. Empty cells are skipped. +3. **Reads the text in the cell.** Text in italics is the description. Text in bold in parentheses is the name of the gymnast the element is named after. +4. **Finds the drawings in the cell.** It separates the drawing of the gymnast from the small judging symbol below it, which we do not use. +5. **Makes one element per drawing.** If a cell has several drawings, each becomes its own variant: `UB-2.305-a`, `UB-2.305-b` and `UB-2.305-c`. +6. **Saves each drawing as an image.** The image shows only the drawing, without the symbol, the code or the description. +7. **Checks the result.** At the end it checks that all references are valid and prints a list of everything it was unsure about. + +The value of an element is not read from the table. It comes from the code: the first digit after the dot is the difficulty, so `2.305` is a C element worth 0.3. Vaults are different. Their D-value is printed in the cell, for example "2.60 P.". + +The script also writes a review page, `review.html`, that shows every element with its image and marks the uncertain ones. We used it to check the result against the PDF. + +## Decisions we made + +- **Every id ends with a letter, also when there is only one variant.** An element without variants is `UB-2.405-a`, not `UB-2.405`. We considered dropping the letter, but kept it for three reasons. The id does not change if a variant is added in a later version of the Code of Points, so saved routines keep working. An element id can never be mistaken for a variant group id, which has no letter (`UB-2.305`). And there is one id format to check instead of two. +- **Images are in one folder per apparatus.** For example `data/images/UB/UB-2.305-a.webp`. The `image` field in the data holds only the file name. The folder is the first part of the id. +- **One description for several drawings.** Sometimes the PDF has one sentence for two or three drawings, such as "Clear hip circle to hstd, also with hop-grip change in hstd phase, or with ½ turn (180°) to hstd". Where the sentence could be split safely, each variant gets the first part plus its own part. Where it could not, every variant has the whole sentence. +- **Drawings in several parts are one image.** Some drawings on beam show the start of an element on the left and two ways of finishing it on the right. They are kept as one image and one element. +- **Two markers are not extracted.** Some codes on beam and floor are printed with "(D)" for dance elements, or "(\*)" for elements that only receive credit once. The data model has no fields for them. + +## What we checked by hand + +The script flagged about 160 codes as uncertain. We went through all of them: + +- **Descriptions the script had split** (52 codes). We read each variant's text against its drawing, corrected 13 texts, and removed the name from variants it did not belong to. +- **Codes with more drawings than judging symbols** (7 codes). Six were correct. One, `BB-1.403`, had four variants that were really two, each drawn in two rows. +- **Descriptions that only continued the one above** (3 codes), such as "– piked". We wrote them out in full. +- **`BB-1.312`**, which had four variants that were really two. +- **Codes with one drawing but several judging symbols** (9 codes). The image could have shown two variants that should have been separate elements. All nine were correct as they were. +- **Codes where every variant has the same full description** (about 90). These are correct, and we left them as they are. The text does not say what separates the variants, because the PDF has one description for several drawings. + +The corrections are stored in three lists at the top of `extract.py`, so they are applied again every time the script runs. + +The script still prints these codes as flagged on every run. It does not record that they have been checked. + +## What has not been checked + +Everything the script did not flag. We looked at about 90 of the images and around 15 pages. The rest is unchecked, so there may be errors we have not found. + +## If you find an error + +Do not correct the files in `data/`. The next run of the script would replace them and the correction would be lost. + +Instead, add the correction to the lists at the top of `scripts/extract-cop/extract.py`, run the script, and commit both the script and the new `data/`. The lists are explained in [scripts/extract-cop/README.md](../scripts/extract-cop/README.md). + +## How AI was used + +The script was written by Claude Code from a task description written by the team. It was built step by step: first one page of uneven bars, then a page with harder cases, then a vault page, and then the rest of the document, with the team checking the result of each step. The team made the decisions described above and decided every correction by hand. For many of the corrected descriptions, Claude suggested a text that the team accepted or changed. This document was also drafted by Claude Code. diff --git a/scripts/extract-cop/README.md b/scripts/extract-cop/README.md new file mode 100644 index 0000000..cc8b8af --- /dev/null +++ b/scripts/extract-cop/README.md @@ -0,0 +1,66 @@ +# Code of Points extraction + +`extract.py` reads the Table of Elements in the FIG Women's Artistic Gymnastics Code of Points 2025–2028 and writes the catalog data to [`data/`](../../data/): the JSON files described in [docs/DATA_MODEL.md](../../docs/DATA_MODEL.md) and one drawing per element and vault. + +For a plain explanation of how the extraction works and what has been checked by hand, see [docs/EXTRACTION.md](../../docs/EXTRACTION.md). + +## The PDF + +The PDF is not in the repository, and it must never be committed. Download it from FIG and save it in this folder with exactly this name: + +``` +scripts/extract-cop/en_1.1.-WAG-Code-of-Points-2025-2028.pdf +``` + +That path is in `.gitignore`. Check with `git status` that the PDF is not listed before you commit. + +## Install + +You need Python 3.9 or newer. The script is tested with Python 3.9 and 3.12. + +```bash +cd scripts/extract-cop +python3 -m venv .venv +source .venv/bin/activate +pip install --upgrade pip +pip install -r requirements.txt +``` + +On Windows, activate the environment with `.venv\Scripts\activate` instead. + +If `python3 --version` shows an older version, create the environment with a newer one, for example `python3.12 -m venv .venv`. + +## Run + +```bash +python extract.py +``` + +A run takes a few minutes. It replaces the JSON files and `images/` in `data/`, writes `review.html` in this folder, and prints the result of the checks: missing references, the number of elements and vaults per group, and everything flagged as uncertain. + +To try the script on a few pages, give their printed page numbers: + +```bash +python extract.py --pages 80 81 +``` + +This also replaces everything in `data/`, so run the script without `--pages` again before you commit. + +## Review page + +Open `review.html` in a browser, for example with `open review.html` on macOS or `start review.html` on Windows. It shows every element and vault with its image, id, code, value, description and name, grouped by apparatus and group. + +- A red border means the entry is flagged, with the reason below it. +- A blue background means the code has several variants. They are shown next to each other. + +The page loads the images from `data/images/`, so leave it in this folder. It is in `.gitignore` and is not committed. + +## Corrections by hand + +Some cells in the PDF cannot be read correctly by rule. Fixes found by checking the review page against the PDF are kept in three lists at the top of `extract.py`, so they are applied on every run: + +- `ONE_DRAWING_PER_DESCRIPTION`: codes where the drawings under one description are a single drawing in several rows, not several variants. +- `VARIANTS_CONFIRMED`: codes that were flagged for having more drawings than judging symbols, and are confirmed to be correct. +- `FIELD_CORRECTIONS`: descriptions and names corrected by hand, per id. Used where a description in the PDF only continues the one above it, or a name is printed between two drawings. + +Do not correct the files in `data/` directly. The next run of the script replaces them. diff --git a/scripts/extract-cop/extract.py b/scripts/extract-cop/extract.py new file mode 100644 index 0000000..54cebb2 --- /dev/null +++ b/scripts/extract-cop/extract.py @@ -0,0 +1,981 @@ +#!/usr/bin/env python3 +"""Extract the Table of Elements from the FIG WAG Code of Points 2025-2028. + +Reads the PDF in this folder and writes the catalog data described in +docs/DATA_MODEL.md to data/*.json, with one drawing per element or vault in +data/images//. It also writes review.html in this folder for checking the +result in a browser. + +Usage: + python extract.py # the whole Table of Elements + python extract.py --pages 80 # only some printed page numbers (for testing) +""" + +import argparse +import html +import json +import re +import shutil +from collections import Counter, defaultdict +from pathlib import Path + +import pdfplumber +from PIL import Image, ImageDraw + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parent.parent +PDF_PATH = HERE / "en_1.1.-WAG-Code-of-Points-2025-2028.pdf" +DATA_DIR = ROOT / "data" +IMAGE_DIR = DATA_DIR / "images" +REVIEW_PATH = HERE / "review.html" + +APPARATUS = [ + {"id": "VT", "name": "Vault"}, + {"id": "UB", "name": "Uneven bars"}, + {"id": "BB", "name": "Balance beam"}, + {"id": "FX", "name": "Floor exercise"}, +] +APPARATUS_ORDER = [a["id"] for a in APPARATUS] +SECTION_TITLES = [ + ("VAULT TABLE", "VT"), + ("UNEVEN BARS", "UB"), + ("BALANCE BEAM", "BB"), + ("FLOOR EXERCISE", "FX"), +] + +RENDER_DPI = 288 # 4 px per PDF point +PX_PER_PT = RENDER_DPI / 72 +MAX_IMAGE_WIDTH = 400 +ELEMENT_CODE = re.compile(r"^\d\.\d{3}$") # uneven bars, beam, floor +VAULT_CODE = re.compile(r"^\d\.\d{2}$") +D_VALUE = re.compile(r"^(\d\.\d{2})P?\.?$") # printed as "2.60 P." in the vault tables +LETTERS = "ABCDEFGHIJ" + +# Corrections from checking the result by hand against the PDF. +# Codes where the drawings under one description are a single drawing in +# several rows, not several variants. +ONE_DRAWING_PER_DESCRIPTION = {"BB-1.312", "BB-1.403"} +# Codes with more drawings than judging symbols that are confirmed correct. +VARIANTS_CONFIRMED = {"BB-1.303", "BB-2.101", "BB-2.306", "BB-4.206", "FX-1.204", "FX-2.208"} +# Fields corrected by hand, per id. Used where a description in the PDF only +# continues the one above it ("– piked"), or a name is printed between drawings. +FIELD_CORRECTIONS = { + "UB-3.405-a": {"name": None}, + "UB-3.405-c": { + "description": "Swing fwd and salto bwd piked with ½ turn (180°) to hang on HB (Gienger Salto)", + "name": None, + }, + "BB-1.411-a": { + "description": "Jump, press or swing to hstd – 1/1 turn (360°) in hstd – lower to planche (2 sec.)", + }, + "BB-1.411-b": { + "description": "Jump, press or swing to hstd – 1/1 turn (360°) in hstd – lower to clear pike support with legs together (2 sec.)", + }, + "BB-5.613-b": {"description": "Jump fwd with ½ twist (180°) – piked"}, + # Split descriptions checked by hand. + "VT-2.11-b": {"description": "Handspring fwd on – ½ turn (180°) and tucked salto bwd off"}, + "VT-2.21-b": {"description": "Handspring fwd on – ½ turn (180°) and piked salto bwd off"}, + "VT-5.11-b": { + "description": "Round-off, flic-flac with ½ turn (180°) on – ½ turn (180°) and tucked salto bwd off", + "name": None, + }, + "VT-5.21-b": { + "description": "Round-off, flic-flac with ½ turn (180°) on – ½ turn (180°) and piked salto bwd off", + "name": None, + }, + "UB-1.101-b": {"description": "Glide kip with ½ turn (180°) kip to support on LB"}, + "UB-1.411-b": {"name": None}, + "UB-2.302-a": { + "description": "Hip circle bwd hecht with flight and ½ turn (180°) passing over bar to hang on same bar", + }, + "UB-2.302-b": { + "description": "Clear hip circle bwd hecht with flight and ½ turn (180°) passing over bar to hang on same bar", + }, + "UB-2.404-a": {"description": "Clear hip circle fwd to hstd (Weiler-kip)"}, + "UB-2.404-b": {"description": "Clear hip circle fwd to hstd, with ½ turn (180°) in hstd phase"}, + "UB-3.201-b": {"name": None}, + "UB-3.206-c": { + "description": "Giant circle fwd in reverse, regular or mix grip, with ½ turn (180°) to hstd", + }, + "UB-3.310-b": {"name": None}, + "UB-3.506-b": {"description": "Giant circle fwd in reverse grip with 1½ turn (540°) to hstd"}, + "UB-3.510-b": { + "description": "Giant circle fwd in L grip with 1½ turn (540°) to hstd (any technique accepted)", + }, + "UB-4.508-b": {"name": None}, + "UB-5.404-b": {"name": None}, + "UB-5.501-b": {"name": None}, + "UB-6.508-b": { + "description": "Swing bwd to salto fwd with ½ turn (180°) into salto bwd tucked", + "name": None, + }, + "BB-5.401-b": {"name": None}, +} + +WHITE = (None, 1, 1.0, (1,), (1.0,), (1, 1, 1), (1.0, 1.0, 1.0), (0, 0, 0, 0)) + + +# -------------------------------------------------------------------------- +# Small geometry helpers. A box is (x0, top, x1, bottom) in PDF points. +# -------------------------------------------------------------------------- + + +def box_of(obj): + return (obj["x0"], obj["top"], obj["x1"], obj["bottom"]) + + +def center(box): + return ((box[0] + box[2]) / 2, (box[1] + box[3]) / 2) + + +def inside(point, box): + return box[0] <= point[0] <= box[2] and box[1] <= point[1] <= box[3] + + +def union(boxes): + boxes = list(boxes) + return ( + min(b[0] for b in boxes), + min(b[1] for b in boxes), + max(b[2] for b in boxes), + max(b[3] for b in boxes), + ) + + +def intersects(a, b): + return a[0] < b[2] and b[0] < a[2] and a[1] < b[3] and b[1] < a[3] + + +def near(a, b, gap_x, gap_y): + return ( + a[0] - gap_x < b[2] + and b[0] - gap_x < a[2] + and a[1] - gap_y < b[3] + and b[1] - gap_y < a[3] + ) + + +def cluster_boxes(boxes, gap_x, gap_y): + """Group boxes that touch or lie within the given gaps of each other.""" + parent = list(range(len(boxes))) + + def find(i): + while parent[i] != i: + parent[i] = parent[parent[i]] + i = parent[i] + return i + + order = sorted(range(len(boxes)), key=lambda i: boxes[i][0]) + for a_pos, a in enumerate(order): + for b in order[a_pos + 1 :]: + if boxes[b][0] - gap_x >= boxes[a][2]: + # Sorted by x0, but a later box can still be wide enough to + # reach, so only stop when even x0 is out of range. + if boxes[b][0] - gap_x >= max(boxes[a][2], boxes[a][0] + 200): + break + continue + if near(boxes[a], boxes[b], gap_x, gap_y): + parent[find(a)] = find(b) + groups = defaultdict(list) + for i in range(len(boxes)): + groups[find(i)].append(boxes[i]) + return [union(g) for g in groups.values()] + + +# -------------------------------------------------------------------------- +# Reading a page +# -------------------------------------------------------------------------- + + +def read_words(page): + """Words with flags for bold and italic, taken from the font of the letters.""" + words = page.extract_words(return_chars=True, x_tolerance=2, y_tolerance=2) + for word in words: + fonts = [c["fontname"] for c in word["chars"]] + word["bold"] = sum("Bold" in f for f in fonts) * 2 > len(fonts) + word["italic"] = sum("Italic" in f for f in fonts) * 2 > len(fonts) + word["size"] = max(c["size"] for c in word["chars"]) + word["box"] = box_of(word) + del word["chars"] + return words + + +def group_lines(words): + """Group words into text lines, top to bottom and left to right.""" + lines = [] + for word in sorted(words, key=lambda w: (w["top"], w["x0"])): + if lines and abs(lines[-1][0]["top"] - word["top"]) < 3: + lines[-1].append(word) + else: + lines.append([word]) + return [sorted(line, key=lambda w: w["x0"]) for line in lines] + + +def join_lines(lines): + """Join text lines into one string, keeping hyphenated words together.""" + text = "" + for line in lines: + part = " ".join(w["text"] for w in line) + if text.endswith("-") and not text.endswith(" -"): + text += part + else: + text = (text + " " + part).strip() + return re.sub(r"\s+", " ", text).strip() + + +def find_sections(pdf): + """Map printed page number -> apparatus id for the Table of Elements. + + Each apparatus starts with a portrait title page ("14.2 UNEVEN BARS – + Elements"), followed by landscape pages with the tables. + """ + pages = {} + current = None + for index, page in enumerate(pdf.pages): + if page.width > page.height: + if current: + pages[index + 1] = current + continue + text = page.extract_text() or "" + if current and "APPENDICES" in text: + break + match = re.match(r"\s*14\.\d\s+(.+)", text) + if match and len(text.split()) < 40: + for title, apparatus in SECTION_TITLES: + if title in match.group(1).upper(): + current = apparatus + return pages + + +def page_heading(words, first_label_top): + """The group heading above the table: (group number, name). + + Elements: '2.000 — CASTS AND CLEAR HIP CIRCLES'. Vault: 'GROUP 1 ― HANDSPRING, ...'. + """ + above = [w for w in words if center(w["box"])[1] < first_label_top and w["size"] >= 9.5 and w["bold"]] + text = " ".join(" ".join(w["text"] for w in line) for line in group_lines(above)) + text = re.sub(r"\b(\d) (ST|ND|RD|TH)\b", r"\1\2", text) # superscript read as its own word + match = re.match(r"^(\d)\.000\s*[—―–-]\s*(.+)$", text) or re.match(r"^GROUP (\d)\s*[—―–-]\s*(.+)$", text) + if not match: + return None + name = match.group(2) + # Some pages print the heading twice, and the column letters follow it. + name = re.split(r"\s+\d\.000\s*[—―–-]", name)[0] + name = re.sub(r"(\s+[A-J](/[A-J])*)+$", "", name) + return int(match.group(1)), name.strip() + + +KEEP_CASE = ["Yamashita", "Yurchenko", "Tsukahara", "LA"] + + +def sentence_case(text): + text = text.strip().lower() + text = text[:1].upper() + text[1:] + for word in KEEP_CASE: + text = re.sub(rf"\b{word}\b", word, text, flags=re.IGNORECASE) + return text + + +def table_bottom(page, words): + """Y position of the bottom border of the table.""" + footer = [w["top"] for w in words if w["text"] == "Page" and w["top"] > page.height - 80] + limit = (min(footer) if footer else page.height - 40) - 5 + borders = [ + r["bottom"] + for r in page.rects + page.lines + if r["x1"] - r["x0"] > 100 and r["bottom"] - r["top"] < 2 and r["bottom"] < limit + ] + return max(borders) if borders else limit - 10 + + +def graphic_objects(page): + """Boxes of everything drawn on the page: vector shapes and bitmaps. + + Table borders are included here. They lie on the cell edges, and + read_cell() only looks just inside the edges. + """ + vectors = [] + for obj in page.curves + page.lines + page.rects: + box = box_of(obj) + width, height = box[2] - box[0], box[3] - box[1] + if obj["object_type"] == "rect" and obj.get("fill") and width > 30 and height > 6: + continue # coloured label, header cell or cell background + vectors.append(box) + bitmaps = [(box_of(im), "Indexed" in str(im.get("colorspace"))) for im in page.images] + return vectors, bitmaps + + +def find_notes(words): + """Boxes around explanatory notes printed inside the table. + + Notes are upright text of several words, such as "(*) Elements in the same + box with an asterisk receive credit only once". Descriptions are italic, + and labels inside drawings are short ("180°"). + """ + upright = [ + w + for w in words + if not w["italic"] and not w["bold"] and not re.fullmatch(r"[\d½¼¾/.,°()–-]+", w["text"]) + ] + boxes = [w["box"] for w in upright] + notes = [] + for region in cluster_boxes(boxes, gap_x=12, gap_y=8): + if sum(inside(center(b), region) for b in boxes) >= 4: + notes.append((region[0] - 14, region[1] - 14, region[2] + 14, region[3] + 14)) + return notes + + +# -------------------------------------------------------------------------- +# Elements on uneven bars, balance beam and floor exercise +# -------------------------------------------------------------------------- + + +def find_code_labels(page, words, pattern): + """The coloured code labels ('2.305') with the x range of their column.""" + labels = [] + for word in words: + if not pattern.match(word["text"]) or word["italic"] or word["size"] > 9.6: + continue + if word["text"].endswith("000"): + continue + mid = center(word["box"]) + bars = [ + box_of(r) + for r in page.rects + if r.get("fill") + and r.get("non_stroking_color") not in WHITE + and inside(mid, box_of(r)) + and r["bottom"] - r["top"] < 25 + and r["x1"] - r["x0"] > 60 + ] + if not bars: + continue # a code mentioned inside a description, not a label + bar = max(bars, key=lambda b: b[2] - b[0]) + labels.append({"code": word["text"], "box": word["box"], "x0": bar[0], "x1": bar[2], "bar": bar}) + return labels + + +def column_letters(words, labels, state): + """Map each label to the letters in its column header (e.g. 'F/G'). + + A few pages have no header row. They use the columns of the page before. + """ + if not labels: + return {} + first_label_top = min(l["box"][1] for l in labels) + headers = [ + (w["x0"], w["x1"], w["text"]) + for w in words + if w["top"] < first_label_top and re.fullmatch(r"[A-J](/[A-J])*", w["text"]) and w["bold"] + ] + if headers: + state["columns"] = headers + result = {} + for label in labels: + letters = [] + for x0, x1, text in state.get("columns", []): + if label["x0"] - 1 <= (x0 + x1) / 2 <= label["x1"] + 1: + letters += text.split("/") + result[label["code"]] = letters + return result + + +def split_description(description, count): + """Split one description over several drawings. + + Returns a list with one description per drawing, or None if it cannot be + split with confidence. + """ + patterns = [ + r"\s*[;,]\s*also\s+|\s+also\s+", + r"\s*[;,]\s*also\s+|\s+also\s+|\s*[;,]\s*or\s+", + ] + for pattern in patterns: + parts = [p.strip(" ;,") for p in re.split(pattern, description) if p.strip(" ;,")] + if len(parts) == count and len(parts[0].split()) >= 3: + base = parts[0] + return [base] + [f"{base}, {part}" for part in parts[1:]] + return None + + +def is_symbol(width, height, indexed): + """Judging symbols are small bitmaps with a two-colour palette. + + Drawings stored as bitmaps are larger (at least 57 pt wide) and in RGB. + """ + if indexed: + return width < 75 and height < 45 + return width < 52 and height < 34 + + +def merge_rows(boxes, dividers): + """Merge the parts of a drawing that are separated by a vertical line. + + Some drawings show the start of an element on the left and two ways of + finishing it on the right, with a thin vertical line between them. Two + drawings side by side without such a line are separate variants. + """ + boxes = list(boxes) + merged = True + while merged: + merged = False + for i in range(len(boxes)): + for j in range(i + 1, len(boxes)): + a, b = boxes[i], boxes[j] + overlap = min(a[3], b[3]) - max(a[1], b[1]) + left, right = min(a[2], b[2]), max(a[0], b[0]) + between = any( + left - 4 <= center(d)[0] <= right + 4 and d[1] < min(a[3], b[3]) and d[3] > max(a[1], b[1]) + for d in dividers + ) + if overlap > 0 and between: + boxes[i] = union([a, b]) + del boxes[j] + merged = True + break + if merged: + break + return boxes + + +def parse_blocks(text_words): + """Group the text of a cell into descriptions, each with an optional name.""" + blocks = [] + previous_bottom = None + for line in group_lines(text_words): + top = min(w["top"] for w in line) + bottom = max(w["bottom"] for w in line) + if previous_bottom is None or top - previous_bottom > 6: + blocks.append({"lines": [], "top": top}) + blocks[-1]["lines"].append(line) + blocks[-1]["bottom"] = bottom + previous_bottom = bottom + + parsed = [] + for block in blocks: + description_lines, name_words = [], [] + for line in block["lines"]: + text = " ".join(w["text"] for w in line) + if all(w["bold"] for w in line) or re.fullmatch(r"\([A-Z][^()]*\)", text): + name_words += line + else: + name_words += [w for w in line if w["bold"]] + description_lines.append([w for w in line if not w["bold"]]) + name = " ".join(w["text"] for w in name_words).strip() + name = re.sub(r"\)\s*,?\s*\(", " / ", name) # "(Plichta) (Alt)" -> "Plichta / Alt" + name = name.strip(" (),") or None + description = join_lines(description_lines) + if not description and name and parsed: + parsed[-1]["name"] = parsed[-1]["name"] or name # a name on its own + parsed[-1]["bottom"] = block["bottom"] + continue + parsed.append({"description": description, "name": name, "top": block["top"], "bottom": block["bottom"]}) + return parsed + + +def read_cell(words, vectors, bitmaps, notes, cell, apparatus): + """Read the text of one table cell and find its drawings and symbols.""" + in_note = lambda box: any(inside(center(box), note) for note in notes) + cell_words = [w for w in words if inside(center(w["box"]), cell) and not in_note(w["box"])] + text_words = [w for w in cell_words if w["italic"]] + label_words = [w for w in cell_words if not w["italic"]] # e.g. '180°' in a drawing + + d_value = None + if apparatus == "VT": + points = [w for w in label_words if D_VALUE.match(w["text"]) or w["text"] in ("P.", "P")] + numbers = [w for w in points if D_VALUE.match(w["text"])] + if len(numbers) == 1: + d_value = float(D_VALUE.match(numbers[0]["text"]).group(1)) + label_words = [w for w in label_words if w not in points] + + # The cell borders are drawn on the cell edges, so look just inside them. + inner = (cell[0] + 1.5, cell[1] + 1.5, cell[2] - 1.5, cell[3] - 1.5) + + def in_cell(box): + if not inside(center(box), inner): + return False + thin = min(box[2] - box[0], box[3] - box[1]) < 2 + return not any(inside(center(box), n) or (thin and intersects(box, n)) for n in notes) + + symbols, shapes = [], [] + for box, indexed in bitmaps: + if not in_cell(box): + continue + width, height = box[2] - box[0], box[3] - box[1] + (symbols if is_symbol(width, height, indexed) else shapes).append(box) + shapes += [box for box in vectors if in_cell(box)] + dividers = [b for b in shapes if b[2] - b[0] < 2 and b[3] - b[1] > 40] + shapes += [w["box"] for w in label_words] + + drawings, fragments = [], [] + for box in cluster_boxes(shapes, gap_x=12, gap_y=4): + width, height = box[2] - box[0], box[3] - box[1] + if width < 14 or height < 14: + continue # stray mark + # A frame around a note: only lines along its edges, with text inside. + members = [m for m in shapes if inside(center(m), box)] + framed = [w for w in text_words if inside(center(w["box"]), box)] + is_edge = lambda m: ( + min(m[2] - m[0], m[3] - m[1]) < 2.5 + or (m[2] - m[0] > 0.8 * width and m[3] - m[1] > 0.8 * height) + ) + if len(framed) >= 2 and all(is_edge(m) for m in members): + text_words = [w for w in text_words if w not in framed] + continue + (fragments if width < 32 and height < 32 else drawings).append(box) + + # A small loose part, such as an arrow with a degree label, belongs to + # the nearest drawing. + for box in fragments: + distance = lambda d: max(box[0] - d[2], d[0] - box[2], 0) + max(box[1] - d[3], d[1] - box[3], 0) + if drawings: + index = min(range(len(drawings)), key=lambda i: distance(drawings[i])) + if distance(drawings[index]) < 30: + drawings[index] = union([drawings[index], box]) + + # A degree label printed just below or above a drawing belongs to it. + for word in label_words: + box = word["box"] + if any(intersects(box, d) for d in drawings): + continue + for index, d in enumerate(drawings): + gap = max(box[1] - d[3], d[1] - box[3]) + if gap < 14 and box[0] < d[2] and d[0] < box[2]: + drawings[index] = union([d, box]) + break + + return { + "cell": cell, + "blocks": parse_blocks(text_words), + "drawings": merge_rows(drawings, dividers), + "symbols": symbols, + "text_boxes": [w["box"] for w in text_words], + "d_value": d_value, + } + + +def move_overflow(cells): + """Give parts of a drawing that stick out into the next cell back to it.""" + for content in cells: + cell = content["cell"] + for part in list(content["drawings"]): + at_edge = part[0] - cell[0] < 5 or cell[2] - part[2] < 5 + if content["blocks"] and not at_edge: + continue + for other in cells: + if other is content: + continue + for index, host in enumerate(other["drawings"]): + overlap = min(part[3], host[3]) - max(part[1], host[1]) + gap = max(part[0], host[0]) - min(part[2], host[2]) + smaller = part[2] - part[0] < 0.5 * (host[2] - host[0]) + if overlap > 0.5 * (part[3] - part[1]) and gap < 15 and smaller: + other["drawings"][index] = union([part, host]) + content["drawings"].remove(part) + break + else: + continue + break + + +def build_variants(content, context): + """Link each drawing in a cell to its description. One variant per drawing.""" + blocks = [{**b, "drawings": []} for b in content["blocks"]] + drawings = sorted(content["drawings"], key=lambda b: (b[1], b[0])) + if not blocks and not drawings: + return [] + if blocks and not drawings: + text = " / ".join(b["description"] for b in blocks) + context["notes"].append((context["code"], text)) + return [] # text without any drawing: a note, not an element + if not blocks: + context["flags"].append((context["code"], "drawing without a description")) + blocks.append({"description": "", "name": None, "top": 0, "bottom": 0, "drawings": []}) + for drawing in drawings: + middle = center(drawing)[1] + above = [b for b in blocks if b["top"] <= middle] + (above[-1] if above else blocks[0])["drawings"].append(drawing) + if context["code"] in ONE_DRAWING_PER_DESCRIPTION: + for block in blocks: + if block["drawings"]: + block["drawings"] = [union(block["drawings"])] + drawings = [d for block in blocks for d in block["drawings"]] + + if len(drawings) > len(content["symbols"]) and context["code"] not in VARIANTS_CONFIRMED: + context["flags"].append((context["code"], "more drawings than judging symbols, check the variants")) + if len(drawings) == 1 and len(content["symbols"]) > 1: + context["flags"].append((context["code"], "one drawing but several judging symbols, may hold several variants")) + + variants = [] + for block in blocks: + boxes = sorted(block["drawings"], key=lambda b: (round(b[1] / 15), b[0])) + if not boxes: + context["flags"].append((context["code"], f"no drawing found for: {block['description'][:60]}")) + variants.append({**block, "drawing": None}) + elif len(boxes) == 1: + variants.append({**block, "drawing": boxes[0]}) + else: + parts = split_description(block["description"], len(boxes)) + if parts: + context["flags"].append((context["code"], "description split over several drawings")) + else: + parts = [block["description"]] * len(boxes) + context["flags"].append( + (context["code"], "could not split the description, all variants have the full text") + ) + for part, box in zip(parts, boxes): + variants.append({**block, "description": part, "drawing": box}) + return variants + + +def extract_page(page, page_number, apparatus, state): + """Read all elements (or vaults) on one page of the tables.""" + is_vault = apparatus == "VT" + words = read_words(page) + labels = find_code_labels(page, words, VAULT_CODE if is_vault else ELEMENT_CODE) + first_label_top = min((l["bar"][1] for l in labels), default=60) + heading = page_heading(words, first_label_top) + if heading: + state["group"] = heading + elif not state["group"]: + state["flags"].append((f"{apparatus} page {page_number}", "no group heading found")) + return [] + number, group_name = state["group"] + group_id = f"{apparatus}-{number}" + state["groups"].setdefault(group_id, group_name) + + letters = {} if is_vault else column_letters(words, labels, state) + bottom = table_bottom(page, words) + vectors, bitmaps = graphic_objects(page) + notes = find_notes(words) + + cells = [] + for label in sorted(labels, key=lambda l: (l["box"][1], l["x0"])): + below = [ + other["bar"][1] + for other in labels + if other is not label + and other["bar"][1] > label["bar"][1] + 2 + and other["x0"] < label["x1"] - 5 + and label["x0"] < other["x1"] - 5 + ] + cell = (label["x0"], label["bar"][3], label["x1"], min(below) if below else bottom) + content = read_cell(words, vectors, bitmaps, notes, cell, apparatus) + content["code"] = label["code"] + cells.append(content) + move_overflow(cells) + + masks = [box for c in cells for box in c["symbols"] + c["text_boxes"]] + image = None + found = [] + for content in cells: + code, cell = content["code"], content["cell"] + context = {"code": f"{apparatus}-{code}", "flags": state["flags"], "notes": state["notes"]} + variants = build_variants(content, context) + if not variants: + continue + + if code[0] != str(number): + state["flags"].append((context["code"], f"code is not in group {number}")) + if is_vault: + value_field = {"dValue": content["d_value"]} + if content["d_value"] is None: + state["flags"].append((context["code"], "no D-value found")) + else: + digit = int(code[2]) + value_field = {"value": digit / 10} + letter = LETTERS[digit - 1] if digit else "?" + allowed = letters.get(code, []) + last_column = any("F" in header for header in allowed) + if not allowed: + state["flags"].append((context["code"], "no column header found above the code")) + elif not (letter in allowed or (last_column and letter >= "F")): + state["flags"].append( + (context["code"], f"value {digit / 10} ({letter}) does not match column {'/'.join(allowed)}") + ) + if cell[3] >= bottom - 1 and any(v["drawing"] is None for v in variants): + state["flags"].append((context["code"], "cell may continue on the next page")) + + for index, variant in enumerate(variants): + item_id = f"{apparatus}-{code}-{chr(ord('a') + index)}" + image_name = None + if variant["drawing"]: + if image is None: + image = page.to_image(resolution=RENDER_DPI).original.convert("L") + image_name = save_drawing(image, variant["drawing"], cell, masks, item_id) + found.append( + { + "id": item_id, + "elementGroupId": group_id, + "code": code, + **value_field, + "description": variant["description"], + "name": variant["name"], + "image": image_name, + "_page": page_number, + } + ) + return found + + +# -------------------------------------------------------------------------- +# Images +# -------------------------------------------------------------------------- + + +def save_drawing(page_image, drawing, cell, masks, element_id): + """Crop the drawing out of the rendered page and save it as WebP.""" + pad = 3 + limit = union([cell, drawing]) # a drawing can be wider than its cell + crop = ( + max(drawing[0] - pad, limit[0] + 1), + max(drawing[1] - pad, limit[1] + 1), + min(drawing[2] + pad, limit[2] - 1), + min(drawing[3] + pad, limit[3] - 1), + ) + to_px = lambda box: tuple(int(round(v * PX_PER_PT)) for v in box) + picture = page_image.crop(to_px(crop)).copy() + + # Paint over judging symbols and text that fall inside the crop. + draw = ImageDraw.Draw(picture) + for box in masks: + if intersects(box, crop): + shifted = (box[0] - crop[0], box[1] - crop[1], box[2] - crop[0], box[3] - crop[1]) + draw.rectangle(to_px(shifted), fill=255) + + # Trim empty margins, then leave a small white border. + ink = picture.point(lambda p: 255 if p < 200 else 0).getbbox() + if ink: + picture = picture.crop(ink) + border = 8 + framed = Image.new("L", (picture.width + 2 * border, picture.height + 2 * border), 255) + framed.paste(picture, (border, border)) + if framed.width > MAX_IMAGE_WIDTH: + height = round(framed.height * MAX_IMAGE_WIDTH / framed.width) + framed = framed.resize((MAX_IMAGE_WIDTH, height), Image.LANCZOS) + + name = f"{element_id}.webp" + framed.convert("RGB").save(image_path(name), "WEBP", quality=75, method=6) + return name + + +def image_path(name): + """Images are stored in one folder per apparatus: data/images/UB/UB-2.305-a.webp.""" + folder = IMAGE_DIR / name.split("-")[0] + folder.mkdir(parents=True, exist_ok=True) + return folder / name + + +# -------------------------------------------------------------------------- +# Output, checks and review page +# -------------------------------------------------------------------------- + + +def sort_key(item): + apparatus, code, letter = item["id"].split("-") + return (APPARATUS_ORDER.index(apparatus), float(code), code, letter) + + +def build_variant_groups(items): + by_code = defaultdict(list) + for item in items: + by_code[item["id"].rsplit("-", 1)[0]].append(item["id"]) + return [{"id": key, "variantIds": ids} for key, ids in by_code.items() if len(ids) > 1] + + +def write_json(name, data): + clean = [{k: v for k, v in row.items() if not k.startswith("_")} for row in data] + path = DATA_DIR / name + text = json.dumps(clean, indent=2, ensure_ascii=False) + + # Write short lists on one line, the way Prettier formats JSON. + def collapse(match): + indent = match.group(1) + items = [item.strip().rstrip(",") for item in match.group(2).strip().split("\n")] + line = f"{indent}{match.group(0).strip().split('[')[0]}[{', '.join(items)}]" + return line if len(line) + 1 <= 80 else match.group(0) + + text = re.sub(r"^( *)\"\w+\": \[\n((?: +\"[^\n]*\n)+) *\]", collapse, text, flags=re.M) + path.write_text(text + "\n", encoding="utf-8") + + +def run_checks(groups, elements, vaults, variant_groups, flags): + print("\n== Checks ==") + problems = [] + apparatus_ids = {a["id"] for a in APPARATUS} + group_ids = {g["id"] for g in groups} + items = {i["id"]: i for i in elements + vaults} + + for group in groups: + if group["apparatusId"] not in apparatus_ids: + problems.append(f"group {group['id']}: unknown apparatus") + for item in items.values(): + if item["elementGroupId"] not in group_ids: + problems.append(f"{item['id']}: unknown element group") + seen = set() + for vg in variant_groups: + if len(vg["variantIds"]) < 2: + problems.append(f"variant group {vg['id']}: fewer than two ids") + members = [items.get(i) for i in vg["variantIds"]] + if not all(members): + problems.append(f"variant group {vg['id']}: unknown id") + continue + if len({m["code"] for m in members}) > 1: + problems.append(f"variant group {vg['id']}: codes differ") + if len({m.get("value", m.get("dValue")) for m in members}) > 1: + problems.append(f"variant group {vg['id']}: values differ") + for variant_id in vg["variantIds"]: + if variant_id in seen: + problems.append(f"{variant_id}: in more than one variant group") + seen.add(variant_id) + if len(items) != len(elements) + len(vaults): + problems.append("duplicate ids") + for item in items.values(): + if not item["image"] or not image_path(item["image"]).exists(): + flags.append((item["id"], "missing image")) + if not item["description"]: + flags.append((item["id"], "missing description")) + elif not re.match(r"[A-Z0-9“\"(½¼¾]", item["description"]): + flags.append((item["id"], "description may be incomplete, it continues the one above")) + + print("References and variant groups:", "OK" if not problems else "") + for problem in problems: + print(" PROBLEM:", problem) + + print("\nElements and vaults per group:") + counts = Counter(i["elementGroupId"] for i in items.values()) + for apparatus in APPARATUS_ORDER: + total = sum(n for g, n in counts.items() if g.startswith(apparatus)) + if total: + detail = ", ".join(f"{g}: {n}" for g, n in sorted(counts.items()) if g.startswith(apparatus)) + print(f" {apparatus}: {total} ({detail})") + print(f" Variant groups: {len(variant_groups)}") + + sizes = [image_path(i["image"]).stat().st_size for i in items.values() if i["image"]] + if sizes: + over = sum(s > 20_000 for s in sizes) + print(f"\nImages: {len(sizes)}, average {sum(sizes) / len(sizes) / 1000:.1f} kB, " + f"largest {max(sizes) / 1000:.1f} kB, {over} over 20 kB") + + print(f"\nFlagged as uncertain: {len(flags)}") + for target, reason in sorted(set(flags)): + print(f" {target}: {reason}") + return problems + + +def write_review(groups, elements, vaults, flags): + flagged = defaultdict(list) + for target, reason in flags: + flagged[target].append(reason) + esc = html.escape + parts = [ + "", + "Code of Points extraction review

Code of Points extraction review

", + f"

{len(elements)} elements, {len(vaults)} vaults, {len(set(flags))} flags. " + "Red border = flagged. Blue background = has variants.

", + ] + items = sorted(elements + vaults, key=sort_key) + codes = Counter(i["id"].rsplit("-", 1)[0] for i in items) + for apparatus in APPARATUS: + own = [i for i in items if i["id"].startswith(apparatus["id"])] + if not own: + continue + parts.append(f"

{esc(apparatus['name'])} ({len(own)})

") + for group in [g for g in groups if g["apparatusId"] == apparatus["id"]]: + members = [i for i in own if i["elementGroupId"] == group["id"]] + parts.append(f"

{esc(group['id'])} – {esc(group['name'])} ({len(members)})

") + for item in members: + code_key = item["id"].rsplit("-", 1)[0] + reasons = flagged.get(item["id"], []) + flagged.get(code_key, []) + classes = "card" + (" variant" if codes[code_key] > 1 else "") + (" flag" if reasons else "") + value = f"value {item['value']}" if "value" in item else f"D-value {item['dValue']}" + picture = ( + f"" + if item["image"] + else "

NO IMAGE

" + ) + parts.append( + f"
{picture}
{esc(item['id'])}
" + f"
code {esc(item['code'])} · {value} · page {item['_page']}
" + f"
{esc(item['description'])}
" + + (f"
({esc(item['name'])})
" if item["name"] else "") + + "".join(f"
⚠ {esc(r)}
" for r in sorted(set(reasons))) + + "
" + ) + parts.append("
") + parts.append("") + REVIEW_PATH.write_text("\n".join(parts), encoding="utf-8") + + +def main(): + parser = argparse.ArgumentParser(description=__doc__.split("\n")[0]) + parser.add_argument("--pages", type=int, nargs="*", help="printed page numbers to extract (default: all)") + args = parser.parse_args() + + if IMAGE_DIR.exists(): + shutil.rmtree(IMAGE_DIR) + IMAGE_DIR.mkdir(parents=True) + + elements, vaults, flags = [], [], [] + notes = [] + states = {a: {"group": None, "groups": {}, "flags": flags, "notes": notes} for a in APPARATUS_ORDER} + with pdfplumber.open(PDF_PATH) as pdf: + sections = find_sections(pdf) + print(f"Table of Elements: printed pages {min(sections)}-{max(sections)}") + for page_number, apparatus in sorted(sections.items()): + page = pdf.pages[page_number - 1] + state = states[apparatus] + if args.pages and page_number not in args.pages: + continue + found = extract_page(page, page_number, apparatus, state) + (vaults if apparatus == "VT" else elements).extend(found) + print(f" page {page_number} ({apparatus}): {len(found)}") + + groups = [] + for apparatus in APPARATUS_ORDER: + for group_id, name in sorted(states[apparatus]["groups"].items()): + groups.append( + { + "id": group_id, + "apparatusId": apparatus, + "number": int(group_id.split("-")[1]), + "name": sentence_case(name), + } + ) + elements.sort(key=sort_key) + vaults.sort(key=sort_key) + unused = set(FIELD_CORRECTIONS) + for item in elements + vaults: + if item["id"] in FIELD_CORRECTIONS: + item.update(FIELD_CORRECTIONS[item["id"]]) + unused.discard(item["id"]) + for item_id in sorted(unused): + flags.append((item_id, "has a hand correction, but the id was not found")) + variant_groups = build_variant_groups(elements + vaults) + + write_json("apparatus.json", APPARATUS) + write_json("elementGroups.json", groups) + write_json("elements.json", elements) + write_json("vaults.json", vaults) + write_json("variantGroups.json", variant_groups) + + problems = run_checks(groups, elements, vaults, variant_groups, flags) + print(f"\nText without a drawing, treated as notes and skipped: {len(notes)}") + for code, text in notes: + print(f" {code}: {text[:90]}") + write_review(groups, elements, vaults, flags) + print(f"\nWrote {DATA_DIR.relative_to(ROOT)}/ and {REVIEW_PATH.relative_to(ROOT)}") + return 1 if problems else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/extract-cop/requirements.txt b/scripts/extract-cop/requirements.txt new file mode 100644 index 0000000..34cef38 --- /dev/null +++ b/scripts/extract-cop/requirements.txt @@ -0,0 +1,2 @@ +pdfplumber==0.11.* +Pillow>=10